Scan timing: clone 18.72s · analysis 21.0s · 22.3 MB · GitHub API rate-limit (preflight)
https://github.com/bbartling/open-fdd
· scanned 2026-06-05 13:06 UTC (5 days, 7 hours ago)
· 10 languages
579 raw signals (213 security + 366 graph) 61st percentile · Python · medium (20-100K LoC) System graph score 47 (higher by 24)
Last scanned 5 days, 7 hours ago · v2 · 248 actionable findings from 2 signal sources. 148 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
| Component | Sub-score | Weight | Contribution |
|---|---|---|---|
structure_score |
60.0 | 0.15 | 9.00 |
security_score |
59.0 | 0.25 | 14.75 |
testing_score |
100.0 | 0.20 | 20.00 |
documentation_score |
84.0 | 0.15 | 12.60 |
practices_score |
76.0 | 0.15 | 11.40 |
code_quality |
33.2 | 0.10 | 3.32 |
| Overall | 1.00 | 71.1 |
Showing 208 of 248 actionable findings. 396 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.
workspace/api/static/app/assets/index-TRH4YIfA.js:3308
bacnet_toolshed/discover_devices.py:113bacnet_toolshed/discover_points.py:175workspace/api/openfdd_bridge/zone_temp_analytics.py:314workspace/api/static/app/assets/index-TRH4YIfA.js:3962
infra/ansible/edge_operational_sync.yml:51
infra/ansible/tasks/post_deploy_check.yml:274
scripts/push_ahu_setpoints.py:39
workspace/api/openfdd_bridge/auth.py:76
bacnet_toolshed/smoke_whois.py:76
scripts/edge_restore_bacnet_inventory.sh:28
bacnet_toolshed/commission_agent.py:481, 486, 489, 493, 498, 500, 610, 612, +1 more (9 hits)workspace/api/openfdd_bridge/feather_store.py:159, 192, 195, 225, 242, 274, 284, 287, +1 more (9 hits)tests/workspace_bridge/conftest.py:55, 58, 61, 64, 67, 70 (6 hits)workspace/api/openfdd_bridge/playground.py:86workspace/data/rules_py/__pycache__/acme_zone_temp_flatline_1h.cpython-312.pyc:1
docker/Dockerfile:6, 13 (2 hits)workspace/api/openfdd_bridge/routes/bacnet_routes.py:288
workspace/api/openfdd_bridge/routes/bacnet_routes.py:283
workspace/api/openfdd_bridge/routes/bacnet_routes.py:293
workspace/api/openfdd_bridge/routes/bacnet_routes.py:271
workspace/api/openfdd_bridge/routes/bacnet_routes.py:299
workspace/api/openfdd_bridge/routes/bacnet_routes.py:259
workspace/api/openfdd_bridge/routes/bacnet_routes.py:313
workspace/api/openfdd_bridge/routes/bacnet_routes.py:250
workspace/api/openfdd_bridge/routes/bacnet_routes.py:236
workspace/api/openfdd_bridge/routes/bacnet_routes.py:216
workspace/api/openfdd_bridge/routes/bacnet_routes.py:365
workspace/api/openfdd_bridge/routes/bacnet_routes.py:444
workspace/api/openfdd_bridge/routes/bacnet_routes.py:355
workspace/api/openfdd_bridge/routes/bacnet_routes.py:331
workspace/api/openfdd_bridge/routes/bacnet_routes.py:343
workspace/api/openfdd_bridge/routes/bacnet_routes.py:373
workspace/api/openfdd_bridge/routes/bacnet_routes.py:323
workspace/api/openfdd_bridge/routes/bacnet_routes.py:381
workspace/api/openfdd_bridge/routes/modbus_routes.py:77
workspace/api/openfdd_bridge/routes/rules_routes.py:225
workspace/api/openfdd_bridge/routes/bacnet_routes.py:501
workspace/api/openfdd_bridge/routes/bacnet_routes.py:491
workspace/api/openfdd_bridge/routes/auth_routes.py:20
workspace/mcp_rag/app.py:95
workspace/mcp_rag/app.py:88
.github/workflows/docs-pdf.yml:58 (2 hits).github/workflows/publish-open-fdd.yml:82 (2 hits).github/workflows/ci.yml:140.github/workflows/docs-pages.yml:30.github/workflows/ci.yml:27, 32, 65, 68, 84, 87, 91, 113, +2 more (12 hits).github/workflows/docs-pages.yml:29, 43, 57 (4 hits).github/workflows/publish-open-fdd.yml:24, 27 (4 hits).github/workflows/docs-pdf.yml:30, 33 (2 hits)workspace/api/openfdd_bridge/routes/playground_routes.py:116
scripts/setup_bench_afdd.py:168
.pre-commit-config.yaml:2
workspace/dashboard/src/pages/LoginPage.tsx:64
workspace/api/openfdd_bridge/routes/bacnet_routes.py:292
securityAuth fastapi unauth mutation
workspace/api/openfdd_bridge/routes/bacnet_routes.py:287
securityAuth fastapi unauth mutation
workspace/api/openfdd_bridge/routes/bacnet_routes.py:282
securityAuth fastapi unauth mutation
workspace/api/openfdd_bridge/routes/bacnet_routes.py:298
securityAuth fastapi unauth mutation
workspace/api/openfdd_bridge/routes/bacnet_routes.py:270
securityAuth fastapi unauth mutation
workspace/api/openfdd_bridge/routes/bacnet_routes.py:258
securityAuth fastapi unauth mutation
workspace/api/openfdd_bridge/routes/agent_routes.py:136
securityAuth fastapi unauth mutation
workspace/api/openfdd_bridge/routes/bacnet_routes.py:312
securityAuth fastapi unauth mutation
workspace/api/openfdd_bridge/routes/bacnet_routes.py:215
securityAuth fastapi unauth mutation
workspace/api/openfdd_bridge/routes/bacnet_routes.py:249
securityAuth fastapi unauth mutation
workspace/api/openfdd_bridge/routes/bacnet_routes.py:364
securityAuth fastapi unauth mutation
workspace/api/openfdd_bridge/routes/bacnet_routes.py:342
securityAuth fastapi unauth mutation
workspace/api/openfdd_bridge/routes/bacnet_routes.py:354
securityAuth fastapi unauth mutation
workspace/api/openfdd_bridge/routes/bacnet_routes.py:330
securityAuth fastapi unauth mutation
workspace/api/openfdd_bridge/routes/bacnet_routes.py:372
securityAuth fastapi unauth mutation
workspace/api/openfdd_bridge/routes/bacnet_routes.py:235
securityAuth fastapi unauth mutation
workspace/api/openfdd_bridge/routes/bacnet_routes.py:443
securityAuth fastapi unauth mutation
workspace/api/openfdd_bridge/routes/bacnet_routes.py:322
securityAuth fastapi unauth mutation
workspace/api/openfdd_bridge/routes/bacnet_routes.py:380
securityAuth fastapi unauth mutation
workspace/mcp_rag/app.py:94
securityAuth fastapi unauth mutation
workspace/api/openfdd_bridge/routes/bacnet_routes.py:500
securityAuth fastapi unauth mutation
workspace/api/openfdd_bridge/routes/bacnet_routes.py:490
securityAuth fastapi unauth mutation
workspace/api/openfdd_bridge/routes/playground_routes.py:110
securityAuth fastapi unauth mutation
workspace/api/openfdd_bridge/routes/modbus_routes.py:76
securityAuth fastapi unauth mutation
workspace/api/openfdd_bridge/routes/playground_routes.py:221
securityAuth fastapi unauth mutation
workspace/api/openfdd_bridge/routes/agent_routes.py:63
securityAuth fastapi unauth mutation
workspace/api/openfdd_bridge/routes/rules_routes.py:224
securityAuth fastapi unauth mutation
workspace/mcp_rag/app.py:87
securityAuth fastapi unauth mutation
workspace/api/openfdd_bridge/routes/playground_routes.py:115
securityAuth fastapi unauth mutation
open_fdd/engine/checks.py:115
Eval used
open_fdd/playground/rule_lab.py:199
Exec used
open_fdd/playground/sandbox.py:181
Exec used
workspace/api/openfdd_bridge/playground.py:291
Exec used
workspace/api/openfdd_bridge/playground_exec.py:55
workspace/api/openfdd_bridge/brick_model_context.py:171
workspace/api/openfdd_bridge/auth.py:124
infra/ansible/group_vars/pi_bcn.yml:63
docker/bridge-entrypoint.sh:10
bacnet_toolshed/commission_agent.py:219, 649, 658, 667, 676, 685 (6 hits)bacnet_toolshed/bacnet_poll_loop.py:87, 115 (2 hits)bacnet_toolshed/discover.py:96, 103 (2 hits)bacnet_toolshed/discover_points.py:63, 71 (2 hits)workspace/api/openfdd_bridge/ollama_client.py:258, 342 (2 hits)workspace/api/openfdd_bridge/playground.py:190, 315 (2 hits)bacnet_toolshed/bacnet_ops.py:167bacnet_toolshed/discover_lib.py:121workspace/dashboard/src/lib/api.ts:55, 133, 143 (3 hits)docker/Dockerfile:83
CI/CD securitycontainers
workspace/dashboard/package.json
.well-known/security.txt
bacnet_toolshed/requirements.txt
scripts/bootstrap_ollama.sh:104
repo-level (9 hits).github/workflows/docker-publish.yml.github/workflows/docs-pages.yml.github/workflows/docs-pdf.yml.github/workflows/publish-open-fdd.ymldocker/bacnet-commission-entrypoint.sh
Ports
infra/ansible/group_vars/pi_bcn.yml
Ports
docker/compose.bench.yml
Ports
docker/bacnet-poll-entrypoint.sh
Ports
infra/ansible/group_vars/pi_bcn.yml
Ports
.dockerignore
CI/CD securitycontainers
docker/Dockerfile:34, 40, 86 (3 hits)workspace/api/openfdd_bridge/runtime_metrics.py:49, 52 (2 hits)workspace/data/rules_py/bench_oa-t_flatline_1h.py:1, 17 (2 hits)workspace/data/rules_py/bench_oa-t_out_of_bounds.py:1, 2 (2 hits)workspace/data/rules_py/bench_stat_zn-t_flatline_1h.py:1, 17 (2 hits)workspace/data/rules_py/duct-t_flatline_1h.py:1, 17 (2 hits)workspace/data/rules_py/flatline_1h.py:3, 8 (2 hits)workspace/data/rules_py/oob_rolling.py:1, 2 (2 hits)scripts/merge_poll_discovery_gap.py:8workspace/dashboard/package.json
workspace/dashboard/package.json
docker/Dockerfile:6
containersPinned dependencies
docker/Dockerfile:13
containersPinned dependencies
workspace/dashboard/src/lib/ttlPopup.ts:25
Document write
repo-level (11 hits)repo-level (4 hits)examples/AHU/openfdd_notebook_helpers_v2.py:62
workspace/api/openfdd_bridge/auth.py:63
workspace/api/openfdd_bridge/site_pack.py:129
workspace/api/openfdd_bridge/commission_client.py:150
workspace/api/openfdd_bridge/timeseries_api.py:50
workspace/api/openfdd_bridge/commission_client.py:177
workspace/api/openfdd_bridge/playground.py:419
workspace/api/openfdd_bridge/model_service.py:44
workspace/api/openfdd_bridge/fdd_row_prep.py:183
examples/AHU/openfdd_notebook_helpers_v2.py:17
scripts/gl36_mechanical_validate.py:50
workspace/api/openfdd_bridge/paths.py:52
examples/AHU/openfdd_notebook_helpers_v2.py:101
workspace/api/openfdd_bridge/timeseries_api.py:68
workspace/api/openfdd_bridge/deps.py:9
workspace/api/openfdd_bridge/paths.py:60
workspace/api/openfdd_bridge/rule_bindings.py:95
workspace/api/openfdd_bridge/rule_store.py:56
examples/AHU/openfdd_notebook_helpers_v2.py:33
workspace/api/openfdd_bridge/site_pack.py:239
scripts/build_docs_pdf.py:176
examples/AHU/openfdd_notebook_helpers_v2.py:75
examples/AHU/openfdd_notebook_helpers_v2.py:52
This page is publicly accessible at:
https://repobility.com/scan/263848d0-b8f2-4c3c-acce-63b1e80054da/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/263848d0-b8f2-4c3c-acce-63b1e80054da/
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.