{"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": "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": "COMP001", "name": "[COMP001] High cognitive complexity: Function `calc_gradients` has cognitive complexity 19 (SonarSource scale). Cognitiv", "shortDescription": {"text": "[COMP001] High cognitive complexity: Function `calc_gradients` 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 recursio"}, "fullDescription": {"text": "Extract nested branches into named helper functions; flatten early-return / guard clauses; replace long if/elif chains with dispatch dicts or polymorphism. SonarQube's threshold for 'should refactor' is 15 \u2014 yours is 19."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "medium", "confidence": 0.95, "cwe": "", "owasp": ""}}, {"id": "SEC127", "name": "[SEC127] AI agent stub \u2014 TODO: implement / pass placeholder body: Function body left as TODO/pass/raise NotImplementedEr", "shortDescription": {"text": "[SEC127] AI agent stub \u2014 TODO: implement / pass placeholder body: Function body left as TODO/pass/raise NotImplementedError after an AI scaffolding pass. The route appears to exist (and may even pass shallow CI), but invoking it crashes or "}, "fullDescription": {"text": "Either implement the body, or fail closed at module-load time so the deploy can't ship a half-built route. A CI gate that fails build on `raise NotImplementedError` in non-abstract code catches this cleanly."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "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": "MINED055", "name": "[MINED055] Npm Install No Lockfile: Production image runs npm install (resolves new versions on every build) instead of ", "shortDescription": {"text": "[MINED055] Npm Install No Lockfile: Production image runs npm install (resolves new versions on every build) instead of npm ci."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-1357 / A06:2021 for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "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": "info", "confidence": 0.1, "cwe": "", "owasp": ""}}, {"id": "MINED062", "name": "[MINED062] Python Dataclass No Fields: @dataclass over an empty class \u2014 unfinished model.", "shortDescription": {"text": "[MINED062] Python Dataclass No Fields: @dataclass over an empty class \u2014 unfinished model."}, "fullDescription": {"text": "Review and fix per the pattern semantics."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED050", "name": "[MINED050] Stub Only Function (and 10 more): Same pattern found in 10 additional files. Review if needed.", "shortDescription": {"text": "[MINED050] Stub Only Function (and 10 more): Same pattern found in 10 additional files. Review if needed."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-1188 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "MINED115", "name": "[MINED115] Action `codecov/codecov-action` pinned to mutable ref `@v4`: `uses: codecov/codecov-action@v4` resolves at wo", "shortDescription": {"text": "[MINED115] Action `codecov/codecov-action` pinned to mutable ref `@v4`: `uses: codecov/codecov-action@v4` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromi"}, "fullDescription": {"text": "Replace with: `uses: codecov/codecov-action@<40-char-sha>  # v4` 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.global_rank` used but never assigned in __init__: Method `load_config` of class `Runner` reads `self.gl", "shortDescription": {"text": "[MINED108] `self.global_rank` used but never assigned in __init__: Method `load_config` of class `Runner` reads `self.global_rank`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the fir"}, "fullDescription": {"text": "Initialize `self.global_rank = <default>` in __init__, or add a class-level default."}, "properties": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED001", "name": "[MINED001] Bare Except Pass: except: pass or except Exception: pass \u2014 silently swallows everything including KeyboardInt", "shortDescription": {"text": "[MINED001] Bare Except Pass: except: pass or except Exception: pass \u2014 silently swallows everything including KeyboardInterrupt and bugs."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-755 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}]}}, "automationDetails": {"id": "repobility/1308"}, "properties": {"repository": "Denys88/rl_games", "repoUrl": "https://github.com/Denys88/rl_games", "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": 133691, "scanner": "repobility-ast-engine", "fingerprint": "e920ef5386f85ec648308e5e892ac47281066959ea5711c7e23a9df83c5d483b", "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|e920ef5386f85ec648308e5e892ac47281066959ea5711c7e23a9df83c5d483b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/common/player.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": 133690, "scanner": "repobility-ast-engine", "fingerprint": "c50741a0861f741f5e6e396f9db0a5102c9423a030309ab08f7069ed20329629", "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|c50741a0861f741f5e6e396f9db0a5102c9423a030309ab08f7069ed20329629"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/common/player.py"}, "region": {"startLine": 152}}}]}, {"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": 133689, "scanner": "repobility-ast-engine", "fingerprint": "114d6a4730dc9b2e1e67e3bd13a8cf013b300e27a76826f8935b8827f9c5078b", "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|114d6a4730dc9b2e1e67e3bd13a8cf013b300e27a76826f8935b8827f9c5078b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/algos_torch/torch_ext.py"}, "region": {"startLine": 65}}}]}, {"ruleId": "AGT012", "level": "warning", "message": {"text": "Agent control bridge may listen on a network interface without visible auth"}, "properties": {"repobilityId": 133663, "scanner": "repobility-agent-runtime", "fingerprint": "38392e04f7876261dca9505549c13595bf0ec135f9e308ad0127f9221d2e4211", "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|38392e04f7876261dca9505549c13595bf0ec135f9e308ad0127f9221d2e4211"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/common/vecenv.py"}, "region": {"startLine": 22}}}]}, {"ruleId": "COMP001", "level": "warning", "message": {"text": "[COMP001] High cognitive complexity: Function `calc_gradients` 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=4, for=2, if=8, nested_bonus=5."}, "properties": {"repobilityId": 133653, "scanner": "repobility-threat-engine", "fingerprint": "5169f974196eaa3c7a8c5339a1d45f7498313c3f61c8580f2977aecc14c677c6", "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": "calc_gradients", "breakdown": {"if": 8, "for": 2, "else": 4, "nested_bonus": 5}, "complexity": 19, "correlation_key": "fp|5169f974196eaa3c7a8c5339a1d45f7498313c3f61c8580f2977aecc14c677c6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/algos_torch/a2c_discrete.py"}, "region": {"startLine": 125}}}]}, {"ruleId": "COMP001", "level": "warning", "message": {"text": "[COMP001] High cognitive complexity: Function `calc_gradients` has cognitive complexity 15 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursion all weigh in. Breakdown: else=2, for=2, if=6, nested_bonus=5."}, "properties": {"repobilityId": 133652, "scanner": "repobility-threat-engine", "fingerprint": "c794e03a97253c7650c7a1b2908a2bfeff79a61feb8b200cda815cc8c5038a6c", "category": "quality", "severity": "medium", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 15 (severity threshold for medium: 15+).", "evidence": {"scanner": "repobility-threat-engine", "function": "calc_gradients", "breakdown": {"if": 6, "for": 2, "else": 2, "nested_bonus": 5}, "complexity": 15, "correlation_key": "fp|c794e03a97253c7650c7a1b2908a2bfeff79a61feb8b200cda815cc8c5038a6c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/algos_torch/a2c_continuous.py"}, "region": {"startLine": 135}}}]}, {"ruleId": "SEC127", "level": "warning", "message": {"text": "[SEC127] AI agent stub \u2014 TODO: implement / pass placeholder body: Function body left as TODO/pass/raise NotImplementedError after an AI scaffolding pass. The route appears to exist (and may even pass shallow CI), but invoking it crashes or silently no-ops. AI agents consistently emit these when their context window runs out mid-implementation. Production callers hitting these stubs is a classic AI-generated-incident."}, "properties": {"repobilityId": 133647, "scanner": "repobility-threat-engine", "fingerprint": "232205fc840da85bfada2b48644fe5625fade6454b9d4d5dd3b4e7e5b3616b02", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "def step(self, actions):\n        raise NotImplementedError", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC127", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|232205fc840da85bfada2b48644fe5625fade6454b9d4d5dd3b4e7e5b3616b02"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/common/ivecenv.py"}, "region": {"startLine": 2}}}]}, {"ruleId": "SEC127", "level": "warning", "message": {"text": "[SEC127] AI agent stub \u2014 TODO: implement / pass placeholder body: Function body left as TODO/pass/raise NotImplementedError after an AI scaffolding pass. The route appears to exist (and may even pass shallow CI), but invoking it crashes or silently no-ops. AI agents consistently emit these when their context window runs out mid-implementation. Production callers hitting these stubs is a classic AI-generated-incident."}, "properties": {"repobilityId": 133646, "scanner": "repobility-threat-engine", "fingerprint": "922c99d226ab23e711c11e8e5f9a658661c546fd0cc6caf4277697adf2acaad6", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "def flatten(cls, obj):\n        raise NotImplementedError", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC127", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|922c99d226ab23e711c11e8e5f9a658661c546fd0cc6caf4277697adf2acaad6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/algos_torch/flatten.py"}, "region": {"startLine": 30}}}]}, {"ruleId": "SEC127", "level": "warning", "message": {"text": "[SEC127] AI agent stub \u2014 TODO: implement / pass placeholder body: Function body left as TODO/pass/raise NotImplementedError after an AI scaffolding pass. The route appears to exist (and may even pass shallow CI), but invoking it crashes or silently no-ops. AI agents consistently emit these when their context window runs out mid-implementation. Production callers hitting these stubs is a classic AI-generated-incident."}, "properties": {"repobilityId": 133645, "scanner": "repobility-threat-engine", "fingerprint": "e7caf0758147ce5bde9bc4e05662bce85e61aa42e9477b7cb6e42b581202da47", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "def get_masked_action_values(self, obs, action_masks):\n        raise NotImplementedError", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC127", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|e7caf0758147ce5bde9bc4e05662bce85e61aa42e9477b7cb6e42b581202da47"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/algos_torch/a2c_continuous.py"}, "region": {"startLine": 94}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 133662, "scanner": "repobility-ai-code-hygiene", "fingerprint": "588c91aa632cfd911d04c0fb14223abd146e2ffd3ab10b7ff04b3f5eaa6bea1b", "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": "rl_games/envs/smac_env.py", "duplicate_line": 16, "correlation_key": "fp|588c91aa632cfd911d04c0fb14223abd146e2ffd3ab10b7ff04b3f5eaa6bea1b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/envs/smac_v2_env.py"}, "region": {"startLine": 22}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 133661, "scanner": "repobility-ai-code-hygiene", "fingerprint": "ad02fd86bf4cd6d537e3c01e22956b4c582bc08fb3eaa4216a5392b9f4e23bc9", "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": "rl_games/algos_torch/central_value.py", "duplicate_line": 141, "correlation_key": "fp|ad02fd86bf4cd6d537e3c01e22956b4c582bc08fb3eaa4216a5392b9f4e23bc9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/common/player.py"}, "region": {"startLine": 131}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 133660, "scanner": "repobility-ai-code-hygiene", "fingerprint": "a6c149e7e6b4b59eac43928d455d53f1a3794d2d797a63b0fc2d03aad1f24905", "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": "rl_games/algos_torch/a2c_continuous.py", "duplicate_line": 34, "correlation_key": "fp|a6c149e7e6b4b59eac43928d455d53f1a3794d2d797a63b0fc2d03aad1f24905"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/algos_torch/a2c_discrete.py"}, "region": {"startLine": 35}}}]}, {"ruleId": "COMP001", "level": "note", "message": {"text": "[COMP001] High cognitive complexity: Function `__init__` 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: else=1, for=1, if=6, nested_bonus=3, recursion=1."}, "properties": {"repobilityId": 133654, "scanner": "repobility-threat-engine", "fingerprint": "bf7908aaec7f4ab758f6516afb8a7337a3abf1c0a40b0601805ebaa09feddce5", "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": "__init__", "breakdown": {"if": 6, "for": 1, "else": 1, "recursion": 1, "nested_bonus": 3}, "complexity": 12, "correlation_key": "fp|bf7908aaec7f4ab758f6516afb8a7337a3abf1c0a40b0601805ebaa09feddce5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/algos_torch/flatten.py"}, "region": {"startLine": 177}}}]}, {"ruleId": "MINED055", "level": "none", "message": {"text": "[MINED055] Npm Install No Lockfile: Production image runs npm install (resolves new versions on every build) instead of npm ci."}, "properties": {"repobilityId": 133659, "scanner": "repobility-threat-engine", "fingerprint": "49c115e9da832a87852f10554c60085705080148d9458ed8ac5bd3f52a7e97d6", "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": "npm-install-no-lockfile", "owasp": "A06:2021", "cwe_ids": ["CWE-1357"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348030+00:00", "triaged_in_corpus": 12, "observations_count": 317602, "ai_coder_pattern_id": 42}, "scanner": "repobility-threat-engine", "correlation_key": "fp|49c115e9da832a87852f10554c60085705080148d9458ed8ac5bd3f52a7e97d6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/envs/pufferlib_vecenv.py"}, "region": {"startLine": 4}}}]}, {"ruleId": "SEC045", "level": "none", "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": 133657, "scanner": "repobility-threat-engine", "fingerprint": "47db56e5c70e37af17ffe112bfb189c8dd85bd9e6a70c9203b6ccf1b2ceefbbc", "category": "injection", "severity": "info", "confidence": 0.1, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Safe pattern '\\.eval\\(' detected on same line", "evidence": {"match": ".eval(", "reason": "Safe pattern '\\.eval\\(' detected on same line", "rule_id": "SEC045", "scanner": "repobility-threat-engine", "confidence": 0.1, "correlation_key": "code|injection|token|41|sec045"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/algos_torch/players.py"}, "region": {"startLine": 41}}}]}, {"ruleId": "MINED062", "level": "none", "message": {"text": "[MINED062] Python Dataclass No Fields: @dataclass over an empty class \u2014 unfinished model."}, "properties": {"repobilityId": 133656, "scanner": "repobility-threat-engine", "fingerprint": "766ad858fd968b9e03e6e5a910093a35f87b3d761a931a87fdc6a8b02cb3bcf5", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "python-dataclass-no-fields", "owasp": null, "cwe_ids": [], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348046+00:00", "triaged_in_corpus": 10, "observations_count": 92448, "ai_coder_pattern_id": 144}, "scanner": "repobility-threat-engine", "correlation_key": "fp|766ad858fd968b9e03e6e5a910093a35f87b3d761a931a87fdc6a8b02cb3bcf5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/algos_torch/flatten.py"}, "region": {"startLine": 10}}}]}, {"ruleId": "COMP001", "level": "none", "message": {"text": "[COMP001] High cognitive complexity (and 12 more): Same pattern found in 12 additional files. Review if needed."}, "properties": {"repobilityId": 133655, "scanner": "repobility-threat-engine", "fingerprint": "ea7e91dd5c7e64706a198254e066b520737d0337b0e2613fa045355b61c46188", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 12 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"scanner": "repobility-threat-engine", "function": "calc_gradients", "breakdown": {"if": 6, "for": 2, "else": 2, "nested_bonus": 5}, "aggregated": true, "complexity": 15, "correlation_key": "fp|ea7e91dd5c7e64706a198254e066b520737d0337b0e2613fa045355b61c46188", "aggregated_count": 12}}}, {"ruleId": "MINED050", "level": "none", "message": {"text": "[MINED050] Stub Only Function (and 10 more): Same pattern found in 10 additional files. Review if needed."}, "properties": {"repobilityId": 133651, "scanner": "repobility-threat-engine", "fingerprint": "091a09b8c764f855918622fcf41c76ebcaf1ff1f761099248b190e861f32eaba", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 10 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"mined": true, "mining": {"slug": "stub-only-function", "owasp": null, "cwe_ids": ["CWE-1188"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348017+00:00", "triaged_in_corpus": 12, "observations_count": 633513, "ai_coder_pattern_id": 2}, "scanner": "repobility-threat-engine", "aggregated": true, "correlation_key": "fp|091a09b8c764f855918622fcf41c76ebcaf1ff1f761099248b190e861f32eaba", "aggregated_count": 10}}}, {"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": 133650, "scanner": "repobility-threat-engine", "fingerprint": "ae10c149765aebc182f6935120ad1594f0bff2aed29f1365e4f57b72b76dca82", "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|ae10c149765aebc182f6935120ad1594f0bff2aed29f1365e4f57b72b76dca82"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/algos_torch/moving_mean_std.py"}, "region": {"startLine": 23}}}]}, {"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": 133649, "scanner": "repobility-threat-engine", "fingerprint": "4893c83e59b8006f144a388cab986422bdda558f2b510c3215cb3f4fbc2501fa", "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|4893c83e59b8006f144a388cab986422bdda558f2b510c3215cb3f4fbc2501fa"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/algos_torch/flatten.py"}, "region": {"startLine": 31}}}]}, {"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": 133648, "scanner": "repobility-threat-engine", "fingerprint": "9f7bf6815f2f349dc10a77e34e5e7cd87f6c08cd8f64e8e52fc4c331d3ca3e2e", "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|9f7bf6815f2f349dc10a77e34e5e7cd87f6c08cd8f64e8e52fc4c331d3ca3e2e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/algos_torch/a2c_continuous.py"}, "region": {"startLine": 95}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `codecov/codecov-action` pinned to mutable ref `@v4`: `uses: codecov/codecov-action@v4` 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": 133696, "scanner": "repobility-supply-chain", "fingerprint": "56eaa3144c2116d1844815161864346ad5b01e600549ccb2b7d5c66b0d0379f9", "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|56eaa3144c2116d1844815161864346ad5b01e600549ccb2b7d5c66b0d0379f9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/python-package.yml"}, "region": {"startLine": 53}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/setup-python` pinned to mutable ref `@v5`: `uses: actions/setup-python@v5` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 133695, "scanner": "repobility-supply-chain", "fingerprint": "8dfc22cb7ac5c3910cc6cc9fd7cc32118fec5c23319cfbf3649405b299068c1e", "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|8dfc22cb7ac5c3910cc6cc9fd7cc32118fec5c23319cfbf3649405b299068c1e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/python-package.yml"}, "region": {"startLine": 38}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/checkout` pinned to mutable ref `@v4`: `uses: actions/checkout@v4` 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": 133694, "scanner": "repobility-supply-chain", "fingerprint": "44ec8cf854a95f4ff6040c2b73aa3758a85eba4326cbdbabe4deee6c942fbe3c", "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|44ec8cf854a95f4ff6040c2b73aa3758a85eba4326cbdbabe4deee6c942fbe3c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/python-package.yml"}, "region": {"startLine": 36}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/setup-python` pinned to mutable ref `@v5`: `uses: actions/setup-python@v5` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 133693, "scanner": "repobility-supply-chain", "fingerprint": "a2dd294af21b4488a93e7527a405d10ebc18ff01db2725a6a60409b8fb4c73ab", "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|a2dd294af21b4488a93e7527a405d10ebc18ff01db2725a6a60409b8fb4c73ab"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/python-package.yml"}, "region": {"startLine": 15}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/checkout` pinned to mutable ref `@v4`: `uses: actions/checkout@v4` 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": 133692, "scanner": "repobility-supply-chain", "fingerprint": "d909e4f3c14f8776871e1f85026605071d1c148208d19e99d2f82421ccd5318b", "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|d909e4f3c14f8776871e1f85026605071d1c148208d19e99d2f82421ccd5318b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/python-package.yml"}, "region": {"startLine": 13}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.global_rank` used but never assigned in __init__: Method `load_config` of class `Runner` reads `self.global_rank`, 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": 133688, "scanner": "repobility-ast-engine", "fingerprint": "20fa0c2aed5bc697648a0a52b681a9627a9c3680f1fa9206de1fb496a24d45a6", "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|20fa0c2aed5bc697648a0a52b681a9627a9c3680f1fa9206de1fb496a24d45a6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/torch_runner.py"}, "region": {"startLine": 149}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.world_size` used but never assigned in __init__: Method `load_config` of class `Runner` reads `self.world_size`, 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": 133687, "scanner": "repobility-ast-engine", "fingerprint": "65bf6c5bbabf72498e97fcf3b70e85ca9b22a6c1d0e2d6985f126d53d8f316a9", "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|65bf6c5bbabf72498e97fcf3b70e85ca9b22a6c1d0e2d6985f126d53d8f316a9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/torch_runner.py"}, "region": {"startLine": 184}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.seed` used but never assigned in __init__: Method `load_config` of class `Runner` reads `self.seed`, 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": 133686, "scanner": "repobility-ast-engine", "fingerprint": "7b8af184828145131815d50cd16f5494a29149c3de980ea3bb6a774c239155bd", "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|7b8af184828145131815d50cd16f5494a29149c3de980ea3bb6a774c239155bd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/torch_runner.py"}, "region": {"startLine": 166}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.seed` used but never assigned in __init__: Method `load_config` of class `Runner` reads `self.seed`, 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": 133685, "scanner": "repobility-ast-engine", "fingerprint": "39b953b160aa07fc9b81f4080a6f4b81740e71e1329837cffebbd98889cab02b", "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|39b953b160aa07fc9b81f4080a6f4b81740e71e1329837cffebbd98889cab02b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/torch_runner.py"}, "region": {"startLine": 151}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.seed` used but never assigned in __init__: Method `load_config` of class `Runner` reads `self.seed`, 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": 133684, "scanner": "repobility-ast-engine", "fingerprint": "994173cb3319dc8b7f1f8323a1b6ecb2c4fa497a4708e3214c52876c129fbfad", "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|994173cb3319dc8b7f1f8323a1b6ecb2c4fa497a4708e3214c52876c129fbfad"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/torch_runner.py"}, "region": {"startLine": 161}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.seed` used but never assigned in __init__: Method `load_config` of class `Runner` reads `self.seed`, 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": 133683, "scanner": "repobility-ast-engine", "fingerprint": "570e7f8a97c973beb8c5db4f4b6601e3c22be87c37d696cc4318ed3f40572ff4", "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|570e7f8a97c973beb8c5db4f4b6601e3c22be87c37d696cc4318ed3f40572ff4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/torch_runner.py"}, "region": {"startLine": 160}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.seed` used but never assigned in __init__: Method `load_config` of class `Runner` reads `self.seed`, 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": 133682, "scanner": "repobility-ast-engine", "fingerprint": "cb51e5fcb33e8e71004a56ec1d7b365e5e54d1eecadfa667af9a2a964584d404", "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|cb51e5fcb33e8e71004a56ec1d7b365e5e54d1eecadfa667af9a2a964584d404"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/torch_runner.py"}, "region": {"startLine": 159}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.seed` used but never assigned in __init__: Method `load_config` of class `Runner` reads `self.seed`, 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": 133681, "scanner": "repobility-ast-engine", "fingerprint": "deef82c7bacf7195282c945a8aa919ae3c91c1b6d5110dd6e48ef74c1fef3acb", "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|deef82c7bacf7195282c945a8aa919ae3c91c1b6d5110dd6e48ef74c1fef3acb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/torch_runner.py"}, "region": {"startLine": 158}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.algo_params` used but never assigned in __init__: Method `load_config` of class `Runner` reads `self.algo_params`, 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": 133680, "scanner": "repobility-ast-engine", "fingerprint": "bd3228a67c5732b4e0be85e49884ef14e499f87acd61377cde7c39d8f5da36ef", "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|bd3228a67c5732b4e0be85e49884ef14e499f87acd61377cde7c39d8f5da36ef"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/torch_runner.py"}, "region": {"startLine": 154}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.global_rank` used but never assigned in __init__: Method `load_config` of class `Runner` reads `self.global_rank`, 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": 133679, "scanner": "repobility-ast-engine", "fingerprint": "81b904c4c2bcafdbac08386e15956ccc58fc8226d970f4b79c3ebe9489222048", "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|81b904c4c2bcafdbac08386e15956ccc58fc8226d970f4b79c3ebe9489222048"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/torch_runner.py"}, "region": {"startLine": 147}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.seed` used but never assigned in __init__: Method `load_config` of class `Runner` reads `self.seed`, 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": 133678, "scanner": "repobility-ast-engine", "fingerprint": "3d4c703ffae1c12504d7892eba9fe7f7b3bd79c6d7e64dd6008a31453f9e54ce", "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|3d4c703ffae1c12504d7892eba9fe7f7b3bd79c6d7e64dd6008a31453f9e54ce"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/torch_runner.py"}, "region": {"startLine": 147}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.world_size` used but never assigned in __init__: Method `load_config` of class `Runner` reads `self.world_size`, 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": 133677, "scanner": "repobility-ast-engine", "fingerprint": "7ea7d94f04563dcf5336cd4a4153d598cb8e1d56673c7a35d420cd9e55b10234", "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|7ea7d94f04563dcf5336cd4a4153d598cb8e1d56673c7a35d420cd9e55b10234"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/torch_runner.py"}, "region": {"startLine": 144}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.global_rank` used but never assigned in __init__: Method `load_config` of class `Runner` reads `self.global_rank`, 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": 133676, "scanner": "repobility-ast-engine", "fingerprint": "9f77a87bfa9261fd7bd4e283ef2b1abc2dbd60fdd96a62df8e75fed0a59ee2fb", "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|9f77a87bfa9261fd7bd4e283ef2b1abc2dbd60fdd96a62df8e75fed0a59ee2fb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/torch_runner.py"}, "region": {"startLine": 142}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.local_rank` used but never assigned in __init__: Method `load_config` of class `Runner` reads `self.local_rank`, 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": 133675, "scanner": "repobility-ast-engine", "fingerprint": "881f780f42aaca4ccef7a0528e2949c711a9857031b7ce3c89025dc477506960", "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|881f780f42aaca4ccef7a0528e2949c711a9857031b7ce3c89025dc477506960"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/torch_runner.py"}, "region": {"startLine": 140}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.seed` used but never assigned in __init__: Method `load_config` of class `Runner` reads `self.seed`, 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": 133674, "scanner": "repobility-ast-engine", "fingerprint": "aa96964173aa4b9c9fa4217bb7593a0e12ed106275252ba14c33542289d69357", "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|aa96964173aa4b9c9fa4217bb7593a0e12ed106275252ba14c33542289d69357"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/torch_runner.py"}, "region": {"startLine": 132}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.seed` used but never assigned in __init__: Method `load_config` of class `Runner` reads `self.seed`, 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": 133673, "scanner": "repobility-ast-engine", "fingerprint": "5c58c700e841faf07f95bff022371598efb1337327ce92c30e4eaba02e453aa7", "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|5c58c700e841faf07f95bff022371598efb1337327ce92c30e4eaba02e453aa7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/torch_runner.py"}, "region": {"startLine": 131}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.params` used but never assigned in __init__: Method `load_config` of class `Runner` reads `self.params`, 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": 133672, "scanner": "repobility-ast-engine", "fingerprint": "3eda5216115138208f54c200d742196fe6b379983cc5ea81f04a661bd314e795", "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|3eda5216115138208f54c200d742196fe6b379983cc5ea81f04a661bd314e795"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/torch_runner.py"}, "region": {"startLine": 176}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.seed` used but never assigned in __init__: Method `load_config` of class `Runner` reads `self.seed`, 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": 133671, "scanner": "repobility-ast-engine", "fingerprint": "5f5ac7f97cf9628e88406a8327f10057b2878a617dd5b5a8ab0c5f3f2fc1eda7", "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|5f5ac7f97cf9628e88406a8327f10057b2878a617dd5b5a8ab0c5f3f2fc1eda7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/torch_runner.py"}, "region": {"startLine": 157}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.exp_config` used but never assigned in __init__: Method `load_config` of class `Runner` reads `self.exp_config`, 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": 133670, "scanner": "repobility-ast-engine", "fingerprint": "0f9ecb48ae81ec02b7584548897b735f181f7ceff495852c308d6f0f0b7697fe", "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|0f9ecb48ae81ec02b7584548897b735f181f7ceff495852c308d6f0f0b7697fe"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/torch_runner.py"}, "region": {"startLine": 155}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.algo_name` used but never assigned in __init__: Method `load_config` of class `Runner` reads `self.algo_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": 133669, "scanner": "repobility-ast-engine", "fingerprint": "0b0945c1941213542d1cd7f1a00ed1c2fad8a5b4e8fe33a77ae86f0a8f42db35", "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|0b0945c1941213542d1cd7f1a00ed1c2fad8a5b4e8fe33a77ae86f0a8f42db35"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/torch_runner.py"}, "region": {"startLine": 154}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.algo_params` used but never assigned in __init__: Method `load_config` of class `Runner` reads `self.algo_params`, 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": 133668, "scanner": "repobility-ast-engine", "fingerprint": "5155b9e785e04713857f78dcc75faed547394b30beb6c1ac23bcdb0e1b36cf5f", "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|5155b9e785e04713857f78dcc75faed547394b30beb6c1ac23bcdb0e1b36cf5f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/torch_runner.py"}, "region": {"startLine": 153}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.world_size` used but never assigned in __init__: Method `load_config` of class `Runner` reads `self.world_size`, 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": 133667, "scanner": "repobility-ast-engine", "fingerprint": "42f56d125322a452dd2bdb0c7a08b4380036789a50391232955edb469be81173", "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|42f56d125322a452dd2bdb0c7a08b4380036789a50391232955edb469be81173"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/torch_runner.py"}, "region": {"startLine": 136}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.global_rank` used but never assigned in __init__: Method `load_config` of class `Runner` reads `self.global_rank`, 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": 133666, "scanner": "repobility-ast-engine", "fingerprint": "36872b683fcc3e9e25237f0158a96dbadbef39ec187c823a1fa20efd7d53d5a9", "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|36872b683fcc3e9e25237f0158a96dbadbef39ec187c823a1fa20efd7d53d5a9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/torch_runner.py"}, "region": {"startLine": 135}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.local_rank` used but never assigned in __init__: Method `load_config` of class `Runner` reads `self.local_rank`, 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": 133665, "scanner": "repobility-ast-engine", "fingerprint": "43a26ab9a82a35ecc3f2b0a8e81970481f6d3a7170471784ed17d838a96a7c4c", "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|43a26ab9a82a35ecc3f2b0a8e81970481f6d3a7170471784ed17d838a96a7c4c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/torch_runner.py"}, "region": {"startLine": 134}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.seed` used but never assigned in __init__: Method `load_config` of class `Runner` reads `self.seed`, 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": 133664, "scanner": "repobility-ast-engine", "fingerprint": "f9eeea3fc6bfb00ea8b7efde31a413aa712eb0619e5025ae8e4eb68569c2897c", "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|f9eeea3fc6bfb00ea8b7efde31a413aa712eb0619e5025ae8e4eb68569c2897c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/torch_runner.py"}, "region": {"startLine": 130}}}]}, {"ruleId": "MINED001", "level": "error", "message": {"text": "[MINED001] Bare Except Pass: except: pass or except Exception: pass \u2014 silently swallows everything including KeyboardInterrupt and bugs."}, "properties": {"repobilityId": 133658, "scanner": "repobility-threat-engine", "fingerprint": "cce6500d37cf3dd8ba67704a56c567d7e92bcd89ec96ffc9166cbb6a76467d9a", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "bare-except-pass", "owasp": null, "cwe_ids": ["CWE-755"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347744+00:00", "triaged_in_corpus": 15, "observations_count": 1550824, "ai_coder_pattern_id": 6}, "scanner": "repobility-threat-engine", "correlation_key": "fp|cce6500d37cf3dd8ba67704a56c567d7e92bcd89ec96ffc9166cbb6a76467d9a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "rl_games/common/gymnasium_vecenv.py"}, "region": {"startLine": 11}}}]}]}]}