{"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-253530ed18559a6a", "name": "Possibly dead Python function: collect_bind_surface", "shortDescription": {"text": "Possibly dead Python function: collect_bind_surface"}, "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-1f9d42120fad1efb", "name": "Possibly dead Python function: collect_container_egress", "shortDescription": {"text": "Possibly dead Python function: collect_container_egress"}, "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-52bdc4d2bf9ded7a", "name": "Possibly dead Python function: collect_traefik_chain", "shortDescription": {"text": "Possibly dead Python function: collect_traefik_chain"}, "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-a6ea5e8f1920cf13", "name": "Possibly dead Python function: collect_crowdsec", "shortDescription": {"text": "Possibly dead Python function: collect_crowdsec"}, "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-11f122651097fb56", "name": "Possibly dead Python function: collect_loki_liveness", "shortDescription": {"text": "Possibly dead Python function: collect_loki_liveness"}, "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-ac3f267c0281ad2f", "name": "Possibly dead Python function: collect_certs", "shortDescription": {"text": "Possibly dead Python function: collect_certs"}, "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-401fc2b4548f4fe4", "name": "Possibly dead Python function: collect_container_hardening", "shortDescription": {"text": "Possibly dead Python function: collect_container_hardening"}, "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-31960476c81aa018", "name": "Possibly dead Python function: collect_ssh_surface", "shortDescription": {"text": "Possibly dead Python function: collect_ssh_surface"}, "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-0dc8b75c775629d6", "name": "Possibly dead Python function: collect_drift", "shortDescription": {"text": "Possibly dead Python function: collect_drift"}, "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-48bd32b324276e7c", "name": "Possibly dead Python function: collect_journal", "shortDescription": {"text": "Possibly dead Python function: collect_journal"}, "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-7402bfb167cb4609", "name": "Possibly dead Python function: collect_adr_compliance", "shortDescription": {"text": "Possibly dead Python function: collect_adr_compliance"}, "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-2ffeda1a420bb6ae", "name": "Privileged port 72 in use", "shortDescription": {"text": "Privileged port 72 in use"}, "fullDescription": {"text": "Port 72 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-74dbaecc7c4e8c53", "name": "Privileged port 69 in use", "shortDescription": {"text": "Privileged port 69 in use"}, "fullDescription": {"text": "Port 69 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f6a968f950b0a3da", "name": "Privileged port 75 in use", "shortDescription": {"text": "Privileged port 75 in use"}, "fullDescription": {"text": "Port 75 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-52f0d4c374b77864", "name": "Privileged port 76 in use", "shortDescription": {"text": "Privileged port 76 in use"}, "fullDescription": {"text": "Port 76 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4e25b5cd994381a6", "name": "Privileged port 92 in use", "shortDescription": {"text": "Privileged port 92 in use"}, "fullDescription": {"text": "Port 92 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6f157ab07ee1b174", "name": "Privileged port 93 in use", "shortDescription": {"text": "Privileged port 93 in use"}, "fullDescription": {"text": "Port 93 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bde87604f7c080f6", "name": "Privileged port 94 in use", "shortDescription": {"text": "Privileged port 94 in use"}, "fullDescription": {"text": "Port 94 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f74e3ebb4dbd5bb0", "name": "Privileged port 169 in use", "shortDescription": {"text": "Privileged port 169 in use"}, "fullDescription": {"text": "Port 169 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e73628ff7be176cd", "name": "Privileged port 10 in use", "shortDescription": {"text": "Privileged port 10 in use"}, "fullDescription": {"text": "Port 10 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f97f379ed0549c9d", "name": "Privileged port 16 in use", "shortDescription": {"text": "Privileged port 16 in use"}, "fullDescription": {"text": "Port 16 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d0bcaa7733c681d1", "name": "Privileged port 70 in use", "shortDescription": {"text": "Privileged port 70 in use"}, "fullDescription": {"text": "Port 70 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-626a4bb72bc1f6a2", "name": "Privileged port 1 in use", "shortDescription": {"text": "Privileged port 1 in use"}, "fullDescription": {"text": "Port 1 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dbe4b34bd3bda448", "name": "Privileged port 4 in use", "shortDescription": {"text": "Privileged port 4 in use"}, "fullDescription": {"text": "Port 4 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8ca9e7d92fe59b37", "name": "Privileged port 5 in use", "shortDescription": {"text": "Privileged port 5 in use"}, "fullDescription": {"text": "Port 5 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-edc626f5f322a2ef", "name": "Privileged port 12 in use", "shortDescription": {"text": "Privileged port 12 in use"}, "fullDescription": {"text": "Port 12 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d0a2756e4af5b05d", "name": "Privileged port 19 in use", "shortDescription": {"text": "Privileged port 19 in use"}, "fullDescription": {"text": "Port 19 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ace91b8f87173714", "name": "Privileged port 51 in use", "shortDescription": {"text": "Privileged port 51 in use"}, "fullDescription": {"text": "Port 51 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "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-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-540f19ff72fcd351", "name": "Insecure pattern 'exec_used' in scripts/archived/diagnose-redis-immich.sh:62", "shortDescription": {"text": "Insecure pattern 'exec_used' in scripts/archived/diagnose-redis-immich.sh:62"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "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-14209e3239bbd363", "name": "Very large file: scripts/security-audit.sh (1612 lines)", "shortDescription": {"text": "Very large file: scripts/security-audit.sh (1612 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ab7b47c5305a29db", "name": "Very large file: scripts/btrfs-snapshot-backup.sh (1710 lines)", "shortDescription": {"text": "Very large file: scripts/btrfs-snapshot-backup.sh (1710 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "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 2 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-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 64 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "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-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci, tests. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "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-28412454df540cda", "name": "Flask mutation route `webhook` without `@login_required` \u2014 config/alert-discord-relay/relay.py:111", "shortDescription": {"text": "Flask mutation route `webhook` without `@login_required` \u2014 config/alert-discord-relay/relay.py:111"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-68c9d5e17d04d050", "name": "Unused endpoint: ANY /webhook", "shortDescription": {"text": "Unused endpoint: ANY /webhook"}, "fullDescription": {"text": "`config/alert-discord-relay/relay.py` declares `ANY /webhook` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/22415"}, "properties": {"repository": "vonrobak/fedora-homelab-containers", "repoUrl": "https://github.com/vonrobak/fedora-homelab-containers", "branch": "main"}, "results": [{"ruleId": "scanner-253530ed18559a6a", "level": "note", "message": {"text": "Possibly dead Python function: collect_bind_surface"}, "properties": {"repobilityId": "6a5af71c8aaa1106", "scanner": "scanner-primary", "fingerprint": "253530ed18559a6a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/security/posture-local.py:193"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1f9d42120fad1efb", "level": "note", "message": {"text": "Possibly dead Python function: collect_container_egress"}, "properties": {"repobilityId": "a4d3fe1803f470fd", "scanner": "scanner-primary", "fingerprint": "1f9d42120fad1efb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/security/posture-local.py:293"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-52bdc4d2bf9ded7a", "level": "note", "message": {"text": "Possibly dead Python function: collect_traefik_chain"}, "properties": {"repobilityId": "9e8f2e0eae445c04", "scanner": "scanner-primary", "fingerprint": "52bdc4d2bf9ded7a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/security/posture-local.py:416"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a6ea5e8f1920cf13", "level": "note", "message": {"text": "Possibly dead Python function: collect_crowdsec"}, "properties": {"repobilityId": "9d9b31b21202b835", "scanner": "scanner-primary", "fingerprint": "a6ea5e8f1920cf13", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/security/posture-local.py:554"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-11f122651097fb56", "level": "note", "message": {"text": "Possibly dead Python function: collect_loki_liveness"}, "properties": {"repobilityId": "51714b396fd6dbbc", "scanner": "scanner-primary", "fingerprint": "11f122651097fb56", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/security/posture-local.py:643"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ac3f267c0281ad2f", "level": "note", "message": {"text": "Possibly dead Python function: collect_certs"}, "properties": {"repobilityId": "d860e2eace9a1e46", "scanner": "scanner-primary", "fingerprint": "ac3f267c0281ad2f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/security/posture-local.py:729"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-401fc2b4548f4fe4", "level": "note", "message": {"text": "Possibly dead Python function: collect_container_hardening"}, "properties": {"repobilityId": "7c8202b41bf7f51b", "scanner": "scanner-primary", "fingerprint": "401fc2b4548f4fe4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/security/posture-local.py:817"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-31960476c81aa018", "level": "note", "message": {"text": "Possibly dead Python function: collect_ssh_surface"}, "properties": {"repobilityId": "aa9f7100594925ee", "scanner": "scanner-primary", "fingerprint": "31960476c81aa018", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/security/posture-local.py:947"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0dc8b75c775629d6", "level": "note", "message": {"text": "Possibly dead Python function: collect_drift"}, "properties": {"repobilityId": "59352e991b1afe2a", "scanner": "scanner-primary", "fingerprint": "0dc8b75c775629d6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/security/posture-local.py:1013"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-48bd32b324276e7c", "level": "note", "message": {"text": "Possibly dead Python function: collect_journal"}, "properties": {"repobilityId": "458e8d50debae8c3", "scanner": "scanner-primary", "fingerprint": "48bd32b324276e7c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/security/posture-local.py:1063"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7402bfb167cb4609", "level": "note", "message": {"text": "Possibly dead Python function: collect_adr_compliance"}, "properties": {"repobilityId": "5b80cec1ee4b6de2", "scanner": "scanner-primary", "fingerprint": "7402bfb167cb4609", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/security/posture-local.py:1137"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2ffeda1a420bb6ae", "level": "warning", "message": {"text": "Privileged port 72 in use"}, "properties": {"repobilityId": "b403bef2163fedb7", "scanner": "scanner-primary", "fingerprint": "2ffeda1a420bb6ae", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "config/traefik/dynamic/routers.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-74dbaecc7c4e8c53", "level": "warning", "message": {"text": "Privileged port 69 in use"}, "properties": {"repobilityId": "1effa2e6319f4133", "scanner": "scanner-primary", "fingerprint": "74dbaecc7c4e8c53", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "config/traefik/dynamic/routers.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f6a968f950b0a3da", "level": "warning", "message": {"text": "Privileged port 75 in use"}, "properties": {"repobilityId": "d378eb1c9eebd8b0", "scanner": "scanner-primary", "fingerprint": "f6a968f950b0a3da", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "config/prometheus/prometheus.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-52f0d4c374b77864", "level": "warning", "message": {"text": "Privileged port 76 in use"}, "properties": {"repobilityId": "2b79d5ed53660eac", "scanner": "scanner-primary", "fingerprint": "52f0d4c374b77864", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "config/prometheus/prometheus.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4e25b5cd994381a6", "level": "warning", "message": {"text": "Privileged port 92 in use"}, "properties": {"repobilityId": "e0cef6c90c8189a4", "scanner": "scanner-primary", "fingerprint": "4e25b5cd994381a6", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "config/prometheus/prometheus.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6f157ab07ee1b174", "level": "warning", "message": {"text": "Privileged port 93 in use"}, "properties": {"repobilityId": "a2801129f16a1ead", "scanner": "scanner-primary", "fingerprint": "6f157ab07ee1b174", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "config/prometheus/prometheus.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bde87604f7c080f6", "level": "warning", "message": {"text": "Privileged port 94 in use"}, "properties": {"repobilityId": "80ab27a5e994d35e", "scanner": "scanner-primary", "fingerprint": "bde87604f7c080f6", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "config/prometheus/prometheus.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f74e3ebb4dbd5bb0", "level": "warning", "message": {"text": "Privileged port 169 in use"}, "properties": {"repobilityId": "dae322519815f8fe", "scanner": "scanner-primary", "fingerprint": "f74e3ebb4dbd5bb0", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "config/prometheus/prometheus.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e73628ff7be176cd", "level": "warning", "message": {"text": "Privileged port 10 in use"}, "properties": {"repobilityId": "735372d6b5594915", "scanner": "scanner-primary", "fingerprint": "e73628ff7be176cd", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "config/prometheus/alerts/image-update-alerts.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f97f379ed0549c9d", "level": "warning", "message": {"text": "Privileged port 16 in use"}, "properties": {"repobilityId": "d31009168c502ace", "scanner": "scanner-primary", "fingerprint": "f97f379ed0549c9d", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check-image-updates.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d0bcaa7733c681d1", "level": "warning", "message": {"text": "Privileged port 70 in use"}, "properties": {"repobilityId": "353d31c086b0a24a", "scanner": "scanner-primary", "fingerprint": "d0bcaa7733c681d1", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/jellyfin-status.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-626a4bb72bc1f6a2", "level": "warning", "message": {"text": "Privileged port 1 in use"}, "properties": {"repobilityId": "ddf3fa6c29abb8d2", "scanner": "scanner-primary", "fingerprint": "626a4bb72bc1f6a2", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/db-dump.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dbe4b34bd3bda448", "level": "warning", "message": {"text": "Privileged port 4 in use"}, "properties": {"repobilityId": "1594bfeff919296e", "scanner": "scanner-primary", "fingerprint": "dbe4b34bd3bda448", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/db-dump.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8ca9e7d92fe59b37", "level": "warning", "message": {"text": "Privileged port 5 in use"}, "properties": {"repobilityId": "a8f80b4866464301", "scanner": "scanner-primary", "fingerprint": "8ca9e7d92fe59b37", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/db-restore-test.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-edc626f5f322a2ef", "level": "warning", "message": {"text": "Privileged port 12 in use"}, "properties": {"repobilityId": "65e7eefa33f2def4", "scanner": "scanner-primary", "fingerprint": "edc626f5f322a2ef", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/archived/homelab-snapshot.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d0a2756e4af5b05d", "level": "warning", "message": {"text": "Privileged port 19 in use"}, "properties": {"repobilityId": "a6b5b06deac36eac", "scanner": "scanner-primary", "fingerprint": "d0a2756e4af5b05d", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/archived/intelligence-2025-11/lib/snapshot-parser.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ace91b8f87173714", "level": "warning", "message": {"text": "Privileged port 51 in use"}, "properties": {"repobilityId": "22e13070198289ad", "scanner": "scanner-primary", "fingerprint": "ace91b8f87173714", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/archived/intelligence-2025-11/lib/snapshot-parser.sh"}, "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-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-540f19ff72fcd351", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in scripts/archived/diagnose-redis-immich.sh:62"}, "properties": {"repobilityId": "8539b55223179163", "scanner": "scanner-primary", "fingerprint": "540f19ff72fcd351", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/archived/diagnose-redis-immich.sh"}, "region": {"startLine": 62}}}]}, {"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-14209e3239bbd363", "level": "note", "message": {"text": "Very large file: scripts/security-audit.sh (1612 lines)"}, "properties": {"repobilityId": "0f6bb6cadf5daf6f", "scanner": "scanner-primary", "fingerprint": "14209e3239bbd363", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ab7b47c5305a29db", "level": "note", "message": {"text": "Very large file: scripts/btrfs-snapshot-backup.sh (1710 lines)"}, "properties": {"repobilityId": "d96e7e6116683f89", "scanner": "scanner-primary", "fingerprint": "ab7b47c5305a29db", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"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": "9405a9c198c78d90", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "b3e9db7bafce115c", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "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": "e4881231e40f61ef", "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": "1634712028342a2c", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "acba9d43cbc8b2b0", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "18ce0840a5e341ce", "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": "9a22168e087a7d0f", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-28412454df540cda", "level": "error", "message": {"text": "Flask mutation route `webhook` without `@login_required` \u2014 config/alert-discord-relay/relay.py:111"}, "properties": {"repobilityId": "05afcebba455d507", "scanner": "scanner-primary", "fingerprint": "28412454df540cda", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "config/alert-discord-relay/relay.py"}, "region": {"startLine": 111}}}]}, {"ruleId": "scanner-68c9d5e17d04d050", "level": "note", "message": {"text": "Unused endpoint: ANY /webhook"}, "properties": {"repobilityId": "560ac3beaa288ae9", "scanner": "scanner-primary", "fingerprint": "68c9d5e17d04d050", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}