{"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": "AIC004", "name": "Suspicious implementation file appears unreferenced", "shortDescription": {"text": "Suspicious implementation file appears unreferenced"}, "fullDescription": {"text": "Confirm whether this file is reachable. If not, delete it; if yes, wire it through explicit imports, routes, or entry points and add a test that proves the path executes."}, "properties": {"scanner": "repobility-ai-code-hygiene", "category": "quality", "severity": "medium", "confidence": 0.78, "cwe": "", "owasp": ""}}, {"id": "AIC001", "name": "Parallel implementation file sits beside a canonical file", "shortDescription": {"text": "Parallel implementation file sits beside a canonical file"}, "fullDescription": {"text": "Merge the intended change into the canonical file, update tests/imports, and delete the parallel implementation if it is not the active entry point."}, "properties": {"scanner": "repobility-ai-code-hygiene", "category": "quality", "severity": "medium", "confidence": 0.82, "cwe": "", "owasp": ""}}, {"id": "CFG006", "name": "[CFG006] Missing .gitignore: No .gitignore file. Risk of committing secrets and build artifacts.", "shortDescription": {"text": "[CFG006] Missing .gitignore: No .gitignore file. Risk of committing secrets and build artifacts."}, "fullDescription": {"text": "Add a .gitignore appropriate for your language/framework."}, "properties": {"scanner": "repobility-threat-engine", "category": "practices", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "COMP001", "name": "[COMP001] High cognitive complexity: Function `run` has cognitive complexity 18 (SonarSource scale). Cognitive complexit", "shortDescription": {"text": "[COMP001] High cognitive complexity: Function `run` has cognitive complexity 18 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursion all weigh"}, "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 18."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "medium", "confidence": 0.95, "cwe": "", "owasp": ""}}, {"id": "AIC003", "name": "Duplicated implementation block across source files", "shortDescription": {"text": "Duplicated implementation block across source files"}, "fullDescription": {"text": "Extract the shared behavior into one function/module or delete the inactive duplicate after proving which path is used."}, "properties": {"scanner": "repobility-ai-code-hygiene", "category": "quality", "severity": "low", "confidence": 0.86, "cwe": "", "owasp": ""}}, {"id": "AIC002", "name": "Source file name looks like an AI patch artifact", "shortDescription": {"text": "Source file name looks like an AI patch artifact"}, "fullDescription": {"text": "Rename it to the domain concept it implements or merge it into the existing module it was meant to change."}, "properties": {"scanner": "repobility-ai-code-hygiene", "category": "quality", "severity": "low", "confidence": 0.62, "cwe": "", "owasp": ""}}, {"id": "AIC007", "name": "Generated build artifact directory is present at repository root", "shortDescription": {"text": "Generated build artifact directory is present at repository root"}, "fullDescription": {"text": "Remove generated output from version control, add it to .gitignore and .dockerignore where relevant, and regenerate it in CI or release jobs."}, "properties": {"scanner": "repobility-ai-code-hygiene", "category": "quality", "severity": "low", "confidence": 0.7, "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": "MINED049", "name": "[MINED049] Print Pii: Logging password/token/email/ssn directly to stdout.", "shortDescription": {"text": "[MINED049] Print Pii: Logging password/token/email/ssn directly to stdout."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-532 / A09:2021 for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED106", "name": "[MINED106] Phantom test coverage: test_dialog: Test function `test_dialog` runs code but contains no assert / expect / s", "shortDescription": {"text": "[MINED106] Phantom test coverage: test_dialog: Test function `test_dialog` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "fullDescription": {"text": "Add an explicit assertion that captures the test's intent, or remove the test."}, "properties": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED108", "name": "[MINED108] `self.select` used but never assigned in __init__: Method `clear` of class `Selection` reads `self.select`, b", "shortDescription": {"text": "[MINED108] `self.select` used but never assigned in __init__: Method `clear` of class `Selection` reads `self.select`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the m"}, "fullDescription": {"text": "Initialize `self.select = <default>` in __init__, or add a class-level default."}, "properties": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC128", "name": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake): Async call invoked without `await` returns", "shortDescription": {"text": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake): Async call invoked without `await` returns an unhandled Promise. The outer function resolves before the inner work completes \u2014 DB writes lost, emails not sent, ra"}, "fullDescription": {"text": "Add `await` before each async call, or chain with `.then`. If you intentionally want fire-and-forget, prefix with `void` (TS) or assign to `_` (Python with `asyncio.create_task`) to make the intent explicit and survive lint."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED107", "name": "[MINED107] Missing import: `html` used but not imported: The file uses `html.something(...)` but never imports `html`. T", "shortDescription": {"text": "[MINED107] Missing import: `html` used but not imported: The file uses `html.something(...)` but never imports `html`. This raises NameError at runtime the first time the line executes."}, "fullDescription": {"text": "Add `import html` at the top of the file."}, "properties": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "critical", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED022", "name": "[MINED022] C Strcpy: strcpy/strcat dont bounds-check; use strncpy or snprintf.", "shortDescription": {"text": "[MINED022] C Strcpy: strcpy/strcat dont bounds-check; use strncpy or snprintf."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-120 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "critical", "confidence": 1.0, "cwe": "", "owasp": ""}}]}}, "automationDetails": {"id": "repobility/1277"}, "properties": {"repository": "GNOME/gimp", "repoUrl": "https://github.com/GNOME/gimp", "branch": "master"}, "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": 129470, "scanner": "repobility-ast-engine", "fingerprint": "7241fd2ab729acc4d42da0454800060ce68c607a6a99a865c0c632c946b00a75", "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|7241fd2ab729acc4d42da0454800060ce68c607a6a99a865c0c632c946b00a75"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "plug-ins/python/python-console/pyconsole.py"}, "region": {"startLine": 828}}}]}, {"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": 129469, "scanner": "repobility-ast-engine", "fingerprint": "8bee02de2b8348518fd11aff44f85824db41eb1d3af4c79a28402324493d6f1f", "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|8bee02de2b8348518fd11aff44f85824db41eb1d3af4c79a28402324493d6f1f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "plug-ins/python/python-console/pyconsole.py"}, "region": {"startLine": 803}}}]}, {"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": 129467, "scanner": "repobility-ast-engine", "fingerprint": "0295cdd6de332310d7d14359ceca62a16d692eb20eb3db0e60c4a6bcbda20613", "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|0295cdd6de332310d7d14359ceca62a16d692eb20eb3db0e60c4a6bcbda20613"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "plug-ins/python/python-eval.py"}, "region": {"startLine": 43}}}]}, {"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": 129464, "scanner": "repobility-ast-engine", "fingerprint": "61c693f009dea3302bf3a17a591fbe1f0bdc8bcaec89c5026d406bb5a885429c", "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|61c693f009dea3302bf3a17a591fbe1f0bdc8bcaec89c5026d406bb5a885429c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/performance-log-viewer.py"}, "region": {"startLine": 725}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 129448, "scanner": "repobility-ast-engine", "fingerprint": "139dfd5bc6fa870447cca73262c99613128e1669e59d80b21def7952635ce2c9", "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|139dfd5bc6fa870447cca73262c99613128e1669e59d80b21def7952635ce2c9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/lib_bundle.py"}, "region": {"startLine": 150}}}]}, {"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": 129447, "scanner": "repobility-ast-engine", "fingerprint": "e8d3bbef0a2fe4e3e754afae9d9301f8e303c321e5213ddf4063eb2f5f1e48e4", "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|e8d3bbef0a2fe4e3e754afae9d9301f8e303c321e5213ddf4063eb2f5f1e48e4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/in-build-gimp.py"}, "region": {"startLine": 191}}}]}, {"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": 129446, "scanner": "repobility-ast-engine", "fingerprint": "35fc78099321065f2e789759d14ee18519593a72a3fbe7eb2dba75a2f6b83dc5", "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|35fc78099321065f2e789759d14ee18519593a72a3fbe7eb2dba75a2f6b83dc5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/in-build-gimp.py"}, "region": {"startLine": 209}}}]}, {"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": 129445, "scanner": "repobility-ast-engine", "fingerprint": "47d0bceaef924180194893d6f129a5e5f1a56a5e35fcab9ed2930508622d5eec", "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|47d0bceaef924180194893d6f129a5e5f1a56a5e35fcab9ed2930508622d5eec"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/man2md.py"}, "region": {"startLine": 47}}}]}, {"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": 129444, "scanner": "repobility-ast-engine", "fingerprint": "bcac9a5de45add5db4c9d3f7b8f3832ee012c7c8cb9904169c78fe5474eb14ea", "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|bcac9a5de45add5db4c9d3f7b8f3832ee012c7c8cb9904169c78fe5474eb14ea"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/performance-log-expand.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": 129443, "scanner": "repobility-ast-engine", "fingerprint": "2e5a0e99e540ce6aea3018a0d2ab4b4166f53e7abce446aa7661ced876268f98", "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|2e5a0e99e540ce6aea3018a0d2ab4b4166f53e7abce446aa7661ced876268f98"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/meson_install_subdir.py"}, "region": {"startLine": 80}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 129432, "scanner": "repobility-ast-engine", "fingerprint": "388144ceba20063a4ee0324dfb6d5195ede1a07e7207d96e057d9dd530181782", "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|388144ceba20063a4ee0324dfb6d5195ede1a07e7207d96e057d9dd530181782"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "plug-ins/generate_mime_ext.py"}, "region": {"startLine": 121}}}]}, {"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": 129431, "scanner": "repobility-ast-engine", "fingerprint": "0426a97f65383ef80c025fad54d2b521a89c4238e971ed6804e241856d3105e9", "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|0426a97f65383ef80c025fad54d2b521a89c4238e971ed6804e241856d3105e9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "plug-ins/generate_mime_ext.py"}, "region": {"startLine": 76}}}]}, {"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": 129430, "scanner": "repobility-ast-engine", "fingerprint": "b376329064e9669892b72c12290ce935a2c35de136ba8a3601f502ec3d70f556", "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|b376329064e9669892b72c12290ce935a2c35de136ba8a3601f502ec3d70f556"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "plug-ins/generate_mime_ext.py"}, "region": {"startLine": 14}}}]}, {"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": 129429, "scanner": "repobility-ast-engine", "fingerprint": "331eeaf473e37df7253e33daaabce0ae8091b03f01ffdce1644812387330466a", "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|331eeaf473e37df7253e33daaabce0ae8091b03f01ffdce1644812387330466a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "meson_dist_script.py"}, "region": {"startLine": 38}}}]}, {"ruleId": "AIC004", "level": "warning", "message": {"text": "Suspicious implementation file appears unreferenced"}, "properties": {"repobilityId": 129409, "scanner": "repobility-ai-code-hygiene", "fingerprint": "3abf778209be54fed83dc3b257ac087a92a4d7f7534860801c4bb3f0ccaefdb6", "category": "quality", "severity": "medium", "confidence": 0.78, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Patch-style source file has no detected inbound reference from other repository files.", "evidence": {"suffix": "copy", "rule_id": "AIC004", "scanner": "repobility-ai-code-hygiene", "references": ["https://knip.dev/", "https://github.com/jendrikseipp/vulture"], "correlation_key": "fp|3abf778209be54fed83dc3b257ac087a92a4d7f7534860801c4bb3f0ccaefdb6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "plug-ins/imagemap/imap_cmd_copy.c"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC004", "level": "warning", "message": {"text": "Suspicious implementation file appears unreferenced"}, "properties": {"repobilityId": 129408, "scanner": "repobility-ai-code-hygiene", "fingerprint": "9c08e5ddc1486d91801d9a9dfaf2f98096ba8d0c0d5b9ce61c9bf0412c67dd70", "category": "quality", "severity": "medium", "confidence": 0.78, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Patch-style source file has no detected inbound reference from other repository files.", "evidence": {"suffix": "new", "rule_id": "AIC004", "scanner": "repobility-ai-code-hygiene", "references": ["https://knip.dev/", "https://github.com/jendrikseipp/vulture"], "correlation_key": "fp|9c08e5ddc1486d91801d9a9dfaf2f98096ba8d0c0d5b9ce61c9bf0412c67dd70"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/core/gimplayer-new.h"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC004", "level": "warning", "message": {"text": "Suspicious implementation file appears unreferenced"}, "properties": {"repobilityId": 129407, "scanner": "repobility-ai-code-hygiene", "fingerprint": "f551f1f294e176be8f70b362d73886cbc4ec0f28d661fbf1aadc60ff3af46a82", "category": "quality", "severity": "medium", "confidence": 0.78, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Patch-style source file has no detected inbound reference from other repository files.", "evidence": {"suffix": "new", "rule_id": "AIC004", "scanner": "repobility-ai-code-hygiene", "references": ["https://knip.dev/", "https://github.com/jendrikseipp/vulture"], "correlation_key": "fp|f551f1f294e176be8f70b362d73886cbc4ec0f28d661fbf1aadc60ff3af46a82"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/core/gimplayer-new.c"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC001", "level": "warning", "message": {"text": "Parallel implementation file sits beside a canonical file"}, "properties": {"repobilityId": 129405, "scanner": "repobility-ai-code-hygiene", "fingerprint": "a80be3e4ff803005c0c73a4be4a50960ee2eb1be1905bacdb19304f5af16d851", "category": "quality", "severity": "medium", "confidence": 0.82, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Source filename has a patch-style suffix and a same-directory canonical sibling exists.", "evidence": {"suffix": "new", "rule_id": "AIC001", "scanner": "repobility-ai-code-hygiene", "references": ["https://arxiv.org/abs/2601.15195", "https://knip.dev/"], "canonical_file": "app/path/gimpstroke.h", "correlation_key": "fp|a80be3e4ff803005c0c73a4be4a50960ee2eb1be1905bacdb19304f5af16d851"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/path/gimpstroke-new.h"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC001", "level": "warning", "message": {"text": "Parallel implementation file sits beside a canonical file"}, "properties": {"repobilityId": 129404, "scanner": "repobility-ai-code-hygiene", "fingerprint": "b0ad051890d2705b4fecbfea26202e67f0abf4cfebcbc654a222bd4d925ae245", "category": "quality", "severity": "medium", "confidence": 0.82, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Source filename has a patch-style suffix and a same-directory canonical sibling exists.", "evidence": {"suffix": "new", "rule_id": "AIC001", "scanner": "repobility-ai-code-hygiene", "references": ["https://arxiv.org/abs/2601.15195", "https://knip.dev/"], "canonical_file": "app/path/gimpstroke.c", "correlation_key": "fp|b0ad051890d2705b4fecbfea26202e67f0abf4cfebcbc654a222bd4d925ae245"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/path/gimpstroke-new.c"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC001", "level": "warning", "message": {"text": "Parallel implementation file sits beside a canonical file"}, "properties": {"repobilityId": 129403, "scanner": "repobility-ai-code-hygiene", "fingerprint": "35d8f1c0f445fcb550b80d947e6948b574080e523c3c6c9c5aa4649878ce55c4", "category": "quality", "severity": "medium", "confidence": 0.82, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Source filename has a patch-style suffix and a same-directory canonical sibling exists.", "evidence": {"suffix": "new", "rule_id": "AIC001", "scanner": "repobility-ai-code-hygiene", "references": ["https://arxiv.org/abs/2601.15195", "https://knip.dev/"], "canonical_file": "app/core/gimplayer.h", "correlation_key": "fp|35d8f1c0f445fcb550b80d947e6948b574080e523c3c6c9c5aa4649878ce55c4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/core/gimplayer-new.h"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC001", "level": "warning", "message": {"text": "Parallel implementation file sits beside a canonical file"}, "properties": {"repobilityId": 129402, "scanner": "repobility-ai-code-hygiene", "fingerprint": "0a5f9a524deccbca18e327284b34d0e18667d37d47028cc657dbd5297846c51f", "category": "quality", "severity": "medium", "confidence": 0.82, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Source filename has a patch-style suffix and a same-directory canonical sibling exists.", "evidence": {"suffix": "new", "rule_id": "AIC001", "scanner": "repobility-ai-code-hygiene", "references": ["https://arxiv.org/abs/2601.15195", "https://knip.dev/"], "canonical_file": "app/core/gimplayer.c", "correlation_key": "fp|0a5f9a524deccbca18e327284b34d0e18667d37d47028cc657dbd5297846c51f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/core/gimplayer-new.c"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC001", "level": "warning", "message": {"text": "Parallel implementation file sits beside a canonical file"}, "properties": {"repobilityId": 129401, "scanner": "repobility-ai-code-hygiene", "fingerprint": "4135da02141ce73efbac2d960b8ae730ceed24e4380a72c78bdb081e53960be6", "category": "quality", "severity": "medium", "confidence": 0.82, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Source filename has a patch-style suffix and a same-directory canonical sibling exists.", "evidence": {"suffix": "new", "rule_id": "AIC001", "scanner": "repobility-ai-code-hygiene", "references": ["https://arxiv.org/abs/2601.15195", "https://knip.dev/"], "canonical_file": "app/core/gimpimage.h", "correlation_key": "fp|4135da02141ce73efbac2d960b8ae730ceed24e4380a72c78bdb081e53960be6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/core/gimpimage-new.h"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC001", "level": "warning", "message": {"text": "Parallel implementation file sits beside a canonical file"}, "properties": {"repobilityId": 129400, "scanner": "repobility-ai-code-hygiene", "fingerprint": "c8d5f5a44a85de2e031abae54321d5995a21d66c1270b0c57445c9fa0e8674d5", "category": "quality", "severity": "medium", "confidence": 0.82, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Source filename has a patch-style suffix and a same-directory canonical sibling exists.", "evidence": {"suffix": "new", "rule_id": "AIC001", "scanner": "repobility-ai-code-hygiene", "references": ["https://arxiv.org/abs/2601.15195", "https://knip.dev/"], "canonical_file": "app/core/gimpimage.c", "correlation_key": "fp|c8d5f5a44a85de2e031abae54321d5995a21d66c1270b0c57445c9fa0e8674d5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/core/gimpimage-new.c"}, "region": {"startLine": 1}}}]}, {"ruleId": "CFG006", "level": "warning", "message": {"text": "[CFG006] Missing .gitignore: No .gitignore file. Risk of committing secrets and build artifacts."}, "properties": {"repobilityId": 129396, "scanner": "repobility-threat-engine", "fingerprint": "c65fc71ce58c37a0e07837c0fe294108b731c43ef16027a2f0971c757bbe9a16", "category": "practices", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "No .gitignore file found in repository root", "evidence": {"reason": "No .gitignore file found in repository root", "rule_id": "CFG006", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "repo|practices|cfg006"}}}, {"ruleId": "COMP001", "level": "warning", "message": {"text": "[COMP001] High cognitive complexity: Function `run` has cognitive complexity 18 (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: break=1, continue=1, elif=1, else=2, if=5, nested_bonus=6, recursion=1, while=1."}, "properties": {"repobilityId": 129395, "scanner": "repobility-threat-engine", "fingerprint": "e46d00f65099afb2c6999021bcb8d3c270bddefb8b34d0b53a7140a3791b01a0", "category": "quality", "severity": "medium", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 18 (severity threshold for medium: 15+).", "evidence": {"scanner": "repobility-threat-engine", "function": "run", "breakdown": {"if": 5, "elif": 1, "else": 2, "break": 1, "while": 1, "continue": 1, "recursion": 1, "nested_bonus": 6}, "complexity": 18, "correlation_key": "fp|e46d00f65099afb2c6999021bcb8d3c270bddefb8b34d0b53a7140a3791b01a0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extensions/goat-exercises/goat-exercise-py3.py"}, "region": {"startLine": 57}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 129428, "scanner": "repobility-ai-code-hygiene", "fingerprint": "eea8a70bde9b3263b844ca908f02d179907991cfefe29e79d5ebe6e7a1ab4e1d", "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": "app/core/gimpimage-preview.c", "duplicate_line": 24, "correlation_key": "fp|eea8a70bde9b3263b844ca908f02d179907991cfefe29e79d5ebe6e7a1ab4e1d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/core/gimpitem-preview.c"}, "region": {"startLine": 17}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 129427, "scanner": "repobility-ai-code-hygiene", "fingerprint": "4e16ed172ba03f087d4d3ac15e41ec161a78a89ca6cc564cfcb3823cd27e79ff", "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": "app/core/gimpimage-preview.c", "duplicate_line": 123, "correlation_key": "fp|4e16ed172ba03f087d4d3ac15e41ec161a78a89ca6cc564cfcb3823cd27e79ff"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/core/gimpimageproxy.c"}, "region": {"startLine": 349}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 129426, "scanner": "repobility-ai-code-hygiene", "fingerprint": "46bf6d7bc50920e50ecde7c0e838f1029e483a2eea6665919524bf6fd903c030", "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": "app/core/gimpbuffer.c", "duplicate_line": 138, "correlation_key": "fp|46bf6d7bc50920e50ecde7c0e838f1029e483a2eea6665919524bf6fd903c030"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/core/gimpimageproxy.c"}, "region": {"startLine": 259}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 129425, "scanner": "repobility-ai-code-hygiene", "fingerprint": "35be8ef3426a3be05d058fbec101401e8cfa7b9cd84b17bc7a8f671b50600f1f", "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": "app/core/gimpimage-crop.c", "duplicate_line": 119, "correlation_key": "fp|35be8ef3426a3be05d058fbec101401e8cfa7b9cd84b17bc7a8f671b50600f1f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/core/gimpimage-resize.c"}, "region": {"startLine": 121}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 129424, "scanner": "repobility-ai-code-hygiene", "fingerprint": "c5541a4c974d3f2ab6e9616ed42c2f1fb782bd81a7ef3eb6953a6f106daedfa9", "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": "app/core/gimpbuffer.c", "duplicate_line": 138, "correlation_key": "fp|c5541a4c974d3f2ab6e9616ed42c2f1fb782bd81a7ef3eb6953a6f106daedfa9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/core/gimpimage-preview.c"}, "region": {"startLine": 53}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 129423, "scanner": "repobility-ai-code-hygiene", "fingerprint": "56052d2169e5a29b22e64d33898b220dc917dae59a965b187396f9a34f384f80", "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": "app/core/gimpasyncset.c", "duplicate_line": 83, "correlation_key": "fp|56052d2169e5a29b22e64d33898b220dc917dae59a965b187396f9a34f384f80"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/core/gimpdrawablepropundo.c"}, "region": {"startLine": 52}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 129422, "scanner": "repobility-ai-code-hygiene", "fingerprint": "a3725f8abd08056799e5c186499fc349f1a9bd985edd8066c732ecadd36c7202", "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": "app/core/gimpdrawable-combine.h", "duplicate_line": 2, "correlation_key": "fp|a3725f8abd08056799e5c186499fc349f1a9bd985edd8066c732ecadd36c7202"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/core/gimpdrawable.h"}, "region": {"startLine": 38}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 129421, "scanner": "repobility-ai-code-hygiene", "fingerprint": "bee88d123ffb972e8a512c8a871f111e34110412b612110626c40ce2696d8aab", "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": "app/core/gimpdrawable-gradient.c", "duplicate_line": 3, "correlation_key": "fp|bee88d123ffb972e8a512c8a871f111e34110412b612110626c40ce2696d8aab"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/core/gimpdrawable-gradient.h"}, "region": {"startLine": 2}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 129420, "scanner": "repobility-ai-code-hygiene", "fingerprint": "4ab6545a747bb5c0cdd80894dd1dcee77496fbfc9188413f6af5645043a68969", "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": "app/core/gimpdrawable-bucket-fill.c", "duplicate_line": 47, "correlation_key": "fp|4ab6545a747bb5c0cdd80894dd1dcee77496fbfc9188413f6af5645043a68969"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/core/gimpdrawable-bucket-fill.h"}, "region": {"startLine": 11}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 129419, "scanner": "repobility-ai-code-hygiene", "fingerprint": "01ba1644876faa4e6b76614668b9a884364dfd52f2b1611ae20831b07f164342", "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": "app/core/gimpchannel-select.c", "duplicate_line": 356, "correlation_key": "fp|01ba1644876faa4e6b76614668b9a884364dfd52f2b1611ae20831b07f164342"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/core/gimpchannel-select.h"}, "region": {"startLine": 96}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 129418, "scanner": "repobility-ai-code-hygiene", "fingerprint": "10e509132993ef557dc85b462f35fb622035370a18e28a0d9a8e1e7b6a29037f", "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": "app/core/gimpbacktrace-linux.c", "duplicate_line": 203, "correlation_key": "fp|10e509132993ef557dc85b462f35fb622035370a18e28a0d9a8e1e7b6a29037f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/core/gimpbacktrace-windows.c"}, "region": {"startLine": 203}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 129417, "scanner": "repobility-ai-code-hygiene", "fingerprint": "d507ffedbf977fc8bada9b15e0311cde894e48686749eefe6bf48ca7fb392982", "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": "app/core/gimp-modules.c", "duplicate_line": 56, "correlation_key": "fp|d507ffedbf977fc8bada9b15e0311cde894e48686749eefe6bf48ca7fb392982"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/core/gimp-units.c"}, "region": {"startLine": 90}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 129416, "scanner": "repobility-ai-code-hygiene", "fingerprint": "a1bf84f13cf74beef675f5f54e8ca5332d80a8c6d6cb4b9a477e05e1544f57e0", "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": "app/core/gimp-transform-3d-utils.c", "duplicate_line": 227, "correlation_key": "fp|a1bf84f13cf74beef675f5f54e8ca5332d80a8c6d6cb4b9a477e05e1544f57e0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/core/gimp-transform-3d-utils.h"}, "region": {"startLine": 48}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 129415, "scanner": "repobility-ai-code-hygiene", "fingerprint": "b8f2fa459b428a4f0fc1cf6bfa891ac6d95c11fb567cf138dc57c39ca53e7cca", "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": "app/core/gimp-contexts.c", "duplicate_line": 78, "correlation_key": "fp|b8f2fa459b428a4f0fc1cf6bfa891ac6d95c11fb567cf138dc57c39ca53e7cca"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/core/gimp-internal-data.c"}, "region": {"startLine": 210}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 129414, "scanner": "repobility-ai-code-hygiene", "fingerprint": "bbbadd8bc1a1cd4722b4117f04f8da7f983669a258d91415aa78f7fe6a819d5f", "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": "app/config/gimpearlyrc.c", "duplicate_line": 111, "correlation_key": "fp|bbbadd8bc1a1cd4722b4117f04f8da7f983669a258d91415aa78f7fe6a819d5f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/config/gimprc.c"}, "region": {"startLine": 83}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 129413, "scanner": "repobility-ai-code-hygiene", "fingerprint": "2f6a6dec0d56b22c662556543aef52ad7667b3e452cefd07e59d107b8ea58a58", "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": "app/app.c", "duplicate_line": 51, "correlation_key": "fp|2f6a6dec0d56b22c662556543aef52ad7667b3e452cefd07e59d107b8ea58a58"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/app.h"}, "region": {"startLine": 7}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 129412, "scanner": "repobility-ai-code-hygiene", "fingerprint": "cc4daa3a92edc098979001eb4bf12bc0d4a8c4bb6c7d1f1314d240f8a6f33ff2", "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": "app/actions/tool-preset-editor-commands.c", "duplicate_line": 11, "correlation_key": "fp|cc4daa3a92edc098979001eb4bf12bc0d4a8c4bb6c7d1f1314d240f8a6f33ff2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/actions/tool-presets-commands.c"}, "region": {"startLine": 12}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 129411, "scanner": "repobility-ai-code-hygiene", "fingerprint": "011d961ea8d10bf3dc5744996bc0c91644b7161474e19bf01b11d162cff76350", "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": "app/actions/channels-commands.c", "duplicate_line": 2, "correlation_key": "fp|011d961ea8d10bf3dc5744996bc0c91644b7161474e19bf01b11d162cff76350"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/actions/quick-mask-commands.c"}, "region": {"startLine": 2}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 129410, "scanner": "repobility-ai-code-hygiene", "fingerprint": "2b363567c9b550aba7a856b49b7badc0fa2fff6b2aec2e41e6a341db00b73577", "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": "app/actions/channels-commands.c", "duplicate_line": 72, "correlation_key": "fp|2b363567c9b550aba7a856b49b7badc0fa2fff6b2aec2e41e6a341db00b73577"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/actions/paths-commands.c"}, "region": {"startLine": 102}}}]}, {"ruleId": "AIC002", "level": "note", "message": {"text": "Source file name looks like an AI patch artifact"}, "properties": {"repobilityId": 129406, "scanner": "repobility-ai-code-hygiene", "fingerprint": "bfd8215e90c3d4fa0e90d31ec4a02c2c32b748e5fba349a759e863e75c7bf779", "category": "quality", "severity": "low", "confidence": 0.62, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Source filename contains a temporary or patch-style suffix.", "evidence": {"suffix": "copy", "rule_id": "AIC002", "scanner": "repobility-ai-code-hygiene", "references": ["https://arxiv.org/abs/2601.15195"], "correlation_key": "fp|bfd8215e90c3d4fa0e90d31ec4a02c2c32b748e5fba349a759e863e75c7bf779"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "plug-ins/imagemap/imap_cmd_copy.c"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC002", "level": "note", "message": {"text": "Source file name looks like an AI patch artifact"}, "properties": {"repobilityId": 129399, "scanner": "repobility-ai-code-hygiene", "fingerprint": "27b64ee12761bb33b5bf462fe8312ebae9bcedabd0723e6d69528d94adf2f6e1", "category": "quality", "severity": "low", "confidence": 0.62, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Source filename contains a temporary or patch-style suffix.", "evidence": {"suffix": "update", "rule_id": "AIC002", "scanner": "repobility-ai-code-hygiene", "references": ["https://arxiv.org/abs/2601.15195"], "correlation_key": "fp|27b64ee12761bb33b5bf462fe8312ebae9bcedabd0723e6d69528d94adf2f6e1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/gimp-update.h"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC002", "level": "note", "message": {"text": "Source file name looks like an AI patch artifact"}, "properties": {"repobilityId": 129398, "scanner": "repobility-ai-code-hygiene", "fingerprint": "92cad18c5df895e702dcb66b465d03e7a72fb53ff7b8a3af1f225553f363bc99", "category": "quality", "severity": "low", "confidence": 0.62, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Source filename contains a temporary or patch-style suffix.", "evidence": {"suffix": "update", "rule_id": "AIC002", "scanner": "repobility-ai-code-hygiene", "references": ["https://arxiv.org/abs/2601.15195"], "correlation_key": "fp|92cad18c5df895e702dcb66b465d03e7a72fb53ff7b8a3af1f225553f363bc99"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/gimp-update.c"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC007", "level": "note", "message": {"text": "Generated build artifact directory is present at repository root"}, "properties": {"repobilityId": 129397, "scanner": "repobility-ai-code-hygiene", "fingerprint": "9ce25f11f897b8a8b2478fd0136724866f111b604484c20a5c690bce80d94da1", "category": "quality", "severity": "low", "confidence": 0.7, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Repository root contains a common generated artifact directory.", "evidence": {"rule_id": "AIC007", "scanner": "repobility-ai-code-hygiene", "directory": "build", "references": ["https://git-scm.com/docs/gitignore", "https://arxiv.org/abs/2601.15195"], "correlation_key": "fp|9ce25f11f897b8a8b2478fd0136724866f111b604484c20a5c690bce80d94da1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "build"}, "region": {"startLine": 1}}}]}, {"ruleId": "MINED043", "level": "none", "message": {"text": "[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data."}, "properties": {"repobilityId": 129391, "scanner": "repobility-threat-engine", "fingerprint": "5fbb2ff36470ecdbf0cf83cea768ae379140f60af2901e468d7c1344564b3b8b", "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|5fbb2ff36470ecdbf0cf83cea768ae379140f60af2901e468d7c1344564b3b8b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/path/gimppath-export.c"}, "region": {"startLine": 149}}}]}, {"ruleId": "MINED049", "level": "none", "message": {"text": "[MINED049] Print Pii: Logging password/token/email/ssn directly to stdout."}, "properties": {"repobilityId": 129390, "scanner": "repobility-threat-engine", "fingerprint": "53a56c37b3cae1415847d6411e28d70106b2539178da944ed4a89e51053fbc10", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "print-pii", "owasp": "A09:2021", "cwe_ids": ["CWE-532"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348015+00:00", "triaged_in_corpus": 12, "observations_count": 676566, "ai_coder_pattern_id": 26}, "scanner": "repobility-threat-engine", "correlation_key": "fp|53a56c37b3cae1415847d6411e28d70106b2539178da944ed4a89e51053fbc10"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/config/test-config.c"}, "region": {"startLine": 82}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "[MINED106] Phantom test coverage: test_dialog: Test function `test_dialog` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"repobilityId": 129468, "scanner": "repobility-ast-engine", "fingerprint": "b9dcf6f983072da1aa471da683a73e2d34815da6e9a8da56f647f80dad026c4e", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "phantom-test-coverage", "owasp": null, "cwe_ids": ["CWE-1126"], "languages": ["python"], "observations_count": 982154}, "scanner": "repobility-ast-engine", "correlation_key": "fp|b9dcf6f983072da1aa471da683a73e2d34815da6e9a8da56f647f80dad026c4e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "plug-ins/python/test-dialog.py"}, "region": {"startLine": 95}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.select` used but never assigned in __init__: Method `clear` of class `Selection` reads `self.select`, 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": 129463, "scanner": "repobility-ast-engine", "fingerprint": "f15c7a80f267b78da1a206480a1bbc0e39faf8e4aafa36550c30da7889924705", "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|f15c7a80f267b78da1a206480a1bbc0e39faf8e4aafa36550c30da7889924705"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/performance-log-viewer.py"}, "region": {"startLine": 608}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.select` used but never assigned in __init__: Method `select_range` of class `Selection` reads `self.select`, 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": 129462, "scanner": "repobility-ast-engine", "fingerprint": "b00675cf95db0f5cc081b126908a787666ab04ec31683a75fafe0830b5caaa72", "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|b00675cf95db0f5cc081b126908a787666ab04ec31683a75fafe0830b5caaa72"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/performance-log-viewer.py"}, "region": {"startLine": 605}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.select` used but never assigned in __init__: Method `select_range` of class `Selection` reads `self.select`, 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": 129461, "scanner": "repobility-ast-engine", "fingerprint": "eef90bdbb54f99bcb2d862c2912cc5154a47415de0c2d5878f504206806880fb", "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|eef90bdbb54f99bcb2d862c2912cc5154a47415de0c2d5878f504206806880fb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/performance-log-viewer.py"}, "region": {"startLine": 603}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.emit` used but never assigned in __init__: Method `select` of class `Selection` reads `self.emit`, 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": 129460, "scanner": "repobility-ast-engine", "fingerprint": "1590f3ff87aea25d8fe3937aa148028e4256bee2af887c0429d41b22d99b67d1", "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|1590f3ff87aea25d8fe3937aa148028e4256bee2af887c0429d41b22d99b67d1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/performance-log-viewer.py"}, "region": {"startLine": 591}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.move` used but never assigned in __init__: Method `redo` of class `History` reads `self.move`, 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": 129459, "scanner": "repobility-ast-engine", "fingerprint": "5da7770784d0697d2b3ee5c30e101087ed0b1b8b6512c710dc7a51dc30baeb20", "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|5da7770784d0697d2b3ee5c30e101087ed0b1b8b6512c710dc7a51dc30baeb20"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/performance-log-viewer.py"}, "region": {"startLine": 501}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.move` used but never assigned in __init__: Method `undo` of class `History` reads `self.move`, 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": 129458, "scanner": "repobility-ast-engine", "fingerprint": "b2b655c20b2a96fbbe8d38a8665beed817e0380b37f3dc743032d9b4b2cc829e", "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|b2b655c20b2a96fbbe8d38a8665beed817e0380b37f3dc743032d9b4b2cc829e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/performance-log-viewer.py"}, "region": {"startLine": 498}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.unblock` used but never assigned in __init__: Method `move` of class `History` reads `self.unblock`, 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": 129457, "scanner": "repobility-ast-engine", "fingerprint": "ec992ceffe6d98f3d9f1cdffa29d941ca7fb5a480de8e2f8f35fdcb98bd0fab2", "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|ec992ceffe6d98f3d9f1cdffa29d941ca7fb5a480de8e2f8f35fdcb98bd0fab2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/performance-log-viewer.py"}, "region": {"startLine": 495}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.notify` used but never assigned in __init__: Method `move` of class `History` reads `self.notify`, 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": 129456, "scanner": "repobility-ast-engine", "fingerprint": "be475b11da2376778916a30a9184031f75f5d700245bab3e23f227ecc2f8d0c0", "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|be475b11da2376778916a30a9184031f75f5d700245bab3e23f227ecc2f8d0c0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/performance-log-viewer.py"}, "region": {"startLine": 493}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.notify` used but never assigned in __init__: Method `move` of class `History` reads `self.notify`, 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": 129455, "scanner": "repobility-ast-engine", "fingerprint": "b9aa080165b0de39a688b6631e6826243ed86c1118684b0995ab913da456f9a7", "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|b9aa080165b0de39a688b6631e6826243ed86c1118684b0995ab913da456f9a7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/performance-log-viewer.py"}, "region": {"startLine": 492}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.block` used but never assigned in __init__: Method `move` of class `History` reads `self.block`, 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": 129454, "scanner": "repobility-ast-engine", "fingerprint": "b2855c57abb3b0b171390cd4a853d3d04e746ba6ec32553d02b77fe277b73176", "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|b2855c57abb3b0b171390cd4a853d3d04e746ba6ec32553d02b77fe277b73176"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/performance-log-viewer.py"}, "region": {"startLine": 477}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.is_blocked` used but never assigned in __init__: Method `update` of class `History` reads `self.is_blocked`, 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": 129453, "scanner": "repobility-ast-engine", "fingerprint": "961f2d5504911377d159bc93c33099345a2064c88ff8963186b4677f9fd7e9e8", "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|961f2d5504911377d159bc93c33099345a2064c88ff8963186b4677f9fd7e9e8"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/performance-log-viewer.py"}, "region": {"startLine": 460}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.notify` used but never assigned in __init__: Method `record` of class `History` reads `self.notify`, 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": 129452, "scanner": "repobility-ast-engine", "fingerprint": "487084b50ff7347d5f6b5fe7c815678f56056ed0bd9770d2b20d54dc75955a84", "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|487084b50ff7347d5f6b5fe7c815678f56056ed0bd9770d2b20d54dc75955a84"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/performance-log-viewer.py"}, "region": {"startLine": 455}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.notify` used but never assigned in __init__: Method `record` of class `History` reads `self.notify`, 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": 129451, "scanner": "repobility-ast-engine", "fingerprint": "bc4090c091c29c45bb21b0521af08263332a17bb3c3f7ac9d91b0bc7b02618bd", "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|bc4090c091c29c45bb21b0521af08263332a17bb3c3f7ac9d91b0bc7b02618bd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/performance-log-viewer.py"}, "region": {"startLine": 454}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.is_blocked` used but never assigned in __init__: Method `record` of class `History` reads `self.is_blocked`, 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": 129450, "scanner": "repobility-ast-engine", "fingerprint": "079bc61fb3bc8b0f52f03e21e255f384a8b2083258ad0badba0f90ee5103e021", "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|079bc61fb3bc8b0f52f03e21e255f384a8b2083258ad0badba0f90ee5103e021"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/performance-log-viewer.py"}, "region": {"startLine": 433}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.record` used but never assigned in __init__: Method `end_group` of class `History` reads `self.record`, 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": 129449, "scanner": "repobility-ast-engine", "fingerprint": "231da8f567575af631760399fd70516ace1dff9fe988ab521fdff3601731956f", "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|231da8f567575af631760399fd70516ace1dff9fe988ab521fdff3601731956f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/performance-log-viewer.py"}, "region": {"startLine": 430}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.meson_info` used but never assigned in __init__: Method `get_meson_installed` of class `MesonStatus` reads `self.meson_info`, 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": 129442, "scanner": "repobility-ast-engine", "fingerprint": "bca1b8d3b157acd159d9356020c9a136090fa36d2fe0870b0263792fdae50d65", "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|bca1b8d3b157acd159d9356020c9a136090fa36d2fe0870b0263792fdae50d65"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/meson_install_subdir.py"}, "region": {"startLine": 53}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.meson_info` used but never assigned in __init__: Method `get_meson_installed` of class `MesonStatus` reads `self.meson_info`, 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": 129441, "scanner": "repobility-ast-engine", "fingerprint": "8c1e09229d693a0dcda1c55fc9588bdd2b03f6aa78acdf989c0b12260272d8ed", "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|8c1e09229d693a0dcda1c55fc9588bdd2b03f6aa78acdf989c0b12260272d8ed"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/meson_install_subdir.py"}, "region": {"startLine": 52}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.installed_files` used but never assigned in __init__: Method `get_meson_installed` of class `MesonStatus` reads `self.installed_files`, 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": 129440, "scanner": "repobility-ast-engine", "fingerprint": "b282d0a77bdba3669c131c0639a0fb5116dcc8a950a37009441992631691fd6e", "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|b282d0a77bdba3669c131c0639a0fb5116dcc8a950a37009441992631691fd6e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/meson_install_subdir.py"}, "region": {"startLine": 56}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.buildroot` used but never assigned in __init__: Method `get_meson_info` of class `MesonStatus` reads `self.buildroot`, 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": 129439, "scanner": "repobility-ast-engine", "fingerprint": "09afb4c7be884ccff03a5dfd1747147537a6d87027e7622e8cda4723ca9059df", "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|09afb4c7be884ccff03a5dfd1747147537a6d87027e7622e8cda4723ca9059df"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/meson_install_subdir.py"}, "region": {"startLine": 47}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.meson_info` used but never assigned in __init__: Method `get_meson_info` of class `MesonStatus` reads `self.meson_info`, 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": 129438, "scanner": "repobility-ast-engine", "fingerprint": "46753abe3a058fe151bdc22e38ad82efa2b802b5e7e544c0d6059fc49890ab11", "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|46753abe3a058fe151bdc22e38ad82efa2b802b5e7e544c0d6059fc49890ab11"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/meson_install_subdir.py"}, "region": {"startLine": 49}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.meson_info` used but never assigned in __init__: Method `get_meson_info` of class `MesonStatus` reads `self.meson_info`, 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": 129437, "scanner": "repobility-ast-engine", "fingerprint": "be4682c6e290d8d3c19e1306c87174f7385bbefc1a07b73e0b408b08b6cec20c", "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|be4682c6e290d8d3c19e1306c87174f7385bbefc1a07b73e0b408b08b6cec20c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/meson_install_subdir.py"}, "region": {"startLine": 48}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.sourceroot` used but never assigned in __init__: Method `get_meson_info` of class `MesonStatus` reads `self.sourceroot`, 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": 129436, "scanner": "repobility-ast-engine", "fingerprint": "b540886e2cc1d9fd5708f94e9e7803427b316b97eadbad7c3b1ebc50c04eb6c4", "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|b540886e2cc1d9fd5708f94e9e7803427b316b97eadbad7c3b1ebc50c04eb6c4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/meson_install_subdir.py"}, "region": {"startLine": 49}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.buildroot` used but never assigned in __init__: Method `get_build_dir` of class `MesonStatus` reads `self.buildroot`, 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": 129435, "scanner": "repobility-ast-engine", "fingerprint": "2732fea096df2289dfe507ce218b89173109d0be04e4df4d9c14e863eec009ff", "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|2732fea096df2289dfe507ce218b89173109d0be04e4df4d9c14e863eec009ff"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/meson_install_subdir.py"}, "region": {"startLine": 43}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.buildroot` used but never assigned in __init__: Method `get_build_dir` of class `MesonStatus` reads `self.buildroot`, 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": 129434, "scanner": "repobility-ast-engine", "fingerprint": "ef66ffc9047960698e4867ff980062a53f0d7d36ee367732352a70be133cc338", "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|ef66ffc9047960698e4867ff980062a53f0d7d36ee367732352a70be133cc338"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/meson_install_subdir.py"}, "region": {"startLine": 41}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.buildroot` used but never assigned in __init__: Method `get_build_dir` of class `MesonStatus` reads `self.buildroot`, 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": 129433, "scanner": "repobility-ast-engine", "fingerprint": "704ce0c927d1d5f2af55e079c23d2729a5b2482ce4d58783b4bdee964767e065", "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|704ce0c927d1d5f2af55e079c23d2729a5b2482ce4d58783b4bdee964767e065"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/meson_install_subdir.py"}, "region": {"startLine": 35}}}]}, {"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": 129394, "scanner": "repobility-threat-engine", "fingerprint": "b3e0b2b49640052f55a6eabe094e917717c9601e2620a11cce88cb2b1a5bf862", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "dialog.destroy()", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|b3e0b2b49640052f55a6eabe094e917717c9601e2620a11cce88cb2b1a5bf862"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extensions/goat-exercises/goat-exercise-py3.py"}, "region": {"startLine": 127}}}]}, {"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": 129393, "scanner": "repobility-threat-engine", "fingerprint": "d3a6900dffe10a887b83111f419e53ea04fea796cb929ce9401cd1354c1af291", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "dialog.destroy();", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|d3a6900dffe10a887b83111f419e53ea04fea796cb929ce9401cd1354c1af291"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extensions/goat-exercises/goat-exercise-gjs.js"}, "region": {"startLine": 142}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `html` used but not imported: The file uses `html.something(...)` but never imports `html`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 129466, "scanner": "repobility-ast-engine", "fingerprint": "343e937426f91dc26b556279a29112b8b6d4fccbb3ce8730249110ae33bcbf39", "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|343e937426f91dc26b556279a29112b8b6d4fccbb3ce8730249110ae33bcbf39"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "plug-ins/python/colorxhtml.py"}, "region": {"startLine": 146}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `os` used but not imported: The file uses `os.something(...)` but never imports `os`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 129465, "scanner": "repobility-ast-engine", "fingerprint": "4562f724e07d61b81d975774245ce629a681d10b3b915f9c303be51c54bf5861", "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|4562f724e07d61b81d975774245ce629a681d10b3b915f9c303be51c54bf5861"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/tests/test-save-and-export.py"}, "region": {"startLine": 28}}}]}, {"ruleId": "MINED022", "level": "error", "message": {"text": "[MINED022] C Strcpy: strcpy/strcat dont bounds-check; use strncpy or snprintf."}, "properties": {"repobilityId": 129392, "scanner": "repobility-threat-engine", "fingerprint": "8bee74f0dc849013bf4c65ae03ad2b2c07a074cd84ef44c5e2acb2805c0e0c90", "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": "c-strcpy", "owasp": null, "cwe_ids": ["CWE-120"], "languages": ["c", "cpp"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347949+00:00", "triaged_in_corpus": 20, "observations_count": 39114, "ai_coder_pattern_id": 130}, "scanner": "repobility-threat-engine", "correlation_key": "fp|8bee74f0dc849013bf4c65ae03ad2b2c07a074cd84ef44c5e2acb2805c0e0c90"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/text/gimptext-xlfd.c"}, "region": {"startLine": 110}}}]}]}]}