{"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": "scanner-1c6b09bc490f9767", "name": "Possibly dead Python function: prefetch_snapshot", "shortDescription": {"text": "Possibly dead Python function: prefetch_snapshot"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-82315d7bd97bdfc8", "name": "Possibly dead Python function: register_commit_hook", "shortDescription": {"text": "Possibly dead Python function: register_commit_hook"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-50285253dad5e95f", "name": "Possibly dead Python function: lagre", "shortDescription": {"text": "Possibly dead Python function: lagre"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d65dfc0db2c5dcea", "name": "Possibly dead Python function: prune_snapshots_worker", "shortDescription": {"text": "Possibly dead Python function: prune_snapshots_worker"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-108c3981a15be10c", "name": "Possibly dead Python function: shutdown", "shortDescription": {"text": "Possibly dead Python function: shutdown"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fe88b1da8e3315a3", "name": "Possibly dead Python function: load_today_lines", "shortDescription": {"text": "Possibly dead Python function: load_today_lines"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6b07634df8c48b3e", "name": "Possibly dead Python function: register_routes", "shortDescription": {"text": "Possibly dead Python function: register_routes"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0bcc3d9a51dc54cd", "name": "Possibly dead Python function: deco", "shortDescription": {"text": "Possibly dead Python function: deco"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-644538dbaa5ab862", "name": "Possibly dead Python function: do_restart", "shortDescription": {"text": "Possibly dead Python function: do_restart"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3269c013a8140469", "name": "Possibly dead Python function: log_message", "shortDescription": {"text": "Possibly dead Python function: log_message"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-29f7968cef654416", "name": "Possibly dead Python function: do_GET", "shortDescription": {"text": "Possibly dead Python function: do_GET"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a29a431526d75b7d", "name": "Possibly dead Python function: do_POST", "shortDescription": {"text": "Possibly dead Python function: do_POST"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8bdb7cbfe0ab68f6", "name": "Insecure pattern 'direct_innerhtml_assignment' in core/static/settings.js:123", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in core/static/settings.js:123"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6c491e8184412884", "name": "Insecure pattern 'direct_innerhtml_assignment' in core/static/statistikk.js:20", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in core/static/statistikk.js:20"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d4c55242e5f3f4ab", "name": "Insecure pattern 'direct_innerhtml_assignment' in core/static/events.js:36", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in core/static/events.js:36"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4849aca86257d38b", "name": "Insecure pattern 'direct_innerhtml_assignment' in core/static/skilt_settings.js:97", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in core/static/skilt_settings.js:97"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f92bf17d51ac7fe1", "name": "Insecure pattern 'direct_innerhtml_assignment' in core/static/ukjente.js:30", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in core/static/ukjente.js:30"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-02e90a7d57e088fa", "name": "Insecure pattern 'direct_innerhtml_assignment' in core/static/docs.js:101", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in core/static/docs.js:101"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-53bf30b7e5391bd3", "name": "Insecure pattern 'direct_innerhtml_assignment' in core/static/app.js:74", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in core/static/app.js:74"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b51f0dadab5e7c54", "name": "Insecure pattern 'direct_innerhtml_assignment' in core/static/logg.js:49", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in core/static/logg.js:49"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "0 test file(s) for 15 source file(s) (ratio 0.00). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, tests. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b5e7fe66c2e5f0d4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 core/static/settings.js:80", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 core/static/settings.js:80"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dab71192a1b51632", "name": "`fetch()` without try/.catch or AbortSignal \u2014 core/static/statistikk.js:9", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 core/static/statistikk.js:9"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-525214e2cd3c14bb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 core/static/events.js:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 core/static/events.js:28"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-490c43c096923068", "name": "`fetch()` without try/.catch or AbortSignal \u2014 core/static/skilt_settings.js:244", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 core/static/skilt_settings.js:244"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-116ffd6bc311233f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 core/static/ukjente.js:22", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 core/static/ukjente.js:22"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8b7d0918d929ca69", "name": "`fetch()` without try/.catch or AbortSignal \u2014 core/static/docs.js:200", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 core/static/docs.js:200"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6879347a09cdb3a4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 core/static/app.js:48", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 core/static/app.js:48"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-28f7125161507007", "name": "`fetch()` without try/.catch or AbortSignal \u2014 core/static/logg.js:87", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 core/static/logg.js:87"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-436a975c69e57b29", "name": "Commented-code block (5 lines) in core/olpr_core/web.py:533", "shortDescription": {"text": "Commented-code block (5 lines) in core/olpr_core/web.py:533"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-937661ef6a52e83f", "name": "Stub function `log_message` (body is just `pass`/`return`) \u2014 core/olpr_core/web.py:1130", "shortDescription": {"text": "Stub function `log_message` (body is just `pass`/`return`) \u2014 core/olpr_core/web.py:1130"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\ncore/olpr_core/config.py:load_skilt, core/olpr_core/bridge.py:load_kjente_skilt\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/20593"}, "properties": {"repository": "SveleOla/OLPR", "repoUrl": "https://github.com/SveleOla/OLPR", "branch": "main"}, "results": [{"ruleId": "scanner-1c6b09bc490f9767", "level": "note", "message": {"text": "Possibly dead Python function: prefetch_snapshot"}, "properties": {"repobilityId": "a24370e1013ed227", "scanner": "scanner-primary", "fingerprint": "1c6b09bc490f9767", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/olpr_core/bridge.py:191"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-82315d7bd97bdfc8", "level": "note", "message": {"text": "Possibly dead Python function: register_commit_hook"}, "properties": {"repobilityId": "b50f2ce9eeec2708", "scanner": "scanner-primary", "fingerprint": "82315d7bd97bdfc8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/olpr_core/bridge.py:316"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-50285253dad5e95f", "level": "note", "message": {"text": "Possibly dead Python function: lagre"}, "properties": {"repobilityId": "282140ae9c8d7f6a", "scanner": "scanner-primary", "fingerprint": "50285253dad5e95f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/olpr_core/bridge.py:373"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d65dfc0db2c5dcea", "level": "note", "message": {"text": "Possibly dead Python function: prune_snapshots_worker"}, "properties": {"repobilityId": "24038f758eec8b5b", "scanner": "scanner-primary", "fingerprint": "d65dfc0db2c5dcea", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/olpr_core/bridge.py:413"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-108c3981a15be10c", "level": "note", "message": {"text": "Possibly dead Python function: shutdown"}, "properties": {"repobilityId": "c1b7442732df40cc", "scanner": "scanner-primary", "fingerprint": "108c3981a15be10c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/olpr_core/bridge.py:573"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fe88b1da8e3315a3", "level": "note", "message": {"text": "Possibly dead Python function: load_today_lines"}, "properties": {"repobilityId": "edf4e4f9929047a4", "scanner": "scanner-primary", "fingerprint": "fe88b1da8e3315a3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/olpr_core/web.py:228"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6b07634df8c48b3e", "level": "note", "message": {"text": "Possibly dead Python function: register_routes"}, "properties": {"repobilityId": "7a3c0600b872cd98", "scanner": "scanner-primary", "fingerprint": "6b07634df8c48b3e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/olpr_core/web.py:554"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0bcc3d9a51dc54cd", "level": "note", "message": {"text": "Possibly dead Python function: deco"}, "properties": {"repobilityId": "11da05572c448654", "scanner": "scanner-primary", "fingerprint": "0bcc3d9a51dc54cd", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/olpr_core/web.py:562"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-644538dbaa5ab862", "level": "note", "message": {"text": "Possibly dead Python function: do_restart"}, "properties": {"repobilityId": "8d248197acdf7da9", "scanner": "scanner-primary", "fingerprint": "644538dbaa5ab862", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/olpr_core/web.py:965"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3269c013a8140469", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "3269c013a8140469", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/olpr_core/web.py:1130"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-29f7968cef654416", "level": "note", "message": {"text": "Possibly dead Python function: do_GET"}, "properties": {"repobilityId": "2d943bb45e4f13bd", "scanner": "scanner-primary", "fingerprint": "29f7968cef654416", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/olpr_core/web.py:1173"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a29a431526d75b7d", "level": "note", "message": {"text": "Possibly dead Python function: do_POST"}, "properties": {"repobilityId": "53357410ca9379a9", "scanner": "scanner-primary", "fingerprint": "a29a431526d75b7d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/olpr_core/web.py:1213"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-8bdb7cbfe0ab68f6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in core/static/settings.js:123"}, "properties": {"repobilityId": "2ee2ae362ee14044", "scanner": "scanner-primary", "fingerprint": "8bdb7cbfe0ab68f6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/static/settings.js"}, "region": {"startLine": 123}}}]}, {"ruleId": "scanner-6c491e8184412884", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in core/static/statistikk.js:20"}, "properties": {"repobilityId": "066f109277b3e27a", "scanner": "scanner-primary", "fingerprint": "6c491e8184412884", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/static/statistikk.js"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-d4c55242e5f3f4ab", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in core/static/events.js:36"}, "properties": {"repobilityId": "34c59000e8fd6f71", "scanner": "scanner-primary", "fingerprint": "d4c55242e5f3f4ab", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/static/events.js"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-4849aca86257d38b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in core/static/skilt_settings.js:97"}, "properties": {"repobilityId": "5743becfca419152", "scanner": "scanner-primary", "fingerprint": "4849aca86257d38b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/static/skilt_settings.js"}, "region": {"startLine": 97}}}]}, {"ruleId": "scanner-f92bf17d51ac7fe1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in core/static/ukjente.js:30"}, "properties": {"repobilityId": "bb55c3471ab05c3d", "scanner": "scanner-primary", "fingerprint": "f92bf17d51ac7fe1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/static/ukjente.js"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-02e90a7d57e088fa", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in core/static/docs.js:101"}, "properties": {"repobilityId": "c67418637f053a50", "scanner": "scanner-primary", "fingerprint": "02e90a7d57e088fa", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/static/docs.js"}, "region": {"startLine": 101}}}]}, {"ruleId": "scanner-53bf30b7e5391bd3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in core/static/app.js:74"}, "properties": {"repobilityId": "59e92f45a51d1c4b", "scanner": "scanner-primary", "fingerprint": "53bf30b7e5391bd3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/static/app.js"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-b51f0dadab5e7c54", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in core/static/logg.js:49"}, "properties": {"repobilityId": "5327dd8a78745287", "scanner": "scanner-primary", "fingerprint": "b51f0dadab5e7c54", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/static/logg.js"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "a4c8268f95a88a25", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "3849dc8ae403356d", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "b754986ce0ca53b1", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "638399f00a7f9a93", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "6c61edbe6537e71c", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-b5e7fe66c2e5f0d4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 core/static/settings.js:80"}, "properties": {"repobilityId": "5148623c524394ea", "scanner": "scanner-primary", "fingerprint": "b5e7fe66c2e5f0d4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dab71192a1b51632", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 core/static/statistikk.js:9"}, "properties": {"repobilityId": "4d414b63a3fefb76", "scanner": "scanner-primary", "fingerprint": "dab71192a1b51632", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-525214e2cd3c14bb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 core/static/events.js:28"}, "properties": {"repobilityId": "8e13d1d26ecce1a0", "scanner": "scanner-primary", "fingerprint": "525214e2cd3c14bb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-490c43c096923068", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 core/static/skilt_settings.js:244"}, "properties": {"repobilityId": "bee9e25685a4c3e8", "scanner": "scanner-primary", "fingerprint": "490c43c096923068", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-116ffd6bc311233f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 core/static/ukjente.js:22"}, "properties": {"repobilityId": "ce60d114fb9bf4df", "scanner": "scanner-primary", "fingerprint": "116ffd6bc311233f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8b7d0918d929ca69", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 core/static/docs.js:200"}, "properties": {"repobilityId": "e6d0eb4731bc5b3a", "scanner": "scanner-primary", "fingerprint": "8b7d0918d929ca69", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6879347a09cdb3a4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 core/static/app.js:48"}, "properties": {"repobilityId": "986bd68cab52b034", "scanner": "scanner-primary", "fingerprint": "6879347a09cdb3a4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-28f7125161507007", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 core/static/logg.js:87"}, "properties": {"repobilityId": "9e94689b9a3ed7da", "scanner": "scanner-primary", "fingerprint": "28f7125161507007", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-436a975c69e57b29", "level": "none", "message": {"text": "Commented-code block (5 lines) in core/olpr_core/web.py:533"}, "properties": {"repobilityId": "67aaa823e266e468", "scanner": "scanner-primary", "fingerprint": "436a975c69e57b29", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-937661ef6a52e83f", "level": "note", "message": {"text": "Stub function `log_message` (body is just `pass`/`return`) \u2014 core/olpr_core/web.py:1130"}, "properties": {"repobilityId": "103b2eb549c9b600", "scanner": "scanner-primary", "fingerprint": "937661ef6a52e83f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "15c95d4a9d82b9d9", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "dac5560ec21bb88c", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}