https://github.com/antoinezambelli/forge.git ·
lang: python ·
LOC: ·
source: both
| Rule | Severity | Count |
|---|---|---|
MINED108 self.attribute used but never assigned in __init__ |
high | 25 |
MINED106 Phantom test coverage (assertion-free test) |
high | 25 |
MINED111 Bare except continues silently |
medium | 8 |
MINED050 Stub Only Function |
info | 4 |
MINED062 Python Dataclass No Fields |
info | 4 |
COMP001 [COMP001] High cognitive complexity: Function `load_yfinanc… |
low | 4 |
AIC003 Duplicated implementation block across source files |
low | 3 |
MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) |
high | 3 |
MINED001 Bare Except Pass |
high | 2 |
MINED116 GHA pull_request workflow leaks secrets to forks |
critical | 1 |
MINED116
GHA pull_request workflow leaks secrets to forks
CWE-829
.github/workflows/tests.yml:34
· conf 0.90
[MINED116] Workflow uses `secrets.CODECOV_TOKEN` on a `pull_request` trigger: This workflow triggers on `pull_request`, which checks out the FORK's code. Referencing `${ secrets.CODECOV_TOKEN }` lets…
COMP001
[COMP001] High cognitive complexity: Function `load_yfinance_data` has cognitive complexity 9 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand — nested branches, boolean chains, and recursion all weigh in. Breakdown: except=1, for=1, if=2, nested_bonus=3, or=2.
scripts/run_ablation.py:102
· conf 0.95
[COMP001] High cognitive complexity: Function `main` has cognitive complexity 36 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand — nested branche…
MINED001
Bare Except Pass
CWE-755
src/forge/core/slot_worker.py:54
· conf 1.00
[MINED001] Bare Except Pass: except: pass or except Exception: pass — silently swallows everything including KeyboardInterrupt and bugs.
MINED001
Bare Except Pass
CWE-755
src/forge/prompts/templates.py:211
· conf 1.00
[MINED001] Bare Except Pass: except: pass or except Exception: pass — silently swallows everything including KeyboardInterrupt and bugs.
MINED006
Overcatch Baseexception
CWE-705
src/forge/proxy/__main__.py:107
· conf 1.00
[MINED006] Overcatch Baseexception: except BaseException: ... — prevents Ctrl+C and SystemExit from working.
MINED106
Phantom test coverage (assertion-free test)
CWE-1126
tests/unit/test_guardrails.py:160
· conf 1.00
[MINED106] Phantom test coverage: test_is_frozen: Test function `test_is_frozen` runs code but contains no assert / expect / should call — it passes regardless of behaviour. Adds line coverage withou…
MINED106
Phantom test coverage (assertion-free test)
CWE-1126
tests/unit/test_messages.py:46
· conf 1.00
[MINED106] Phantom test coverage: test_is_frozen: Test function `test_is_frozen` runs code but contains no assert / expect / should call — it passes regardless of behaviour. Adds line coverage withou…
MINED106
Phantom test coverage (assertion-free test)
CWE-1126
tests/unit/test_ollama_client.py:862
· conf 1.00
[MINED106] Phantom test coverage: test_strict_unknown_model_raises: Test function `test_strict_unknown_model_raises` runs code but contains no assert / expect / should call — it passes regardless of …
MINED106
Phantom test coverage (assertion-free test)
CWE-1126
tests/unit/test_response_validator.py:12
· conf 1.00
[MINED106] Phantom test coverage: test_frozen: Test function `test_frozen` runs code but contains no assert / expect / should call — it passes regardless of behaviour. Adds line coverage without veri…
MINED106
Phantom test coverage (assertion-free test)
CWE-1126
tests/unit/test_runner.py:447
· conf 1.00
[MINED106] Phantom test coverage: test_unknown_tool_consumes_iteration: Test function `test_unknown_tool_consumes_iteration` runs code but contains no assert / expect / should call — it passes regard…
MINED106
Phantom test coverage (assertion-free test)
CWE-1126
tests/unit/test_runner.py:459
· conf 1.00
[MINED106] Phantom test coverage: test_unknown_tool_exhausts_retries: Test function `test_unknown_tool_exhausts_retries` runs code but contains no assert / expect / should call — it passes regardless…
MINED106
Phantom test coverage (assertion-free test)
CWE-1126
tests/unit/test_runner.py:472
· conf 1.00
[MINED106] Phantom test coverage: test_unknown_tool_and_text_response_share_retry_counter: Test function `test_unknown_tool_and_text_response_share_retry_counter` runs code but contains no assert / e…
MINED106
Phantom test coverage (assertion-free test)
CWE-1126
tests/unit/test_runner.py:647
· conf 1.00
[MINED106] Phantom test coverage: test_tool_error_consumes_iteration: Test function `test_tool_error_consumes_iteration` runs code but contains no assert / expect / should call — it passes regardless…
MINED106
Phantom test coverage (assertion-free test)
CWE-1126
tests/unit/test_runner.py:776
· conf 1.00
[MINED106] Phantom test coverage: test_stream_without_final_chunk_raises_stream_error: Test function `test_stream_without_final_chunk_raises_stream_error` runs code but contains no assert / expect / …
MINED106
Phantom test coverage (assertion-free test)
CWE-1126
tests/unit/test_runner.py:1617
· conf 1.00
[MINED106] Phantom test coverage: test_resolution_error_does_not_increment_consecutive_tool_errors: Test function `test_resolution_error_does_not_increment_consecutive_tool_errors` runs code but cont…
MINED106
Phantom test coverage (assertion-free test)
CWE-1126
tests/unit/test_runner.py:1817
· conf 1.00
[MINED106] Phantom test coverage: test_prereq_exhaustion_raises: Test function `test_prereq_exhaustion_raises` runs code but contains no assert / expect / should call — it passes regardless of behavi…
MINED106
Phantom test coverage (assertion-free test)
CWE-1126
tests/unit/test_server.py:229
· conf 1.00
[MINED106] Phantom test coverage: test_start_noop_for_ollama: Test function `test_start_noop_for_ollama` runs code but contains no assert / expect / should call — it passes regardless of behaviour. A…
MINED106
Phantom test coverage (assertion-free test)
CWE-1126
tests/unit/test_server.py:261
· conf 1.00
[MINED106] Phantom test coverage: test_start_llamafile_no_runtime_raises: Test function `test_start_llamafile_no_runtime_raises` runs code but contains no assert / expect / should call — it passes re…
MINED106
Phantom test coverage (assertion-free test)
CWE-1126
tests/unit/test_server.py:382
· conf 1.00
[MINED106] Phantom test coverage: test_stop_terminates_process: Test function `test_stop_terminates_process` runs code but contains no assert / expect / should call — it passes regardless of behaviou…
MINED106
Phantom test coverage (assertion-free test)
CWE-1126
tests/unit/test_workflow.py:56
· conf 1.00
[MINED106] Phantom test coverage: test_raises_on_unknown_required_step: Test function `test_raises_on_unknown_required_step` runs code but contains no assert / expect / should call — it passes regard…
MINED106
Phantom test coverage (assertion-free test)
CWE-1126
tests/unit/test_workflow.py:60
· conf 1.00
[MINED106] Phantom test coverage: test_raises_on_unknown_terminal_tool: Test function `test_raises_on_unknown_terminal_tool` runs code but contains no assert / expect / should call — it passes regard…
MINED106
Phantom test coverage (assertion-free test)
CWE-1126
tests/unit/test_workflow.py:64
· conf 1.00
[MINED106] Phantom test coverage: test_raises_on_key_name_mismatch: Test function `test_raises_on_key_name_mismatch` runs code but contains no assert / expect / should call — it passes regardless of …
MINED106
Phantom test coverage (assertion-free test)
CWE-1126
tests/unit/test_workflow.py:69
· conf 1.00
[MINED106] Phantom test coverage: test_raises_when_terminal_tool_in_required_steps: Test function `test_raises_when_terminal_tool_in_required_steps` runs code but contains no assert / expect / should…
MINED106
Phantom test coverage (assertion-free test)
CWE-1126
tests/unit/test_workflow.py:96
· conf 1.00
[MINED106] Phantom test coverage: test_raises_on_unknown_terminal_tool_in_list: Test function `test_raises_on_unknown_terminal_tool_in_list` runs code but contains no assert / expect / should call — …
MINED106
Phantom test coverage (assertion-free test)
CWE-1126
tests/unit/test_workflow.py:103
· conf 1.00
[MINED106] Phantom test coverage: test_raises_when_any_terminal_tool_in_required_steps: Test function `test_raises_when_any_terminal_tool_in_required_steps` runs code but contains no assert / expect …
MINED106
Phantom test coverage (assertion-free test)
CWE-1126
tests/unit/test_workflow.py:111
· conf 1.00
[MINED106] Phantom test coverage: test_raises_on_unknown_prerequisite_name_only: Test function `test_raises_on_unknown_prerequisite_name_only` runs code but contains no assert / expect / should call …
MINED106
Phantom test coverage (assertion-free test)
CWE-1126
tests/unit/test_workflow.py:117
· conf 1.00
[MINED106] Phantom test coverage: test_raises_on_unknown_prerequisite_arg_matched: Test function `test_raises_on_unknown_prerequisite_arg_matched` runs code but contains no assert / expect / should c…
MINED106
Phantom test coverage (assertion-free test)
CWE-1126
tests/unit/test_workflow.py:164
· conf 1.00
[MINED106] Phantom test coverage: test_get_callable_raises_keyerror_for_unknown: Test function `test_get_callable_raises_keyerror_for_unknown` runs code but contains no assert / expect / should call …
MINED106
Phantom test coverage (assertion-free test)
CWE-1126
tests/unit/test_workflow.py:182
· conf 1.00
[MINED106] Phantom test coverage: test_validates_on_construction: Test function `test_validates_on_construction` runs code but contains no assert / expect / should call — it passes regardless of beha…
MINED106
Phantom test coverage (assertion-free test)
CWE-1126
tests/unit/test_workflow.py:200
· conf 1.00
[MINED106] Phantom test coverage: test_validates_on_construction: Test function `test_validates_on_construction` runs code but contains no assert / expect / should call — it passes regardless of beha…
MINED108
self.attribute used but never assigned in __init__
CWE-476
tests/eval/eval_runner.py:95
· conf 1.00
[MINED108] `self._collect_usage` used but never assigned in __init__: Method `send` of class `CountingClientWrapper` reads `self._collect_usage`, but no assignment to it exists in __init__ (and no cl…
MINED108
self.attribute used but never assigned in __init__
CWE-476
tests/eval/eval_runner.py:107
· conf 1.00
[MINED108] `self._collect_usage` used but never assigned in __init__: Method `send_stream` of class `CountingClientWrapper` reads `self._collect_usage`, but no assignment to it exists in __init__ (an…
MINED108
self.attribute used but never assigned in __init__
CWE-476
tests/eval/report.py:127
· conf 1.00
[MINED108] `self._tag` used but never assigned in __init__: Method `label` of class `ConfigKey` reads `self._tag`, but no assignment to it exists in __init__ (and no class-level fallback). This raise…
MINED108
self.attribute used but never assigned in __init__
CWE-476
tests/eval/report.py:142
· conf 1.00
[MINED108] `self._tag` used but never assigned in __init__: Method `short_label` of class `ConfigKey` reads `self._tag`, but no assignment to it exists in __init__ (and no class-level fallback). This…
MINED108
self.attribute used but never assigned in __init__
CWE-476
tests/unit/test_runner.py:63
· conf 1.00
[MINED108] `self._next` used but never assigned in __init__: Method `send` of class `MockClient` reads `self._next`, but no assignment to it exists in __init__ (and no class-level fallback). This rai…
MINED108
self.attribute used but never assigned in __init__
CWE-476
tests/unit/test_runner.py:72
· conf 1.00
[MINED108] `self._next` used but never assigned in __init__: Method `send_stream` of class `MockClient` reads `self._next`, but no assignment to it exists in __init__ (and no class-level fallback). T…
MINED108
self.attribute used but never assigned in __init__
CWE-476
tests/unit/test_step_enforcer.py:13
· conf 1.00
[MINED108] `self.enforcer` used but never assigned in __init__: Method `setup_method` of class `TestStepEnforcerCheck` reads `self.enforcer`, but no assignment to it exists in __init__ (and no class-…
MINED108
self.attribute used but never assigned in __init__
CWE-476
tests/unit/test_step_enforcer.py:20
· conf 1.00
[MINED108] `self.enforcer` used but never assigned in __init__: Method `test_no_terminal_no_nudge` of class `TestStepEnforcerCheck` reads `self.enforcer`, but no assignment to it exists in __init__ (…
MINED108
self.attribute used but never assigned in __init__
CWE-476
tests/unit/test_step_enforcer.py:26
· conf 1.00
[MINED108] `self.enforcer` used but never assigned in __init__: Method `test_terminal_before_steps_nudges` of class `TestStepEnforcerCheck` reads `self.enforcer`, but no assignment to it exists in __…
MINED108
self.attribute used but never assigned in __init__
CWE-476
tests/unit/test_step_enforcer.py:34
· conf 1.00
[MINED108] `self.enforcer` used but never assigned in __init__: Method `test_escalation_tiers` of class `TestStepEnforcerCheck` reads `self.enforcer`, but no assignment to it exists in __init__ (and …
MINED108
self.attribute used but never assigned in __init__
CWE-476
tests/unit/test_step_enforcer.py:35
· conf 1.00
[MINED108] `self.enforcer` used but never assigned in __init__: Method `test_escalation_tiers` of class `TestStepEnforcerCheck` reads `self.enforcer`, but no assignment to it exists in __init__ (and …
MINED108
self.attribute used but never assigned in __init__
CWE-476
tests/unit/test_step_enforcer.py:36
· conf 1.00
[MINED108] `self.enforcer` used but never assigned in __init__: Method `test_escalation_tiers` of class `TestStepEnforcerCheck` reads `self.enforcer`, but no assignment to it exists in __init__ (and …
MINED108
self.attribute used but never assigned in __init__
CWE-476
tests/unit/test_step_enforcer.py:44
· conf 1.00
[MINED108] `self.enforcer` used but never assigned in __init__: Method `test_tier_caps_at_3` of class `TestStepEnforcerCheck` reads `self.enforcer`, but no assignment to it exists in __init__ (and no…
MINED108
self.attribute used but never assigned in __init__
CWE-476
tests/unit/test_step_enforcer.py:48
· conf 1.00
[MINED108] `self.enforcer` used but never assigned in __init__: Method `test_terminal_after_steps_satisfied_no_nudge` of class `TestStepEnforcerCheck` reads `self.enforcer`, but no assignment to it e…
MINED108
self.attribute used but never assigned in __init__
CWE-476
tests/unit/test_step_enforcer.py:49
· conf 1.00
[MINED108] `self.enforcer` used but never assigned in __init__: Method `test_terminal_after_steps_satisfied_no_nudge` of class `TestStepEnforcerCheck` reads `self.enforcer`, but no assignment to it e…
MINED108
self.attribute used but never assigned in __init__
CWE-476
tests/unit/test_step_enforcer.py:51
· conf 1.00
[MINED108] `self.enforcer` used but never assigned in __init__: Method `test_terminal_after_steps_satisfied_no_nudge` of class `TestStepEnforcerCheck` reads `self.enforcer`, but no assignment to it e…
MINED108
self.attribute used but never assigned in __init__
CWE-476
tests/unit/test_step_enforcer.py:55
· conf 1.00
[MINED108] `self.enforcer` used but never assigned in __init__: Method `test_terminal_with_partial_steps_nudges` of class `TestStepEnforcerCheck` reads `self.enforcer`, but no assignment to it exists…
MINED108
self.attribute used but never assigned in __init__
CWE-476
tests/unit/test_step_enforcer.py:57
· conf 1.00
[MINED108] `self.enforcer` used but never assigned in __init__: Method `test_terminal_with_partial_steps_nudges` of class `TestStepEnforcerCheck` reads `self.enforcer`, but no assignment to it exists…
MINED108
self.attribute used but never assigned in __init__
CWE-476
tests/unit/test_step_enforcer.py:63
· conf 1.00
[MINED108] `self.enforcer` used but never assigned in __init__: Method `test_non_terminal_tools_always_pass` of class `TestStepEnforcerCheck` reads `self.enforcer`, but no assignment to it exists in …
MINED108
self.attribute used but never assigned in __init__
CWE-476
tests/unit/test_step_enforcer.py:71
· conf 1.00
[MINED108] `self.enforcer` used but never assigned in __init__: Method `test_batch_with_terminal_and_others` of class `TestStepEnforcerCheck` reads `self.enforcer`, but no assignment to it exists in …
MINED108
self.attribute used but never assigned in __init__
CWE-476
tests/unit/test_step_enforcer.py:79
· conf 1.00
[MINED108] `self.enforcer` used but never assigned in __init__: Method `setup_method` of class `TestStepEnforcerRecord` reads `self.enforcer`, but no assignment to it exists in __init__ (and no class…
MINED108
self.attribute used but never assigned in __init__
CWE-476
tests/unit/test_step_enforcer.py:85
· conf 1.00
[MINED108] `self.enforcer` used but never assigned in __init__: Method `test_initially_not_satisfied` of class `TestStepEnforcerRecord` reads `self.enforcer`, but no assignment to it exists in __init…
MINED108
self.attribute used but never assigned in __init__
CWE-476
tests/unit/test_step_enforcer.py:88
· conf 1.00
[MINED108] `self.enforcer` used but never assigned in __init__: Method `test_partial_not_satisfied` of class `TestStepEnforcerRecord` reads `self.enforcer`, but no assignment to it exists in __init__…
MINED108
self.attribute used but never assigned in __init__
CWE-476
tests/unit/test_step_enforcer.py:89
· conf 1.00
[MINED108] `self.enforcer` used but never assigned in __init__: Method `test_partial_not_satisfied` of class `TestStepEnforcerRecord` reads `self.enforcer`, but no assignment to it exists in __init__…
MINED108
self.attribute used but never assigned in __init__
CWE-476
tests/unit/test_step_enforcer.py:90
· conf 1.00
[MINED108] `self.enforcer` used but never assigned in __init__: Method `test_partial_not_satisfied` of class `TestStepEnforcerRecord` reads `self.enforcer`, but no assignment to it exists in __init__…
MINED115
GitHub Action pinned to mutable ref (not 40-char SHA)
CWE-829
.github/workflows/tests.yml:17
· conf 0.90
[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-a…
MINED115
GitHub Action pinned to mutable ref (not 40-char SHA)
CWE-829
.github/workflows/tests.yml:20
· conf 0.90
[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 …
MINED115
GitHub Action pinned to mutable ref (not 40-char SHA)
CWE-829
.github/workflows/tests.yml:32
· conf 0.90
[MINED115] Action `codecov/codecov-action` pinned to mutable ref `@v5`: `uses: codecov/codecov-action@v5` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that m…
SEC029
Server-Side Request Forgery (SSRF) — outbound HTTP from user input
src/forge/proxy/proxy.py:81
· conf 1.00
[SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.25…
COMP001
[COMP001] High cognitive complexity: Function `load_yfinance_data` has cognitive complexity 9 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand — nested branches, boolean chains, and recursion all weigh in. Breakdown: except=1, for=1, if=2, nested_bonus=3, or=2.
src/forge/context/strategies.py:204
· conf 0.95
[COMP001] High cognitive complexity: Function `_phase1` has cognitive complexity 15 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand — nested bran…
MINED111
Bare except continues silently
src/forge/core/runner.py:324
· conf 1.00
[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.
MINED111
Bare except continues silently
src/forge/core/slot_worker.py:137
· conf 1.00
[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.
MINED111
Bare except continues silently
src/forge/proxy/server.py:98
· conf 1.00
[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.
MINED111
Bare except continues silently
tests/eval/batch_eval.py:473
· conf 1.00
[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.
MINED111
Bare except continues silently
tests/eval/eval_runner.py:293
· conf 1.00
[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.
MINED111
Bare except continues silently
tests/eval/eval_runner.py:303
· conf 1.00
[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.
MINED111
Bare except continues silently
tests/eval/eval_runner.py:338
· conf 1.00
[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.
MINED111
Bare except continues silently
tests/eval/eval_runner.py:613
· conf 1.00
[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.
AIC003
Duplicated implementation block across source files
tests/eval/eval_runner.py:424
· conf 0.86
Duplicated implementation block across source files
AIC003
Duplicated implementation block across source files
tests/eval/scenarios/_stateful_model_quality.py:8
· conf 0.86
Duplicated implementation block across source files
AIC003
Duplicated implementation block across source files
tests/eval/scenarios/_stateful_plumbing.py:7
· conf 0.86
Duplicated implementation block across source files
COMP001
[COMP001] High cognitive complexity: Function `load_yfinance_data` has cognitive complexity 9 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand — nested branches, boolean chains, and recursion all weigh in. Breakdown: except=1, for=1, if=2, nested_bonus=3, or=2.
scripts/smoke_test_proxy.py:71
· conf 0.95
[COMP001] High cognitive complexity: Function `mock_backend_with_health` has cognitive complexity 10 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to underst…
COMP001
[COMP001] High cognitive complexity: Function `load_yfinance_data` has cognitive complexity 9 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand — nested branches, boolean chains, and recursion all weigh in. Breakdown: except=1, for=1, if=2, nested_bonus=3, or=2.
· conf 0.20
[COMP001] High cognitive complexity (and 15 more): Same pattern found in 15 additional files. Review if needed.
MINED043
Http Not Https
CWE-319
src/forge/proxy/proxy.py:111
· conf 1.00
[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data.
MINED050
Stub Only Function
CWE-1188
· conf 0.20
[MINED050] Stub Only Function (and 2 more): Same pattern found in 2 additional files. Review if needed.
MINED050
Stub Only Function
CWE-1188
src/forge/clients/base.py:105
· conf 1.00
[MINED050] Stub Only Function: Function declared but body is just pass, return None, raise NotImplementedError, or TODO comment.
MINED050
Stub Only Function
CWE-1188
src/forge/context/strategies.py:48
· conf 1.00
[MINED050] Stub Only Function: Function declared but body is just pass, return None, raise NotImplementedError, or TODO comment.
MINED050
Stub Only Function
CWE-1188
src/forge/core/slot_worker.py:55
· conf 1.00
[MINED050] Stub Only Function: Function declared but body is just pass, return None, raise NotImplementedError, or TODO comment.
MINED062
Python Dataclass No Fields
· conf 0.20
[MINED062] Python Dataclass No Fields (and 8 more): Same pattern found in 8 additional files. Review if needed.
MINED062
Python Dataclass No Fields
src/forge/clients/base.py:13
· conf 1.00
[MINED062] Python Dataclass No Fields: @dataclass over an empty class — unfinished model.
MINED062
Python Dataclass No Fields
src/forge/context/hardware.py:29
· conf 1.00
[MINED062] Python Dataclass No Fields: @dataclass over an empty class — unfinished model.
MINED062
Python Dataclass No Fields
src/forge/context/manager.py:12
· conf 1.00
[MINED062] Python Dataclass No Fields: @dataclass over an empty class — unfinished model.
MINED064
Python Input Call
src/forge/context/strategies.py:46
· conf 1.00
[MINED064] Python Input Call: input() blocks for stdin. Inappropriate in services.
Reading from rp.scan + rp.finding + rp.rule (unified schema, R78 series). Legacy data path unchanged. Compare with /scan/7430f221-46c3-4fa9-9c80-8e0d3e844062/.