Public scan — anyone with this URL can view this analysis. Sign up to track your own repos privately, run scheduled re-scans, and get AI fix prompts via your dashboard.
150 of your 228 findings came from Repobility's proprietary detections. ✓ Repobility tags below mark them.
Upstream (GitHub) caused delay on this scan — not Repobility.
  • GitHub API rate-limited (HTTP 403) — preflight skipped, fell back to direct git clone.
  • Clone from GitHub took 88.02s for a 822.6 MB repo slow.
  • Repobility's analysis ran in 9.72s after the clone landed.

abbas-ahmad-cowlar/LSTM_PFD

https://github.com/abbas-ahmad-cowlar/LSTM_PFD · scanned 2026-06-16 02:50 UTC (2 months, 1 week ago) · 10 languages

530 raw signals (237 security + 293 graph) 100th percentile · Python · large (100-500K LoC)

UNIFIED Repobility · multi-layer engine · AI coders

Complete repo analysis

Last scanned 2 months, 1 week ago · v5 · 100 actionable findings from 2 signal sources. 269 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.

JSON
Score breakdown â 2026-05-18-v5
Component Sub-score Weight Contribution
structure_score 60.0 0.15 9.00
security_score 100.0 0.25 25.00
testing_score 61.0 0.20 12.20
documentation_score 95.0 0.15 14.25
practices_score 88.0 0.15 13.20
code_quality 60.0 0.10 6.00
Overall 1.00 79.7
security_score may be inflated — optional security scanners were skipped on this fast scan
Severity distribution — click a segment to filter
Active filters: severity: high × excluding tests × Reset all
Corpus Intelligence Cross-corpus context (cohort percentile, top patterns, fix plan) is shown only on repositories you own. Sign up and connect your repo to view it.
Scan summary Repository scanned at 94.8/100 with 88.9% coverage. It contains 40 nodes across 0 cross-layer flows, written primarily in mixed languages. Engine surfaced 7 findings — concentrated in quality (3), hardware (2), frontend (1). Risk profile is low: 0 critical, 0 high, 1 medium. Recommended next step: open the quality layer findings first — that's where the highest-impact wins live.

Showing 25 of 100 actionable findings. 369 raw detector signals were grouped into reader-sized issues. Click TP / FP to vote on a finding's accuracy — votes adjust the confidence weighting and improve detection across the platform.

high Security checks quality Quality conf 1.00 ✓ Repobility 24 occurrences [MINED107] Missing import: `signal` used but not imported: The file uses `signal.something(...)` but never imports `signal`. This raises NameError at runtime the first time the line executes.
Add `import signal` at the top of the file.
12 files, 12 locations
data/dataset.py:367
data/signal_augmentation.py:138
data/transforms.py:398
packages/core/evaluation/physics_interpretability.py:325
packages/core/explainability/integrated_gradients.py:273
packages/core/explainability/shap_explainer.py:434
packages/core/explainability/uncertainty_quantification.py:425
packages/core/training/advanced_augmentation.py:189
high Security checks quality Quality conf 1.00 ✓ Repobility [MINED020] Logging Credential Via Fstring: logger.error(f"failed for {api_key}") — secrets end up in log aggregators / sentry.
Review and fix per the pattern semantics. See CWE-532 / A09:2021 for context.
packages/dashboard/middleware/rate_limiter.py:123
high Security checks quality Quality conf 1.00 ✓ Repobility [MINED020] Logging Credential Via Fstring: logger.error(f"failed for {api_key}") — secrets end up in log aggregators / sentry.
Review and fix per the pattern semantics. See CWE-532 / A09:2021 for context.
packages/dashboard/middleware/api_key_auth.py:89
high Security checks quality Quality conf 1.00 ✓ Repobility [MINED106] Phantom test coverage: test_augmentations: Test function `test_augmentations` runs code but contains no assert / expect / should call — it passes regardless of behaviour. Adds line coverage without verifying anything.
Add an explicit assertion that captures the test's intent, or remove the test.
data/signal_augmentation.py:421
high Security checks quality Quality conf 1.00 ✓ Repobility [MINED106] Phantom test coverage: test_callbacks: Test function `test_callbacks` runs code but contains no assert / expect / should call — it passes regardless of behaviour. Adds line coverage without verifying anything.
Add an explicit assertion that captures the test's intent, or remove the test.
packages/core/training/cnn_callbacks.py:457
high Security checks quality Quality conf 1.00 ✓ Repobility [MINED106] Phantom test coverage: test_checkpoint_manager: Test function `test_checkpoint_manager` runs code but contains no assert / expect / should call — it passes regardless of behaviour. Adds line coverage without verifying anything.
Add an explicit assertion that captures the test's intent, or remove the test.
utils/checkpoint_manager.py:358
high Security checks quality Quality conf 1.00 ✓ Repobility [MINED106] Phantom test coverage: test_cnn_analyzer: Test function `test_cnn_analyzer` runs code but contains no assert / expect / should call — it passes regardless of behaviour. Adds line coverage without verifying anything.
Add an explicit assertion that captures the test's intent, or remove the test.
visualization/cnn_analysis.py:569
high Security checks quality Quality conf 1.00 ✓ Repobility [MINED106] Phantom test coverage: test_cnn_visualizer: Test function `test_cnn_visualizer` runs code but contains no assert / expect / should call — it passes regardless of behaviour. Adds line coverage without verifying anything.
Add an explicit assertion that captures the test's intent, or remove the test.
visualization/cnn_visualizer.py:435
high Security checks quality Quality conf 1.00 ✓ Repobility [MINED106] Phantom test coverage: test_early_stopping: Test function `test_early_stopping` runs code but contains no assert / expect / should call — it passes regardless of behaviour. Adds line coverage without verifying anything.
Add an explicit assertion that captures the test's intent, or remove the test.
utils/early_stopping.py:284
high Security checks quality Quality conf 1.00 ✓ Repobility [MINED106] Phantom test coverage: test_ood_generalization: Test function `test_ood_generalization` runs code but contains no assert / expect / should call — it passes regardless of behaviour. Adds line coverage without verifying anything.
Add an explicit assertion that captures the test's intent, or remove the test.
packages/core/evaluation/pinn_evaluator.py:312
high Security checks quality Quality conf 1.00 ✓ Repobility [MINED106] Phantom test coverage: test_optimizers: Test function `test_optimizers` runs code but contains no assert / expect / should call — it passes regardless of behaviour. Adds line coverage without verifying anything.
Add an explicit assertion that captures the test's intent, or remove the test.
packages/core/training/cnn_optimizer.py:333
high Security checks quality Quality conf 1.00 ✓ Repobility [MINED106] Phantom test coverage: test_robustness: Test function `test_robustness` runs code but contains no assert / expect / should call — it passes regardless of behaviour. Adds line coverage without verifying anything.
Add an explicit assertion that captures the test's intent, or remove the test.
packages/dashboard/services/evaluation_service.py:225
high Security checks quality Quality conf 1.00 ✓ Repobility [MINED106] Phantom test coverage: test_sample_efficiency: Test function `test_sample_efficiency` runs code but contains no assert / expect / should call — it passes regardless of behaviour. Adds line coverage without verifying anything.
Add an explicit assertion that captures the test's intent, or remove the test.
packages/core/evaluation/pinn_evaluator.py:253
high Security checks quality Quality conf 1.00 ✓ Repobility [MINED106] Phantom test coverage: test_webhook: Test function `test_webhook` runs code but contains no assert / expect / should call — it passes regardless of behaviour. Adds line coverage without verifying anything.
Add an explicit assertion that captures the test's intent, or remove the test.
packages/dashboard/services/webhook_service.py:262
high Security checks quality Quality conf 1.00 ✓ Repobility [MINED106] Phantom test coverage: test_webhook_handler: Test function `test_webhook_handler` runs code but contains no assert / expect / should call — it passes regardless of behaviour. Adds line coverage without verifying anything.
Add an explicit assertion that captures the test's intent, or remove the test.
packages/dashboard/callbacks/webhook_callbacks.py:339
high Security checks quality Quality conf 1.00 ✓ Repobility 22 occurrences [MINED108] `self.signals` used but never assigned in __init__: Method `__getitem__` of class `AugmentedBearingDataset` reads `self.signals`, 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.
Initialize `self.signals = <default>` in __init__, or add a class-level default.
4 files, 22 locations
data/dataset.py:361, 362, 376, 453, 459, 467, 469, 474, +2 more (10 hits)
data/transforms.py:200, 234, 268 (6 hits)
tests/load_tests.py:259, 314, 367, 400, 434 (5 hits)
utils/early_stopping.py:271
high Security checks software dependencies conf 0.90 ✓ Repobility [MINED118] Dockerfile FROM `python:3.10-slim` not pinned by digest: `FROM python:3.10-slim` resolves the tag at build time. The registry CAN re-push a different image for the same tag, so every build is potentially different. Production images should pin to `image@sha256:...` for reproducibility + supply-chain integrity.
Replace with: `FROM python:3.10-slim@sha256:<digest>`. Get the digest from `docker manifest inspect`. Re-pin via a scheduled bot (Renovate, Dependabot).
packages/dashboard/Dockerfile:1
high Security checks software dependencies conf 0.90 ✓ Repobility [MINED118] Dockerfile FROM `python:3.10-slim` not pinned by digest: `FROM python:3.10-slim` resolves the tag at build time. The registry CAN re-push a different image for the same tag, so every build is potentially different. Production images should pin to `image@sha256:...` for reproducibility + supply-chain integrity.
Replace with: `FROM python:3.10-slim@sha256:<digest>`. Get the digest from `docker manifest inspect`. Re-pin via a scheduled bot (Renovate, Dependabot).
Dockerfile:5
high Security checks software dependencies conf 0.90 ✓ Repobility 7 occurrences [MINED131] pre-commit hook `https://github.com/psf/black` pinned to mutable rev `23.12.0`: `.pre-commit-config.yaml` references `https://github.com/psf/black` at `rev: 23.12.0`. If `{rev}` is a branch or version tag, the repo owner can push new code there and `pre-commit install --install-hooks` will fetch it on every developer's machine.
Pin to a commit SHA: `rev: <40-char-sha>` and bump it through `pre-commit autoupdate` (which writes to PRs that are reviewed).
lines 7, 15, 22, 30, 38, 55, 68
.pre-commit-config.yaml:7, 15, 22, 30, 38, 55, 68 (7 hits)
high Security checks quality Practices conf 0.84 50 occurrences Foundry mined bad chains: abbas-ahmad-cowlar/LSTM_PFD
Comment chain pattern product: bad_chains Repo: abbas-ahmad-cowlar/LSTM_PFD Thread: abbas-ahmad-cowlar/LSTM_PFD#9 Outcome: not_resolved_or_not_observed Thread label: thread_has_human_issue_without_fix_context Source graph label: source_backed_multi_signal_graph Reasons: source_graph_has_real_artifa…
50 occurrences
repo-level (50 hits)
high Security checks quality Quality conf 0.76 Foundry mined schema ui api mismatch: abbas-ahmad-cowlar/LSTM_PFD
Graph query export: Schema, UI, and API mismatch Query id: schema_ui_api_mismatch Query type: motif_query Intent: Assumption-check examples for data-path consistency across layers. Motif: schema_ui_api_mismatch Training usage: assumption_check Graph gold label: assumption_check Repo: abbas-ahmad-co…
high Security checks quality Testing conf 0.78 4 occurrences Foundry mined test ci gap after feedback: abbas-ahmad-cowlar/LSTM_PFD
Graph query export: Feedback exposes missing tests or CI Query id: test_ci_gap_after_feedback Query type: motif_query Intent: Hard negatives for feedback/fix chains without adequate guardrails. Motif: test_ci_gap_after_feedback Training usage: hard_negative Graph gold label: weak_supervision_needs_…
4 occurrences
repo-level (4 hits)
high Security checks cicd CI/CD security conf 0.82 Docker final stage has no non-root USER
Add a non-root USER in the final runtime stage after files and permissions are prepared.
packages/dashboard/Dockerfile:1 CI/CD securitycontainers
high Security checks cicd CI/CD security conf 0.62 4 occurrences Compose service lacks no-new-privileges hardening
Add `security_opt: ["no-new-privileges:true"]` unless the service has a documented need for privilege escalation.
2 files, 4 locations
packages/dashboard/docker-compose.yml:29, 46, 67 (3 hits)
docker-compose.yml:11
CI/CD securitycontainers
high Security checks cicd CI/CD security conf 0.72 Dockerfile keeps pip download cache
Use `pip install --no-cache-dir ...` in container builds.
Dockerfile:29 CI/CD securitycontainers
For AI agents: Voting guide (TP/FP) MCP manifest Stdio wrapper SARIF Integrate Findings queue Vote TP/FP on findings to calibrate the engine.
For AI agents + API integrations
Email me when this repo regresses
Free. We re-scan periodically; new criticals → your inbox. No signup required for the scan itself.
API access

This page is publicly accessible at: https://repobility.com/scan/ab5472af-7289-4dff-bfae-c9a06bc60c61/

To check status programmatically (no auth required):

curl -s https://repobility.com/api/v1/public/scan/ab5472af-7289-4dff-bfae-c9a06bc60c61/

Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.