{"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-fbdb78569ad9b82d", "name": "Stray `console.log` in TS/JS \u2014 vite.config.ts:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 vite.config.ts:55"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d63da3583b14afc0", "name": "Dockerfile runs as root: Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-835eae4c7f17a2f8", "name": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-84019dfd8d98a34d", "name": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-59cbf6e36a0e3777", "name": "Docker base image is tag-pinned but not digest-pinned: node:22-bookworm-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-bookworm-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "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-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-49f790fc24856bff", "name": "Insecure pattern 'cors_wildcard' in server.mjs:1145", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in server.mjs:1145"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1ea9a7fc46f2166e", "name": "Insecure pattern 'node_child_process' in decoder/rtl433.mjs:9", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/rtl433.mjs:9"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6acf6114b85ff66f", "name": "Insecure pattern 'node_child_process' in decoder/freedv.mjs:20", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/freedv.mjs:20"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-990d693cfa2566db", "name": "Insecure pattern 'node_child_process' in decoder/contestia-fldigi.mjs:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/contestia-fldigi.mjs:3"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-63ebaba7fbd71a1a", "name": "Insecure pattern 'node_child_process' in decoder/jt65.mjs:17", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/jt65.mjs:17"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f03110c158780815", "name": "Insecure pattern 'node_child_process' in decoder/jaero.mjs:15", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/jaero.mjs:15"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3e07ab58b55861ae", "name": "Insecure pattern 'node_child_process' in decoder/mt63-fldigi.mjs:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/mt63-fldigi.mjs:5"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b8e8bca8bfd13485", "name": "Insecure pattern 'node_child_process' in decoder/pocsag.mjs:20", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/pocsag.mjs:20"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-297a2144fae30825", "name": "Insecure pattern 'node_child_process' in decoder/sstv.mjs:22", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/sstv.mjs:22"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-31cc980fe2658259", "name": "Insecure pattern 'node_child_process' in decoder/dsd.mjs:35", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/dsd.mjs:35"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-39c8811930af404f", "name": "Insecure pattern 'node_child_process' in decoder/wmbus.mjs:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/wmbus.mjs:6"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-66e79ed9b4310052", "name": "Insecure pattern 'node_child_process' in decoder/mfsk-fldigi.mjs:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/mfsk-fldigi.mjs:5"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6510fb9dffc9d621", "name": "Insecure pattern 'node_child_process' in decoder/uat.mjs:20", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/uat.mjs:20"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f6ac7f3b06208cee", "name": "Insecure pattern 'node_child_process' in decoder/multimon.mjs:18", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/multimon.mjs:18"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-baf5a53387b953d3", "name": "Insecure pattern 'node_child_process' in decoder/lrpt.mjs:15", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/lrpt.mjs:15"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-54491d7376677cde", "name": "Insecure pattern 'node_child_process' in decoder/packet.mjs:25", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/packet.mjs:25"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8219d4e0893a9486", "name": "Insecure pattern 'node_child_process' in decoder/thor-fldigi.mjs:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/thor-fldigi.mjs:5"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9a986e53faf40669", "name": "Insecure pattern 'node_child_process' in decoder/cw.mjs:9", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/cw.mjs:9"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-444ae179b35706be", "name": "Insecure pattern 'node_child_process' in decoder/vdl2.mjs:23", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/vdl2.mjs:23"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3dcf1ee3df0a83dc", "name": "Insecure pattern 'node_child_process' in decoder/cospas.mjs:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/cospas.mjs:14"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e24cc0fb52021c63", "name": "Insecure pattern 'node_child_process' in decoder/rsid.mjs:10", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/rsid.mjs:10"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-85155c789f8a9289", "name": "Insecure pattern 'node_child_process' in decoder/wspr15.mjs:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/wspr15.mjs:14"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-451ef0882a29e8f8", "name": "Insecure pattern 'node_child_process' in decoder/jt9.mjs:18", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/jt9.mjs:18"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-651e23f51bff2268", "name": "Insecure pattern 'node_child_process' in decoder/wspr.mjs:16", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/wspr.mjs:16"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f18a712a67bc71fb", "name": "Insecure pattern 'node_child_process' in decoder/sonde.mjs:16", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/sonde.mjs:16"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a1f81733c578f2fc", "name": "Insecure pattern 'node_child_process' in decoder/rtty-fldigi.mjs:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/rtty-fldigi.mjs:3"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0638fc101616e0d4", "name": "Insecure pattern 'node_child_process' in decoder/acars.mjs:15", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/acars.mjs:15"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f0f3e8880d41b357", "name": "Insecure pattern 'node_child_process' in decoder/lora.mjs:7", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/lora.mjs:7"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d5d51422b929114b", "name": "Insecure pattern 'node_child_process' in decoder/msk144.mjs:12", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/msk144.mjs:12"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-28fbbccc248d30c1", "name": "Insecure pattern 'node_child_process' in decoder/op25.mjs:24", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/op25.mjs:24"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3ddb74fb41dc8c0d", "name": "Insecure pattern 'node_child_process' in decoder/adsb.mjs:9", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/adsb.mjs:9"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4d8163126a77caf3", "name": "Insecure pattern 'node_child_process' in decoder/fst4w.mjs:12", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/fst4w.mjs:12"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d3a71acabe06d7c2", "name": "Insecure pattern 'node_child_process' in decoder/fsq-fldigi.mjs:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/fsq-fldigi.mjs:5"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dc7a5c392e5571b4", "name": "Insecure pattern 'node_child_process' in decoder/throb-fldigi.mjs:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/throb-fldigi.mjs:6"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-76ff47c3a54c1360", "name": "Insecure pattern 'node_child_process' in decoder/ale-2g.mjs:8", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/ale-2g.mjs:8"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b1513f3684875381", "name": "Insecure pattern 'node_child_process' in decoder/wwv-fldigi.mjs:7", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/wwv-fldigi.mjs:7"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d96ce2ea29649612", "name": "Insecure pattern 'node_child_process' in decoder/dominoex-fldigi.mjs:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/dominoex-fldigi.mjs:3"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5c2f699e8b47709e", "name": "Insecure pattern 'node_child_process' in decoder/jt4.mjs:13", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/jt4.mjs:13"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b6c332fe03ee5f57", "name": "Insecure pattern 'node_child_process' in decoder/ais.mjs:20", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/ais.mjs:20"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d8df4b2e9f38fa79", "name": "Insecure pattern 'node_child_process' in decoder/selcal.mjs:23", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/selcal.mjs:23"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d466fe0c1813287b", "name": "Insecure pattern 'node_child_process' in decoder/psk-fldigi.mjs:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/psk-fldigi.mjs:5"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e5245cf96e526b78", "name": "Insecure pattern 'node_child_process' in decoder/navtex.mjs:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/navtex.mjs:5"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eb416cd4834bf769", "name": "Insecure pattern 'node_child_process' in decoder/q65.mjs:13", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/q65.mjs:13"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-62a561e4f2f45e80", "name": "Insecure pattern 'node_child_process' in decoder/fst4.mjs:17", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/fst4.mjs:17"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dc6012489e375255", "name": "Insecure pattern 'node_child_process' in decoder/js8.mjs:18", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/js8.mjs:18"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d5a40eec054e7aa3", "name": "Insecure pattern 'node_child_process' in decoder/dsc.mjs:20", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/dsc.mjs:20"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e2cf9e874b0da51e", "name": "Insecure pattern 'node_child_process' in decoder/wefax.mjs:11", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/wefax.mjs:11"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c6446dba3eae62ed", "name": "Insecure pattern 'node_child_process' in decoder/ltr.mjs:10", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/ltr.mjs:10"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eaf0691ef0f1f298", "name": "Insecure pattern 'node_child_process' in decoder/stdc.mjs:18", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/stdc.mjs:18"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4824c5b08210b02a", "name": "Insecure pattern 'node_child_process' in decoder/timesig.mjs:17", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/timesig.mjs:17"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e6c3f77acc73cd5c", "name": "Insecure pattern 'node_child_process' in decoder/olivia-fldigi.mjs:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/olivia-fldigi.mjs:5"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e979a479c8671c06", "name": "Insecure pattern 'node_child_process' in decoder/hfdl.mjs:15", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/hfdl.mjs:15"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e3b1fc1b422947ea", "name": "Insecure pattern 'node_child_process' in decoder/csdr-pipeline.mjs:34", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/csdr-pipeline.mjs:34"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-423c89d440c58f2a", "name": "Insecure pattern 'node_child_process' in decoder/rds.mjs:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/rds.mjs:14"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7ce2b7b883f498ee", "name": "Insecure pattern 'node_child_process' in decoder/tetrapol.mjs:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in decoder/tetrapol.mjs:5"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eacb0361578116e4", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/airspy-list.ts:212", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/airspy-list.ts:212"}, "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-5080b50ad96fb602", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/signal-local-analyzer.ts:2742", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/signal-local-analyzer.ts:2742"}, "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-834b121c5bff790a", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/band-modal.ts:68", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/band-modal.ts:68"}, "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-3387c44e893496df", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/presets-modal.ts:15", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/presets-modal.ts:15"}, "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-2d824d5ef6e6ac86", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/server-list.ts:227", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/server-list.ts:227"}, "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-b16661ded47fe954", "name": "Insecure pattern 'domparser_html_parse' in src/ui/server-list.ts:142", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in src/ui/server-list.ts:142"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ead5d9026b553780", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/openwebrx-list.ts:133", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/openwebrx-list.ts:133"}, "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-36e41ba851ceef29", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/settings-modal.ts:259", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/settings-modal.ts:259"}, "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-19f04cfcb89ac702", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/lang-modal.ts:8", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/lang-modal.ts:8"}, "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-4a74062ff472c64e", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/rtl-list.ts:53", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/rtl-list.ts:53"}, "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-f6226fe553fb8c27", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/github-script@v7 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b91060f87d85fdab", "name": "Very large file: server.mjs (3487 lines)", "shortDescription": {"text": "Very large file: server.mjs (3487 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-d5500ad0aa876701", "name": "Very large file: src/ui/signal-local-analyzer.ts (2822 lines)", "shortDescription": {"text": "Very large file: src/ui/signal-local-analyzer.ts (2822 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-3979b517cc0b9543", "name": "Very large file: src/audio/player.ts (1961 lines)", "shortDescription": {"text": "Very large file: src/audio/player.ts (1961 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": "2 test file(s) for 147 source file(s) (ratio 0.01). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "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 105 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-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 12 placeholder/mock markers across 9 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "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-11825279136b53a3", "name": "CI is configured but no tests are detected", "shortDescription": {"text": "CI is configured but no tests are detected"}, "fullDescription": {"text": "A CI pipeline exists, but the scan found no test files to gate. Opus labeled this generated-code pattern as config theater: release machinery exists, but it has little behavioral signal."}, "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 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-2c5f98b152cddb6d", "name": "Agent authority lacks a verifier contract: .claude/launch.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/launch.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4d634d6e7380a65f", "name": "Commented-code block (5 lines) in vite.config.ts:88", "shortDescription": {"text": "Commented-code block (5 lines) in vite.config.ts:88"}, "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-0cbf2075f5c8b741", "name": "Commented-code block (7 lines) in server.mjs:3", "shortDescription": {"text": "Commented-code block (7 lines) in server.mjs:3"}, "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-b9b3fdaa452676ed", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server.mjs:208", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server.mjs:208"}, "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-a6e8ce2d87f4442c", "name": "Commented-code block (8 lines) in decoder/rtl433.mjs:33", "shortDescription": {"text": "Commented-code block (8 lines) in decoder/rtl433.mjs:33"}, "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-b6b725408e8af297", "name": "Commented-code block (5 lines) in decoder/freedv.mjs:73", "shortDescription": {"text": "Commented-code block (5 lines) in decoder/freedv.mjs:73"}, "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-37ace03db342fc5d", "name": "Commented-code block (7 lines) in decoder/rtty.mjs:5", "shortDescription": {"text": "Commented-code block (7 lines) in decoder/rtty.mjs:5"}, "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-2ffe2b4588600375", "name": "Commented-code block (5 lines) in decoder/jaero.mjs:7", "shortDescription": {"text": "Commented-code block (5 lines) in decoder/jaero.mjs:7"}, "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-e9beb9c09ce1907e", "name": "Commented-code block (5 lines) in decoder/sstv.mjs:12", "shortDescription": {"text": "Commented-code block (5 lines) in decoder/sstv.mjs:12"}, "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-2c55c3db30bd7123", "name": "Commented-code block (6 lines) in decoder/dsd.mjs:8", "shortDescription": {"text": "Commented-code block (6 lines) in decoder/dsd.mjs:8"}, "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-d19e85c66a74e059", "name": "Commented-code block (11 lines) in decoder/uat.mjs:8", "shortDescription": {"text": "Commented-code block (11 lines) in decoder/uat.mjs:8"}, "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-aa3bde55b216952a", "name": "Commented-code block (6 lines) in decoder/multimon.mjs:5", "shortDescription": {"text": "Commented-code block (6 lines) in decoder/multimon.mjs:5"}, "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-780833791d855499", "name": "Commented-code block (9 lines) in decoder/lrpt.mjs:5", "shortDescription": {"text": "Commented-code block (9 lines) in decoder/lrpt.mjs:5"}, "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-d4db54fa27c1c3f5", "name": "Commented-code block (8 lines) in decoder/packet.mjs:4", "shortDescription": {"text": "Commented-code block (8 lines) in decoder/packet.mjs:4"}, "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-72a550f02affcee0", "name": "Commented-code block (5 lines) in decoder/cw.mjs:3", "shortDescription": {"text": "Commented-code block (5 lines) in decoder/cw.mjs:3"}, "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-eb86a0aaeab7ce5f", "name": "Commented-code block (17 lines) in decoder/vdl2.mjs:5", "shortDescription": {"text": "Commented-code block (17 lines) in decoder/vdl2.mjs:5"}, "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-71b02008e755a623", "name": "Commented-code block (7 lines) in decoder/cospas.mjs:6", "shortDescription": {"text": "Commented-code block (7 lines) in decoder/cospas.mjs:6"}, "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-d79b11056d6924d5", "name": "Commented-code block (6 lines) in decoder/spyserver.mjs:3", "shortDescription": {"text": "Commented-code block (6 lines) in decoder/spyserver.mjs:3"}, "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-dda4adf74dda20ce", "name": "Commented-code block (6 lines) in decoder/wspr15.mjs:3", "shortDescription": {"text": "Commented-code block (6 lines) in decoder/wspr15.mjs:3"}, "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-bd52cadcd4513dcd", "name": "Commented-code block (5 lines) in decoder/jt9.mjs:9", "shortDescription": {"text": "Commented-code block (5 lines) in decoder/jt9.mjs:9"}, "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-ddd3036aac75bf15", "name": "Commented-code block (5 lines) in decoder/wspr.mjs:7", "shortDescription": {"text": "Commented-code block (5 lines) in decoder/wspr.mjs:7"}, "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-c6c273b67878ee70", "name": "Commented-code block (7 lines) in decoder/sonde.mjs:4", "shortDescription": {"text": "Commented-code block (7 lines) in decoder/sonde.mjs:4"}, "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-95df50e6d5a76f2d", "name": "Commented-code block (10 lines) in decoder/acars.mjs:4", "shortDescription": {"text": "Commented-code block (10 lines) in decoder/acars.mjs:4"}, "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-a69c1520a60c9cdc", "name": "Commented-code block (5 lines) in decoder/lora.mjs:1", "shortDescription": {"text": "Commented-code block (5 lines) in decoder/lora.mjs:1"}, "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-b410d40eebaeffff", "name": "Commented-code block (17 lines) in decoder/op25.mjs:6", "shortDescription": {"text": "Commented-code block (17 lines) in decoder/op25.mjs:6"}, "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-4b694e29d20465fb", "name": "Commented-code block (6 lines) in decoder/adsb.mjs:29", "shortDescription": {"text": "Commented-code block (6 lines) in decoder/adsb.mjs:29"}, "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-00b9206a26009a45", "name": "Commented-code block (5 lines) in decoder/fst4w.mjs:6", "shortDescription": {"text": "Commented-code block (5 lines) in decoder/fst4w.mjs:6"}, "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-6244d7816419b850", "name": "Commented-code block (6 lines) in decoder/ale-2g.mjs:1", "shortDescription": {"text": "Commented-code block (6 lines) in decoder/ale-2g.mjs:1"}, "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-01c8545a3de8b992", "name": "Commented-code block (5 lines) in decoder/wwv-fldigi.mjs:1", "shortDescription": {"text": "Commented-code block (5 lines) in decoder/wwv-fldigi.mjs:1"}, "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-4ad96aad500e1681", "name": "Commented-code block (5 lines) in decoder/jt4.mjs:4", "shortDescription": {"text": "Commented-code block (5 lines) in decoder/jt4.mjs:4"}, "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-8947b161247d3954", "name": "Commented-code block (8 lines) in decoder/ais.mjs:76", "shortDescription": {"text": "Commented-code block (8 lines) in decoder/ais.mjs:76"}, "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-5d8a44116084238d", "name": "Commented-code block (5 lines) in decoder/selcal.mjs:3", "shortDescription": {"text": "Commented-code block (5 lines) in decoder/selcal.mjs:3"}, "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-1522362a3baad27c", "name": "Commented-code block (5 lines) in decoder/js8.mjs:7", "shortDescription": {"text": "Commented-code block (5 lines) in decoder/js8.mjs:7"}, "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-302f7b0aa0528f3b", "name": "Commented-code block (8 lines) in decoder/dsc.mjs:8", "shortDescription": {"text": "Commented-code block (8 lines) in decoder/dsc.mjs:8"}, "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-b693d84c40cd6ace", "name": "Commented-code block (8 lines) in decoder/ltr.mjs:30", "shortDescription": {"text": "Commented-code block (8 lines) in decoder/ltr.mjs:30"}, "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-a6a887969fd94438", "name": "Commented-code block (5 lines) in decoder/timesig.mjs:6", "shortDescription": {"text": "Commented-code block (5 lines) in decoder/timesig.mjs:6"}, "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-63daa54754f6811f", "name": "Commented-code block (8 lines) in decoder/psk.mjs:7", "shortDescription": {"text": "Commented-code block (8 lines) in decoder/psk.mjs:7"}, "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-bffc94494f1fbbf9", "name": "Commented-code block (7 lines) in decoder/hfdl.mjs:3", "shortDescription": {"text": "Commented-code block (7 lines) in decoder/hfdl.mjs:3"}, "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-52b246f5b9275545", "name": "Commented-code block (21 lines) in decoder/csdr-pipeline.mjs:12", "shortDescription": {"text": "Commented-code block (21 lines) in decoder/csdr-pipeline.mjs:12"}, "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-8d182a603f97d811", "name": "Commented-code block (20 lines) in decoder/rtltcp.mjs:5", "shortDescription": {"text": "Commented-code block (20 lines) in decoder/rtltcp.mjs:5"}, "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-ede9a5ce7e4a7e73", "name": "Commented-code block (7 lines) in decoder/rds.mjs:6", "shortDescription": {"text": "Commented-code block (7 lines) in decoder/rds.mjs:6"}, "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-e1a1753ef4371c17", "name": "`fetch()` without try/.catch or AbortSignal \u2014 public/ft8-decoder.js:9", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 public/ft8-decoder.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-ff8ebfcc0fe7c620", "name": "`fetch()` without try/.catch or AbortSignal \u2014 public/rfwhisper-worklet.js:241", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 public/rfwhisper-worklet.js:241"}, "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-5ce358f154334b70", "name": "`fetch()` without try/.catch or AbortSignal \u2014 public/olivia-decoder.js:9", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 public/olivia-decoder.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-ebabeb153b13b564", "name": "Commented-code block (10 lines) in src/util/clock_recovery_mm.ts:3", "shortDescription": {"text": "Commented-code block (10 lines) in src/util/clock_recovery_mm.ts:3"}, "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-83a28139d7a2f1a4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/decoders/olivia.ts:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/decoders/olivia.ts:23"}, "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-2377e2d8383271c3", "name": "Commented-code block (6 lines) in src/decoders/multimon.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in src/decoders/multimon.ts:3"}, "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-dc90e8ec8d1166e0", "name": "Commented-code block (5 lines) in src/decoders/isb.ts:179", "shortDescription": {"text": "Commented-code block (5 lines) in src/decoders/isb.ts:179"}, "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-7f17fc361a5f78fb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/decoders/ft8.ts:25", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/decoders/ft8.ts:25"}, "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-b502628768cdbb8f", "name": "Commented-code block (6 lines) in src/decoders/dsd.ts:7", "shortDescription": {"text": "Commented-code block (6 lines) in src/decoders/dsd.ts:7"}, "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-06dd9198c9792024", "name": "Commented-code block (6 lines) in src/ui/airspy-list.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in src/ui/airspy-list.ts:5"}, "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-79f3b908fcffd20f", "name": "Commented-code block (6 lines) in src/ui/signal-local-analyzer.ts:674", "shortDescription": {"text": "Commented-code block (6 lines) in src/ui/signal-local-analyzer.ts:674"}, "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-515b50ef301fe06b", "name": "Commented-code block (6 lines) in src/ui/band-modal.ts:44", "shortDescription": {"text": "Commented-code block (6 lines) in src/ui/band-modal.ts:44"}, "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-c619bf679879c690", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/ui/server-list.ts:76", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/ui/server-list.ts:76"}, "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-007e85b5af3b34b3", "name": "Commented-code block (5 lines) in src/audio/player.ts:12", "shortDescription": {"text": "Commented-code block (5 lines) in src/audio/player.ts:12"}, "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-4dc83d594df47264", "name": "Commented-code block (5 lines) in src/openwebrx/client.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in src/openwebrx/client.ts:5"}, "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-f9035c94c62f1f76", "name": "Commented-code block (5 lines) in src/kiwi/protocol.ts:48", "shortDescription": {"text": "Commented-code block (5 lines) in src/kiwi/protocol.ts:48"}, "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-9bf4c17194a5e33b", "name": "Commented-code block (6 lines) in src/kiwi/client.ts:143", "shortDescription": {"text": "Commented-code block (6 lines) in src/kiwi/client.ts:143"}, "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-119b6bf6f2bb3a8c", "name": "Commented-code block (6 lines) in src/rtltcp/client.ts:7", "shortDescription": {"text": "Commented-code block (6 lines) in src/rtltcp/client.ts:7"}, "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-66977b16eb64821d", "name": "Commented-code block (5 lines) in src/transcribe/whisper.ts:97", "shortDescription": {"text": "Commented-code block (5 lines) in src/transcribe/whisper.ts:97"}, "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-f05dd29f38165c67", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/transcribe/whisper.ts:107", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/transcribe/whisper.ts:107"}, "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-5cd985d9faf21191", "name": "Commented-code block (16 lines) in src/dsp/audio_constellation.ts:4", "shortDescription": {"text": "Commented-code block (16 lines) in src/dsp/audio_constellation.ts:4"}, "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-30e43e13caa76999", "name": "Commented-code block (5 lines) in src/spyserver/client.ts:12", "shortDescription": {"text": "Commented-code block (5 lines) in src/spyserver/client.ts:12"}, "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}}]}}, "automationDetails": {"id": "repobility/21136"}, "properties": {"repository": "thepacket/radiom", "repoUrl": "https://github.com/thepacket/radiom", "branch": "main"}, "results": [{"ruleId": "scanner-fbdb78569ad9b82d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 vite.config.ts:55"}, "properties": {"repobilityId": "ab305e17677e589d", "scanner": "scanner-primary", "fingerprint": "fbdb78569ad9b82d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d63da3583b14afc0", "level": "warning", "message": {"text": "Dockerfile runs as root: Dockerfile"}, "properties": {"repobilityId": "a2ed1bd120e507db", "scanner": "scanner-primary", "fingerprint": "d63da3583b14afc0", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-835eae4c7f17a2f8", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine"}, "properties": {"repobilityId": "7da027cf7f8d91ea", "scanner": "scanner-primary", "fingerprint": "835eae4c7f17a2f8", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "41efd7f3b5fc1f6f", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "b620130d6b1edb7e", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "885a50b2a5982804", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "b42c32dd79d45819", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "7f0a0d5697dd596d", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "da8d93fdc62e0a01", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "3ef197d7328ff9f7", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 77}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "e229b4edb5a2a6b7", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "4ad3e55558598536", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 93}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "7e8fa83c2921185f", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 101}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "9c063872d6afbcac", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 109}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "a3792869342e8b6d", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 117}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "eab6acbd90cb7ea7", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 125}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "b85acc82070001a9", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 133}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "7e6f8548e95ed4c5", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 141}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "92f2c03e8324f198", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 149}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "03a55457b0cedd56", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 160}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "b2807ae4860c13ae", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 171}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "9e83cabeca69ce12", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 183}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "f550422c2d2e5d68", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 195}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "2821cc58b9c7593b", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 208}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "073d1e2bf9a6f806", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 231}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "283abe501ae20030", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 245}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "d6b976a33e0e928a", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 260}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "441fefc0179d5495", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 275}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "1ca82d2fcae81e11", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 291}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "643bc3f47a895786", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 325}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "769aedaeaee1afe0", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 352}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "65cdf31a76842a6f", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 410}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "b0712b8f85fa3813", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 422}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "34d7ab38e0664323", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 443}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "0e1536d133ff092a", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 463}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "2a0c66245d183cf7", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 474}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "4aad0d0828be8566", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 495}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "a547e375f86a8ea6", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 513}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "f95e5c46d03abd54", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 525}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "1ffe0f91801840ec", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 539}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "bdb223c848f4c1e5", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 558}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "492e8df18d5aad75", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 576}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "e0a4c80ffdb85a1f", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 591}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "6be05382115deb73", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 605}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "6a5f619dacde9824", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 623}}}]}, {"ruleId": "scanner-84019dfd8d98a34d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "75672404a8070888", "scanner": "scanner-primary", "fingerprint": "84019dfd8d98a34d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 641}}}]}, {"ruleId": "scanner-59cbf6e36a0e3777", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-bookworm-slim"}, "properties": {"repobilityId": "8d3e681899f588ff", "scanner": "scanner-primary", "fingerprint": "59cbf6e36a0e3777", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 653}}}]}, {"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-49f790fc24856bff", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in server.mjs:1145"}, "properties": {"repobilityId": "ea3f61489c1bd169", "scanner": "scanner-primary", "fingerprint": "49f790fc24856bff", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.mjs"}, "region": {"startLine": 1145}}}]}, {"ruleId": "scanner-1ea9a7fc46f2166e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/rtl433.mjs:9"}, "properties": {"repobilityId": "526e83e904fe2374", "scanner": "scanner-primary", "fingerprint": "1ea9a7fc46f2166e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/rtl433.mjs"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-6acf6114b85ff66f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/freedv.mjs:20"}, "properties": {"repobilityId": "3af68eef0aee5dc7", "scanner": "scanner-primary", "fingerprint": "6acf6114b85ff66f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/freedv.mjs"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-990d693cfa2566db", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/contestia-fldigi.mjs:3"}, "properties": {"repobilityId": "ef4b18266faf9232", "scanner": "scanner-primary", "fingerprint": "990d693cfa2566db", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/contestia-fldigi.mjs"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-63ebaba7fbd71a1a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/jt65.mjs:17"}, "properties": {"repobilityId": "5a8b8c01bc044b88", "scanner": "scanner-primary", "fingerprint": "63ebaba7fbd71a1a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/jt65.mjs"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-f03110c158780815", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/jaero.mjs:15"}, "properties": {"repobilityId": "d3598dcdae3a7cc7", "scanner": "scanner-primary", "fingerprint": "f03110c158780815", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/jaero.mjs"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-3e07ab58b55861ae", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/mt63-fldigi.mjs:5"}, "properties": {"repobilityId": "7b3c8837a3fa2a50", "scanner": "scanner-primary", "fingerprint": "3e07ab58b55861ae", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/mt63-fldigi.mjs"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-b8e8bca8bfd13485", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/pocsag.mjs:20"}, "properties": {"repobilityId": "69077918cf172df9", "scanner": "scanner-primary", "fingerprint": "b8e8bca8bfd13485", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/pocsag.mjs"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-297a2144fae30825", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/sstv.mjs:22"}, "properties": {"repobilityId": "4ff852976fdac57f", "scanner": "scanner-primary", "fingerprint": "297a2144fae30825", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/sstv.mjs"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-31cc980fe2658259", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/dsd.mjs:35"}, "properties": {"repobilityId": "4d98d06699359a91", "scanner": "scanner-primary", "fingerprint": "31cc980fe2658259", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/dsd.mjs"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-39c8811930af404f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/wmbus.mjs:6"}, "properties": {"repobilityId": "208285253687fb63", "scanner": "scanner-primary", "fingerprint": "39c8811930af404f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/wmbus.mjs"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-66e79ed9b4310052", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/mfsk-fldigi.mjs:5"}, "properties": {"repobilityId": "3ae8b65417e5c89c", "scanner": "scanner-primary", "fingerprint": "66e79ed9b4310052", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/mfsk-fldigi.mjs"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-6510fb9dffc9d621", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/uat.mjs:20"}, "properties": {"repobilityId": "e7cb00c954b9efc3", "scanner": "scanner-primary", "fingerprint": "6510fb9dffc9d621", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/uat.mjs"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-f6ac7f3b06208cee", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/multimon.mjs:18"}, "properties": {"repobilityId": "f596593dc200ae13", "scanner": "scanner-primary", "fingerprint": "f6ac7f3b06208cee", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/multimon.mjs"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-baf5a53387b953d3", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/lrpt.mjs:15"}, "properties": {"repobilityId": "b444b66d58435c8f", "scanner": "scanner-primary", "fingerprint": "baf5a53387b953d3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/lrpt.mjs"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-54491d7376677cde", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/packet.mjs:25"}, "properties": {"repobilityId": "e88ede0afafb25b8", "scanner": "scanner-primary", "fingerprint": "54491d7376677cde", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/packet.mjs"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-8219d4e0893a9486", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/thor-fldigi.mjs:5"}, "properties": {"repobilityId": "f72d89b205469998", "scanner": "scanner-primary", "fingerprint": "8219d4e0893a9486", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/thor-fldigi.mjs"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-9a986e53faf40669", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/cw.mjs:9"}, "properties": {"repobilityId": "82d08b50938c5f19", "scanner": "scanner-primary", "fingerprint": "9a986e53faf40669", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/cw.mjs"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-444ae179b35706be", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/vdl2.mjs:23"}, "properties": {"repobilityId": "597ece5b399be68a", "scanner": "scanner-primary", "fingerprint": "444ae179b35706be", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/vdl2.mjs"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-3dcf1ee3df0a83dc", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/cospas.mjs:14"}, "properties": {"repobilityId": "f41548806ed65ed5", "scanner": "scanner-primary", "fingerprint": "3dcf1ee3df0a83dc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/cospas.mjs"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-e24cc0fb52021c63", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/rsid.mjs:10"}, "properties": {"repobilityId": "c90202b6ff36ef52", "scanner": "scanner-primary", "fingerprint": "e24cc0fb52021c63", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/rsid.mjs"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-85155c789f8a9289", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/wspr15.mjs:14"}, "properties": {"repobilityId": "8904f2acb0dea357", "scanner": "scanner-primary", "fingerprint": "85155c789f8a9289", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/wspr15.mjs"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-451ef0882a29e8f8", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/jt9.mjs:18"}, "properties": {"repobilityId": "9670087e99292b50", "scanner": "scanner-primary", "fingerprint": "451ef0882a29e8f8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/jt9.mjs"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-651e23f51bff2268", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/wspr.mjs:16"}, "properties": {"repobilityId": "70ce22b66a53a0c1", "scanner": "scanner-primary", "fingerprint": "651e23f51bff2268", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/wspr.mjs"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-f18a712a67bc71fb", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/sonde.mjs:16"}, "properties": {"repobilityId": "edc76ded03037930", "scanner": "scanner-primary", "fingerprint": "f18a712a67bc71fb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/sonde.mjs"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-a1f81733c578f2fc", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/rtty-fldigi.mjs:3"}, "properties": {"repobilityId": "2c32857c5871ec8c", "scanner": "scanner-primary", "fingerprint": "a1f81733c578f2fc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/rtty-fldigi.mjs"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-0638fc101616e0d4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/acars.mjs:15"}, "properties": {"repobilityId": "7f1ac9e3cc77caf0", "scanner": "scanner-primary", "fingerprint": "0638fc101616e0d4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/acars.mjs"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-f0f3e8880d41b357", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/lora.mjs:7"}, "properties": {"repobilityId": "0dc98062980b1648", "scanner": "scanner-primary", "fingerprint": "f0f3e8880d41b357", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/lora.mjs"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-d5d51422b929114b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/msk144.mjs:12"}, "properties": {"repobilityId": "e8ccdc2b7e4188a0", "scanner": "scanner-primary", "fingerprint": "d5d51422b929114b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/msk144.mjs"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-28fbbccc248d30c1", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/op25.mjs:24"}, "properties": {"repobilityId": "524afafc270d7b17", "scanner": "scanner-primary", "fingerprint": "28fbbccc248d30c1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/op25.mjs"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-3ddb74fb41dc8c0d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/adsb.mjs:9"}, "properties": {"repobilityId": "809247bea2acc118", "scanner": "scanner-primary", "fingerprint": "3ddb74fb41dc8c0d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/adsb.mjs"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-4d8163126a77caf3", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/fst4w.mjs:12"}, "properties": {"repobilityId": "c3c8b2059ce20843", "scanner": "scanner-primary", "fingerprint": "4d8163126a77caf3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/fst4w.mjs"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-d3a71acabe06d7c2", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/fsq-fldigi.mjs:5"}, "properties": {"repobilityId": "38f48af3f2e82d36", "scanner": "scanner-primary", "fingerprint": "d3a71acabe06d7c2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/fsq-fldigi.mjs"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-dc7a5c392e5571b4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/throb-fldigi.mjs:6"}, "properties": {"repobilityId": "a07562cf675d3e92", "scanner": "scanner-primary", "fingerprint": "dc7a5c392e5571b4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/throb-fldigi.mjs"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-76ff47c3a54c1360", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/ale-2g.mjs:8"}, "properties": {"repobilityId": "b69c3532f922ae9b", "scanner": "scanner-primary", "fingerprint": "76ff47c3a54c1360", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/ale-2g.mjs"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-b1513f3684875381", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/wwv-fldigi.mjs:7"}, "properties": {"repobilityId": "67a66d8c4212b5ce", "scanner": "scanner-primary", "fingerprint": "b1513f3684875381", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/wwv-fldigi.mjs"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-d96ce2ea29649612", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/dominoex-fldigi.mjs:3"}, "properties": {"repobilityId": "59bdfc899719bcda", "scanner": "scanner-primary", "fingerprint": "d96ce2ea29649612", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/dominoex-fldigi.mjs"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-5c2f699e8b47709e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/jt4.mjs:13"}, "properties": {"repobilityId": "0178a87952e20446", "scanner": "scanner-primary", "fingerprint": "5c2f699e8b47709e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/jt4.mjs"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-b6c332fe03ee5f57", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/ais.mjs:20"}, "properties": {"repobilityId": "a34f751b3469dbe0", "scanner": "scanner-primary", "fingerprint": "b6c332fe03ee5f57", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/ais.mjs"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-d8df4b2e9f38fa79", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/selcal.mjs:23"}, "properties": {"repobilityId": "e0a06d72906fd99d", "scanner": "scanner-primary", "fingerprint": "d8df4b2e9f38fa79", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/selcal.mjs"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-d466fe0c1813287b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/psk-fldigi.mjs:5"}, "properties": {"repobilityId": "3b360beb193681da", "scanner": "scanner-primary", "fingerprint": "d466fe0c1813287b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/psk-fldigi.mjs"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-e5245cf96e526b78", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/navtex.mjs:5"}, "properties": {"repobilityId": "f77e15c7482f022f", "scanner": "scanner-primary", "fingerprint": "e5245cf96e526b78", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/navtex.mjs"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-eb416cd4834bf769", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/q65.mjs:13"}, "properties": {"repobilityId": "cfe596056075bb5a", "scanner": "scanner-primary", "fingerprint": "eb416cd4834bf769", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/q65.mjs"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-62a561e4f2f45e80", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/fst4.mjs:17"}, "properties": {"repobilityId": "d3764e0df9540783", "scanner": "scanner-primary", "fingerprint": "62a561e4f2f45e80", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/fst4.mjs"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-dc6012489e375255", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/js8.mjs:18"}, "properties": {"repobilityId": "6e68a73fa75c7f11", "scanner": "scanner-primary", "fingerprint": "dc6012489e375255", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/js8.mjs"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-d5a40eec054e7aa3", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/dsc.mjs:20"}, "properties": {"repobilityId": "63051853afdac978", "scanner": "scanner-primary", "fingerprint": "d5a40eec054e7aa3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/dsc.mjs"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-e2cf9e874b0da51e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/wefax.mjs:11"}, "properties": {"repobilityId": "babc528aa2206ae5", "scanner": "scanner-primary", "fingerprint": "e2cf9e874b0da51e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/wefax.mjs"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-c6446dba3eae62ed", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/ltr.mjs:10"}, "properties": {"repobilityId": "15ca1fc57fe186b7", "scanner": "scanner-primary", "fingerprint": "c6446dba3eae62ed", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/ltr.mjs"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-eaf0691ef0f1f298", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/stdc.mjs:18"}, "properties": {"repobilityId": "aa7da5e4fffdcd80", "scanner": "scanner-primary", "fingerprint": "eaf0691ef0f1f298", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/stdc.mjs"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-4824c5b08210b02a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/timesig.mjs:17"}, "properties": {"repobilityId": "875093015b52ec73", "scanner": "scanner-primary", "fingerprint": "4824c5b08210b02a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/timesig.mjs"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-e6c3f77acc73cd5c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/olivia-fldigi.mjs:5"}, "properties": {"repobilityId": "bb57351cdbae6c8f", "scanner": "scanner-primary", "fingerprint": "e6c3f77acc73cd5c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/olivia-fldigi.mjs"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-e979a479c8671c06", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/hfdl.mjs:15"}, "properties": {"repobilityId": "4e355d643f257b3a", "scanner": "scanner-primary", "fingerprint": "e979a479c8671c06", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/hfdl.mjs"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-e3b1fc1b422947ea", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/csdr-pipeline.mjs:34"}, "properties": {"repobilityId": "517385bcf03f3efb", "scanner": "scanner-primary", "fingerprint": "e3b1fc1b422947ea", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/csdr-pipeline.mjs"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-423c89d440c58f2a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/rds.mjs:14"}, "properties": {"repobilityId": "a3808cb7f7e2f320", "scanner": "scanner-primary", "fingerprint": "423c89d440c58f2a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/rds.mjs"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-7ce2b7b883f498ee", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in decoder/tetrapol.mjs:5"}, "properties": {"repobilityId": "4480fd00198d039c", "scanner": "scanner-primary", "fingerprint": "7ce2b7b883f498ee", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "decoder/tetrapol.mjs"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-eacb0361578116e4", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/airspy-list.ts:212"}, "properties": {"repobilityId": "9117decda135b8a3", "scanner": "scanner-primary", "fingerprint": "eacb0361578116e4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/airspy-list.ts"}, "region": {"startLine": 212}}}]}, {"ruleId": "scanner-5080b50ad96fb602", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/signal-local-analyzer.ts:2742"}, "properties": {"repobilityId": "544a89d839c1114c", "scanner": "scanner-primary", "fingerprint": "5080b50ad96fb602", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/signal-local-analyzer.ts"}, "region": {"startLine": 2742}}}]}, {"ruleId": "scanner-834b121c5bff790a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/band-modal.ts:68"}, "properties": {"repobilityId": "875a8de366b9495b", "scanner": "scanner-primary", "fingerprint": "834b121c5bff790a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/band-modal.ts"}, "region": {"startLine": 68}}}]}, {"ruleId": "scanner-3387c44e893496df", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/presets-modal.ts:15"}, "properties": {"repobilityId": "8cd17d1c938b828d", "scanner": "scanner-primary", "fingerprint": "3387c44e893496df", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/presets-modal.ts"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-2d824d5ef6e6ac86", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/server-list.ts:227"}, "properties": {"repobilityId": "50a3493ebc783941", "scanner": "scanner-primary", "fingerprint": "2d824d5ef6e6ac86", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/server-list.ts"}, "region": {"startLine": 227}}}]}, {"ruleId": "scanner-b16661ded47fe954", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in src/ui/server-list.ts:142"}, "properties": {"repobilityId": "206ebd9d657244f8", "scanner": "scanner-primary", "fingerprint": "b16661ded47fe954", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/server-list.ts"}, "region": {"startLine": 142}}}]}, {"ruleId": "scanner-ead5d9026b553780", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/openwebrx-list.ts:133"}, "properties": {"repobilityId": "a666af74f6349356", "scanner": "scanner-primary", "fingerprint": "ead5d9026b553780", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/openwebrx-list.ts"}, "region": {"startLine": 133}}}]}, {"ruleId": "scanner-36e41ba851ceef29", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/settings-modal.ts:259"}, "properties": {"repobilityId": "5356f26cdc437a72", "scanner": "scanner-primary", "fingerprint": "36e41ba851ceef29", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/settings-modal.ts"}, "region": {"startLine": 259}}}]}, {"ruleId": "scanner-19f04cfcb89ac702", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/lang-modal.ts:8"}, "properties": {"repobilityId": "65e44bb3d121fee4", "scanner": "scanner-primary", "fingerprint": "19f04cfcb89ac702", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/lang-modal.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-4a74062ff472c64e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/ui/rtl-list.ts:53"}, "properties": {"repobilityId": "8246adbbb1422d69", "scanner": "scanner-primary", "fingerprint": "4a74062ff472c64e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ui/rtl-list.ts"}, "region": {"startLine": 53}}}]}, {"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-f6226fe553fb8c27", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "acdd9193ee61a9fa", "scanner": "scanner-primary", "fingerprint": "f6226fe553fb8c27", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/no-prs.yml"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-b91060f87d85fdab", "level": "note", "message": {"text": "Very large file: server.mjs (3487 lines)"}, "properties": {"repobilityId": "7abcc1c187091667", "scanner": "scanner-primary", "fingerprint": "b91060f87d85fdab", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d5500ad0aa876701", "level": "note", "message": {"text": "Very large file: src/ui/signal-local-analyzer.ts (2822 lines)"}, "properties": {"repobilityId": "06a2aac2e0d230d3", "scanner": "scanner-primary", "fingerprint": "d5500ad0aa876701", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3979b517cc0b9543", "level": "note", "message": {"text": "Very large file: src/audio/player.ts (1961 lines)"}, "properties": {"repobilityId": "8f277e3a06682ed7", "scanner": "scanner-primary", "fingerprint": "3979b517cc0b9543", "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-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "683bcbebd833388f", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "a5d796efc8a7dddd", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "07f98c594cae76b9", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-11825279136b53a3", "level": "warning", "message": {"text": "CI is configured but no tests are detected"}, "properties": {"repobilityId": "84cf6144eedd730c", "scanner": "scanner-primary", "fingerprint": "11825279136b53a3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "ci", "config-theater", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "627f1beec5c7feac", "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": "aad656e845c2f176", "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": "e28bc180eb0ba927", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-2c5f98b152cddb6d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/launch.json"}, "properties": {"repobilityId": "0de48c0f4ab303d8", "scanner": "scanner-primary", "fingerprint": "2c5f98b152cddb6d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/launch.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4d634d6e7380a65f", "level": "none", "message": {"text": "Commented-code block (5 lines) in vite.config.ts:88"}, "properties": {"repobilityId": "bbc50bcec8ef00c7", "scanner": "scanner-primary", "fingerprint": "4d634d6e7380a65f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0cbf2075f5c8b741", "level": "none", "message": {"text": "Commented-code block (7 lines) in server.mjs:3"}, "properties": {"repobilityId": "03e0eb65bdbb1090", "scanner": "scanner-primary", "fingerprint": "0cbf2075f5c8b741", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b9b3fdaa452676ed", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server.mjs:208"}, "properties": {"repobilityId": "8002b0ec59f75b0e", "scanner": "scanner-primary", "fingerprint": "b9b3fdaa452676ed", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a6e8ce2d87f4442c", "level": "none", "message": {"text": "Commented-code block (8 lines) in decoder/rtl433.mjs:33"}, "properties": {"repobilityId": "23f3add437628096", "scanner": "scanner-primary", "fingerprint": "a6e8ce2d87f4442c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b6b725408e8af297", "level": "none", "message": {"text": "Commented-code block (5 lines) in decoder/freedv.mjs:73"}, "properties": {"repobilityId": "976b13eddb2b9e67", "scanner": "scanner-primary", "fingerprint": "b6b725408e8af297", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-37ace03db342fc5d", "level": "none", "message": {"text": "Commented-code block (7 lines) in decoder/rtty.mjs:5"}, "properties": {"repobilityId": "9cd6d29cea3ecd07", "scanner": "scanner-primary", "fingerprint": "37ace03db342fc5d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2ffe2b4588600375", "level": "none", "message": {"text": "Commented-code block (5 lines) in decoder/jaero.mjs:7"}, "properties": {"repobilityId": "bb1b7e6a56a93f2f", "scanner": "scanner-primary", "fingerprint": "2ffe2b4588600375", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e9beb9c09ce1907e", "level": "none", "message": {"text": "Commented-code block (5 lines) in decoder/sstv.mjs:12"}, "properties": {"repobilityId": "cfaeed64decaf75c", "scanner": "scanner-primary", "fingerprint": "e9beb9c09ce1907e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c55c3db30bd7123", "level": "none", "message": {"text": "Commented-code block (6 lines) in decoder/dsd.mjs:8"}, "properties": {"repobilityId": "beceee3bf9f570e2", "scanner": "scanner-primary", "fingerprint": "2c55c3db30bd7123", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d19e85c66a74e059", "level": "none", "message": {"text": "Commented-code block (11 lines) in decoder/uat.mjs:8"}, "properties": {"repobilityId": "84048110519b9832", "scanner": "scanner-primary", "fingerprint": "d19e85c66a74e059", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aa3bde55b216952a", "level": "none", "message": {"text": "Commented-code block (6 lines) in decoder/multimon.mjs:5"}, "properties": {"repobilityId": "fc827250df28ad30", "scanner": "scanner-primary", "fingerprint": "aa3bde55b216952a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-780833791d855499", "level": "none", "message": {"text": "Commented-code block (9 lines) in decoder/lrpt.mjs:5"}, "properties": {"repobilityId": "7ecccaaef0ebc3dc", "scanner": "scanner-primary", "fingerprint": "780833791d855499", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4db54fa27c1c3f5", "level": "none", "message": {"text": "Commented-code block (8 lines) in decoder/packet.mjs:4"}, "properties": {"repobilityId": "b4964a5518e6a2c1", "scanner": "scanner-primary", "fingerprint": "d4db54fa27c1c3f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-72a550f02affcee0", "level": "none", "message": {"text": "Commented-code block (5 lines) in decoder/cw.mjs:3"}, "properties": {"repobilityId": "3c94d3cbca396141", "scanner": "scanner-primary", "fingerprint": "72a550f02affcee0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb86a0aaeab7ce5f", "level": "none", "message": {"text": "Commented-code block (17 lines) in decoder/vdl2.mjs:5"}, "properties": {"repobilityId": "18d341e51126e733", "scanner": "scanner-primary", "fingerprint": "eb86a0aaeab7ce5f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-71b02008e755a623", "level": "none", "message": {"text": "Commented-code block (7 lines) in decoder/cospas.mjs:6"}, "properties": {"repobilityId": "6a0d95626a3b8232", "scanner": "scanner-primary", "fingerprint": "71b02008e755a623", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d79b11056d6924d5", "level": "none", "message": {"text": "Commented-code block (6 lines) in decoder/spyserver.mjs:3"}, "properties": {"repobilityId": "0f3cacda42e3964f", "scanner": "scanner-primary", "fingerprint": "d79b11056d6924d5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dda4adf74dda20ce", "level": "none", "message": {"text": "Commented-code block (6 lines) in decoder/wspr15.mjs:3"}, "properties": {"repobilityId": "5f1f3f7a24ef9906", "scanner": "scanner-primary", "fingerprint": "dda4adf74dda20ce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bd52cadcd4513dcd", "level": "none", "message": {"text": "Commented-code block (5 lines) in decoder/jt9.mjs:9"}, "properties": {"repobilityId": "107e504ae4ec8fcc", "scanner": "scanner-primary", "fingerprint": "bd52cadcd4513dcd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ddd3036aac75bf15", "level": "none", "message": {"text": "Commented-code block (5 lines) in decoder/wspr.mjs:7"}, "properties": {"repobilityId": "00cbe612c2ae91e3", "scanner": "scanner-primary", "fingerprint": "ddd3036aac75bf15", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c6c273b67878ee70", "level": "none", "message": {"text": "Commented-code block (7 lines) in decoder/sonde.mjs:4"}, "properties": {"repobilityId": "7ca95fefb77c5861", "scanner": "scanner-primary", "fingerprint": "c6c273b67878ee70", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-95df50e6d5a76f2d", "level": "none", "message": {"text": "Commented-code block (10 lines) in decoder/acars.mjs:4"}, "properties": {"repobilityId": "c8d70ae42c90473f", "scanner": "scanner-primary", "fingerprint": "95df50e6d5a76f2d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a69c1520a60c9cdc", "level": "none", "message": {"text": "Commented-code block (5 lines) in decoder/lora.mjs:1"}, "properties": {"repobilityId": "883265457ffbd06b", "scanner": "scanner-primary", "fingerprint": "a69c1520a60c9cdc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b410d40eebaeffff", "level": "none", "message": {"text": "Commented-code block (17 lines) in decoder/op25.mjs:6"}, "properties": {"repobilityId": "4e3b96cd2a103bd5", "scanner": "scanner-primary", "fingerprint": "b410d40eebaeffff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b694e29d20465fb", "level": "none", "message": {"text": "Commented-code block (6 lines) in decoder/adsb.mjs:29"}, "properties": {"repobilityId": "45e91acef098f818", "scanner": "scanner-primary", "fingerprint": "4b694e29d20465fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-00b9206a26009a45", "level": "none", "message": {"text": "Commented-code block (5 lines) in decoder/fst4w.mjs:6"}, "properties": {"repobilityId": "a27fd8d8495e095e", "scanner": "scanner-primary", "fingerprint": "00b9206a26009a45", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6244d7816419b850", "level": "none", "message": {"text": "Commented-code block (6 lines) in decoder/ale-2g.mjs:1"}, "properties": {"repobilityId": "4b303bbda10917be", "scanner": "scanner-primary", "fingerprint": "6244d7816419b850", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-01c8545a3de8b992", "level": "none", "message": {"text": "Commented-code block (5 lines) in decoder/wwv-fldigi.mjs:1"}, "properties": {"repobilityId": "8d44496a5fed0d21", "scanner": "scanner-primary", "fingerprint": "01c8545a3de8b992", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4ad96aad500e1681", "level": "none", "message": {"text": "Commented-code block (5 lines) in decoder/jt4.mjs:4"}, "properties": {"repobilityId": "e6a10f791837fe59", "scanner": "scanner-primary", "fingerprint": "4ad96aad500e1681", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8947b161247d3954", "level": "none", "message": {"text": "Commented-code block (8 lines) in decoder/ais.mjs:76"}, "properties": {"repobilityId": "3f08e01e4ec7b745", "scanner": "scanner-primary", "fingerprint": "8947b161247d3954", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d8a44116084238d", "level": "none", "message": {"text": "Commented-code block (5 lines) in decoder/selcal.mjs:3"}, "properties": {"repobilityId": "6b1671f4a44bf5d0", "scanner": "scanner-primary", "fingerprint": "5d8a44116084238d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1522362a3baad27c", "level": "none", "message": {"text": "Commented-code block (5 lines) in decoder/js8.mjs:7"}, "properties": {"repobilityId": "5436f3f877ef74d5", "scanner": "scanner-primary", "fingerprint": "1522362a3baad27c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-302f7b0aa0528f3b", "level": "none", "message": {"text": "Commented-code block (8 lines) in decoder/dsc.mjs:8"}, "properties": {"repobilityId": "b0918972c696f118", "scanner": "scanner-primary", "fingerprint": "302f7b0aa0528f3b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b693d84c40cd6ace", "level": "none", "message": {"text": "Commented-code block (8 lines) in decoder/ltr.mjs:30"}, "properties": {"repobilityId": "ab0212ef1173153b", "scanner": "scanner-primary", "fingerprint": "b693d84c40cd6ace", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a6a887969fd94438", "level": "none", "message": {"text": "Commented-code block (5 lines) in decoder/timesig.mjs:6"}, "properties": {"repobilityId": "d6ac22ac0311d100", "scanner": "scanner-primary", "fingerprint": "a6a887969fd94438", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-63daa54754f6811f", "level": "none", "message": {"text": "Commented-code block (8 lines) in decoder/psk.mjs:7"}, "properties": {"repobilityId": "3abf2b7cdc380ee5", "scanner": "scanner-primary", "fingerprint": "63daa54754f6811f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bffc94494f1fbbf9", "level": "none", "message": {"text": "Commented-code block (7 lines) in decoder/hfdl.mjs:3"}, "properties": {"repobilityId": "9266d8009428579f", "scanner": "scanner-primary", "fingerprint": "bffc94494f1fbbf9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52b246f5b9275545", "level": "none", "message": {"text": "Commented-code block (21 lines) in decoder/csdr-pipeline.mjs:12"}, "properties": {"repobilityId": "edb947f5f8358188", "scanner": "scanner-primary", "fingerprint": "52b246f5b9275545", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d182a603f97d811", "level": "none", "message": {"text": "Commented-code block (20 lines) in decoder/rtltcp.mjs:5"}, "properties": {"repobilityId": "0b54ca377a38eebc", "scanner": "scanner-primary", "fingerprint": "8d182a603f97d811", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ede9a5ce7e4a7e73", "level": "none", "message": {"text": "Commented-code block (7 lines) in decoder/rds.mjs:6"}, "properties": {"repobilityId": "d5bdbbc69ffc64ba", "scanner": "scanner-primary", "fingerprint": "ede9a5ce7e4a7e73", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e1a1753ef4371c17", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 public/ft8-decoder.js:9"}, "properties": {"repobilityId": "9df0d4cf8b08ccf6", "scanner": "scanner-primary", "fingerprint": "e1a1753ef4371c17", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ff8ebfcc0fe7c620", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 public/rfwhisper-worklet.js:241"}, "properties": {"repobilityId": "235f049a6a076fce", "scanner": "scanner-primary", "fingerprint": "ff8ebfcc0fe7c620", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5ce358f154334b70", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 public/olivia-decoder.js:9"}, "properties": {"repobilityId": "34d327802e23b9f2", "scanner": "scanner-primary", "fingerprint": "5ce358f154334b70", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ebabeb153b13b564", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/util/clock_recovery_mm.ts:3"}, "properties": {"repobilityId": "093014187d12c09b", "scanner": "scanner-primary", "fingerprint": "ebabeb153b13b564", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-83a28139d7a2f1a4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/decoders/olivia.ts:23"}, "properties": {"repobilityId": "56faeb42b2d9fad8", "scanner": "scanner-primary", "fingerprint": "83a28139d7a2f1a4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2377e2d8383271c3", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/decoders/multimon.ts:3"}, "properties": {"repobilityId": "b5b795c4546820fb", "scanner": "scanner-primary", "fingerprint": "2377e2d8383271c3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dc90e8ec8d1166e0", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/decoders/isb.ts:179"}, "properties": {"repobilityId": "446bb316492ab51c", "scanner": "scanner-primary", "fingerprint": "dc90e8ec8d1166e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7f17fc361a5f78fb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/decoders/ft8.ts:25"}, "properties": {"repobilityId": "bc01789fec3f93b6", "scanner": "scanner-primary", "fingerprint": "7f17fc361a5f78fb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b502628768cdbb8f", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/decoders/dsd.ts:7"}, "properties": {"repobilityId": "1c69cd4ce00ddc4c", "scanner": "scanner-primary", "fingerprint": "b502628768cdbb8f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-06dd9198c9792024", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/ui/airspy-list.ts:5"}, "properties": {"repobilityId": "d82b0a5fa350912b", "scanner": "scanner-primary", "fingerprint": "06dd9198c9792024", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-79f3b908fcffd20f", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/ui/signal-local-analyzer.ts:674"}, "properties": {"repobilityId": "309a751cd43e1cf6", "scanner": "scanner-primary", "fingerprint": "79f3b908fcffd20f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-515b50ef301fe06b", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/ui/band-modal.ts:44"}, "properties": {"repobilityId": "71a7cb26871b1791", "scanner": "scanner-primary", "fingerprint": "515b50ef301fe06b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c619bf679879c690", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/ui/server-list.ts:76"}, "properties": {"repobilityId": "9a37f1cdefc178c6", "scanner": "scanner-primary", "fingerprint": "c619bf679879c690", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-007e85b5af3b34b3", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/audio/player.ts:12"}, "properties": {"repobilityId": "d3b9a54051266523", "scanner": "scanner-primary", "fingerprint": "007e85b5af3b34b3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4dc83d594df47264", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/openwebrx/client.ts:5"}, "properties": {"repobilityId": "3b29d0747007a915", "scanner": "scanner-primary", "fingerprint": "4dc83d594df47264", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f9035c94c62f1f76", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/kiwi/protocol.ts:48"}, "properties": {"repobilityId": "1a90b24af1eef483", "scanner": "scanner-primary", "fingerprint": "f9035c94c62f1f76", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9bf4c17194a5e33b", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/kiwi/client.ts:143"}, "properties": {"repobilityId": "636cea8ef2e869b2", "scanner": "scanner-primary", "fingerprint": "9bf4c17194a5e33b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-119b6bf6f2bb3a8c", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/rtltcp/client.ts:7"}, "properties": {"repobilityId": "28078c87ce5cf69e", "scanner": "scanner-primary", "fingerprint": "119b6bf6f2bb3a8c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-66977b16eb64821d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/transcribe/whisper.ts:97"}, "properties": {"repobilityId": "b0e260b32371897c", "scanner": "scanner-primary", "fingerprint": "66977b16eb64821d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f05dd29f38165c67", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/transcribe/whisper.ts:107"}, "properties": {"repobilityId": "e1d8e8a7e6d2400d", "scanner": "scanner-primary", "fingerprint": "f05dd29f38165c67", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5cd985d9faf21191", "level": "none", "message": {"text": "Commented-code block (16 lines) in src/dsp/audio_constellation.ts:4"}, "properties": {"repobilityId": "f254e6ecef8ebd8d", "scanner": "scanner-primary", "fingerprint": "5cd985d9faf21191", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30e43e13caa76999", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/spyserver/client.ts:12"}, "properties": {"repobilityId": "6c6613e798310168", "scanner": "scanner-primary", "fingerprint": "30e43e13caa76999", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}]}]}