{"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-b000d10021629ee1", "name": "Possibly dead Python function: diamond", "shortDescription": {"text": "Possibly dead Python function: diamond"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d60948e6cffed3b5", "name": "Possibly dead Python function: plasma", "shortDescription": {"text": "Possibly dead Python function: plasma"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cbe5b85c452a3a1d", "name": "Possibly dead Python function: stripes", "shortDescription": {"text": "Possibly dead Python function: stripes"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4fc8d204ae4f8ceb", "name": "Possibly dead Python function: do_OPTIONS", "shortDescription": {"text": "Possibly dead Python function: do_OPTIONS"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-361b3b896ff34fd7", "name": "Possibly dead Python function: do_POST", "shortDescription": {"text": "Possibly dead Python function: do_POST"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f7dc06b8f843b2cc", "name": "Possibly dead Python function: log_message", "shortDescription": {"text": "Possibly dead Python function: log_message"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-992d817575662525", "name": "Possibly dead Python function: srgb_to_linear", "shortDescription": {"text": "Possibly dead Python function: srgb_to_linear"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-14f24068d5756b02", "name": "Possibly dead Python function: pow24", "shortDescription": {"text": "Possibly dead Python function: pow24"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dbfefe58353a15d8", "name": "Possibly dead Python function: remez_fit", "shortDescription": {"text": "Possibly dead Python function: remez_fit"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dfa109a1d4520018", "name": "Possibly dead Python function: sort_key", "shortDescription": {"text": "Possibly dead Python function: sort_key"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-18f952ba74efbe77", "name": "Privileged port 512 in use", "shortDescription": {"text": "Privileged port 512 in use"}, "fullDescription": {"text": "Port 512 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-e95981f14501d1de", "name": "Insecure pattern 'new_function_used' in service/html/assets/png2amiga-CAKPol98.js:12", "shortDescription": {"text": "Insecure pattern 'new_function_used' in service/html/assets/png2amiga-CAKPol98.js:12"}, "fullDescription": {"text": "Found a known-risky pattern (new_function_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aa99f7670a762872", "name": "Insecure pattern 'new_function_used' in service/html/assets/png2amiga-DAc4_hwD.js:12", "shortDescription": {"text": "Insecure pattern 'new_function_used' in service/html/assets/png2amiga-DAc4_hwD.js:12"}, "fullDescription": {"text": "Found a known-risky pattern (new_function_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bfe7160310587dda", "name": "Insecure pattern 'new_function_used' in service/html/assets/png2amiga-U1loTwBv.js:1", "shortDescription": {"text": "Insecure pattern 'new_function_used' in service/html/assets/png2amiga-U1loTwBv.js:1"}, "fullDescription": {"text": "Found a known-risky pattern (new_function_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "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-46c644c6227e4d4a", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 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-1838a141491ce38c", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dfd9db5038437f79", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 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-3e4cb03fa79bf1c7", "name": "Very large file: service/html/assets/index-iq3SYFJf.js (2200 lines)", "shortDescription": {"text": "Very large file: service/html/assets/index-iq3SYFJf.js (2200 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": "3 test file(s) for 39 source file(s) (ratio 0.08). 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 130 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-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-2ec223780f88ddda", "name": "Commented-code block (6 lines) in web/vite.config.ts:11", "shortDescription": {"text": "Commented-code block (6 lines) in web/vite.config.ts:11"}, "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-00c90779fcd1f4d0", "name": "Commented-code block (7 lines) in web/eslint.config.js:221", "shortDescription": {"text": "Commented-code block (7 lines) in web/eslint.config.js:221"}, "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-2a14726e5bc0c91a", "name": "Commented-code block (5 lines) in web/vitest.config.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in web/vitest.config.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-ffb352909106fac5", "name": "Commented-code block (9 lines) in web/scripts/check-bundle-size.mjs:23", "shortDescription": {"text": "Commented-code block (9 lines) in web/scripts/check-bundle-size.mjs:23"}, "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-8b17795173502347", "name": "Commented-code block (5 lines) in web/scripts/bench-wasm.mjs:2", "shortDescription": {"text": "Commented-code block (5 lines) in web/scripts/bench-wasm.mjs:2"}, "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-db1907fc742931b9", "name": "Commented-code block (6 lines) in web/scripts/gen-dither-thumbs.mjs:74", "shortDescription": {"text": "Commented-code block (6 lines) in web/scripts/gen-dither-thumbs.mjs:74"}, "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-0aa2590c587b8e58", "name": "Commented-code block (5 lines) in web/src/main.ts:12", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/main.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-6fec236bc29f5aac", "name": "Commented-code block (6 lines) in web/src/vite-env.d.ts:86", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/vite-env.d.ts:86"}, "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-970c1f43e66fef28", "name": "Commented-code block (6 lines) in web/src/composables/useWasm.ts:127", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/composables/useWasm.ts:127"}, "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-250080488b7bc2c5", "name": "Commented-code block (13 lines) in web/src/lib/crt.ts:11", "shortDescription": {"text": "Commented-code block (13 lines) in web/src/lib/crt.ts:11"}, "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-d4c06db596a834eb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/lib/crt.ts:100", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/lib/crt.ts:100"}, "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-24974cad2315d85b", "name": "Legacy-named symbol `nOld` in web/src/lib/options.ts:372", "shortDescription": {"text": "Legacy-named symbol `nOld` in web/src/lib/options.ts:372"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-38eb5eb2c22ed3ac", "name": "Commented-code block (5 lines) in web/src/lib/options.ts:39", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/lib/options.ts:39"}, "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-0b4f162327f75241", "name": "Commented-code block (5 lines) in web/src/workers/wasm.worker.ts:230", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/workers/wasm.worker.ts:230"}, "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-1e6f879571d06f5d", "name": "Commented-code block (5 lines) in service/compile.py:99", "shortDescription": {"text": "Commented-code block (5 lines) in service/compile.py:99"}, "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-669eb84e837f0971", "name": "Network/subprocess call without timeout or try/except \u2014 service/compile.py:347", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 service/compile.py:347"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5a512d722cc08921", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/html/assets/png2amiga-CAKPol98.js:1", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/html/assets/png2amiga-CAKPol98.js:1"}, "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-87dd09f3f1843913", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/html/assets/png2amiga-DAc4_hwD.js:1", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/html/assets/png2amiga-DAc4_hwD.js:1"}, "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-7d4ee82a891cb409", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/html/assets/index-iq3SYFJf.js:1", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/html/assets/index-iq3SYFJf.js:1"}, "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-35fd707885a637a3", "name": "Commented-code block (6 lines) in service/html/assets/crt-xeSdQPn3.js:25", "shortDescription": {"text": "Commented-code block (6 lines) in service/html/assets/crt-xeSdQPn3.js:25"}, "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-ea4452aa739a0ab2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/html/assets/crt-xeSdQPn3.js:57", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/html/assets/crt-xeSdQPn3.js:57"}, "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-4b3e95a1b6528fb2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/html/assets/png2amiga-U1loTwBv.js:1", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/html/assets/png2amiga-U1loTwBv.js:1"}, "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-737e5dde86979170", "name": "Commented-code block (7 lines) in tools/check_reserve_color_indep.py:24", "shortDescription": {"text": "Commented-code block (7 lines) in tools/check_reserve_color_indep.py:24"}, "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-1ac621669b9b9431", "name": "Network/subprocess call without timeout or try/except \u2014 tools/check_reserve_color_indep.py:36", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 tools/check_reserve_color_indep.py:36"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-df490422547327d1", "name": "Commented-code block (5 lines) in tools/check_api_equiv.py:77", "shortDescription": {"text": "Commented-code block (5 lines) in tools/check_api_equiv.py:77"}, "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-8afb94922bf894b2", "name": "Network/subprocess call without timeout or try/except \u2014 tools/check_api_equiv.py:36", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 tools/check_api_equiv.py:36"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-985edacaf85df822", "name": "Network/subprocess call without timeout or try/except \u2014 tools/check_palette.py:80", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 tools/check_palette.py:80"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bfbb747f79a03841", "name": "Commented-code block (8 lines) in tools/check_ji_lock_consistency.py:118", "shortDescription": {"text": "Commented-code block (8 lines) in tools/check_ji_lock_consistency.py:118"}, "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-8d38bc4fc541319b", "name": "Network/subprocess call without timeout or try/except \u2014 tools/check_ji_lock_consistency.py:34", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 tools/check_ji_lock_consistency.py:34"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9b4291be051f1e0d", "name": "Commented-code block (5 lines) in tools/recoil_roundtrip.py:43", "shortDescription": {"text": "Commented-code block (5 lines) in tools/recoil_roundtrip.py:43"}, "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-89c0e8b36e5039a5", "name": "Commented-code block (5 lines) in tools/dither_sweep.py:142", "shortDescription": {"text": "Commented-code block (5 lines) in tools/dither_sweep.py:142"}, "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-168e7dfa71a4118d", "name": "Network/subprocess call without timeout or try/except \u2014 tools/dither_sweep.py:272", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 tools/dither_sweep.py:272"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cedb079ad04399d2", "name": "Network/subprocess call without timeout or try/except \u2014 tools/check_pixel_count.py:48", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 tools/check_pixel_count.py:48"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e7dff2ccd9fae5c2", "name": "Network/subprocess call without timeout or try/except \u2014 tools/check_palette_json_roundtrip.py:22", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 tools/check_palette_json_roundtrip.py:22"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-34dc0315c0e493c9", "name": "Commented-code block (5 lines) in tools/shootout/scripts/psnr.py:103", "shortDescription": {"text": "Commented-code block (5 lines) in tools/shootout/scripts/psnr.py:103"}, "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-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\ntools/check_palette.py:parse_hex, tools/check_palette_slot.py:parse_hex\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/21332"}, "properties": {"repository": "tinic/png2amiga", "repoUrl": "https://github.com/tinic/png2amiga", "branch": "main"}, "results": [{"ruleId": "scanner-b000d10021629ee1", "level": "note", "message": {"text": "Possibly dead Python function: diamond"}, "properties": {"repobilityId": "5e2059755ab97007", "scanner": "scanner-primary", "fingerprint": "b000d10021629ee1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/tile/gen_sources.py:77"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d60948e6cffed3b5", "level": "note", "message": {"text": "Possibly dead Python function: plasma"}, "properties": {"repobilityId": "6ea8164a72f6d5c3", "scanner": "scanner-primary", "fingerprint": "d60948e6cffed3b5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/tile/gen_sources.py:91"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cbe5b85c452a3a1d", "level": "note", "message": {"text": "Possibly dead Python function: stripes"}, "properties": {"repobilityId": "db6096e4efdd2484", "scanner": "scanner-primary", "fingerprint": "cbe5b85c452a3a1d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/tile/gen_sources.py:106"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4fc8d204ae4f8ceb", "level": "note", "message": {"text": "Possibly dead Python function: do_OPTIONS"}, "properties": {"repobilityId": "36491d1f4fa41aef", "scanner": "scanner-primary", "fingerprint": "4fc8d204ae4f8ceb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/compile.py:507"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-361b3b896ff34fd7", "level": "note", "message": {"text": "Possibly dead Python function: do_POST"}, "properties": {"repobilityId": "53357410ca9379a9", "scanner": "scanner-primary", "fingerprint": "361b3b896ff34fd7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/compile.py:512"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f7dc06b8f843b2cc", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "f7dc06b8f843b2cc", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/compile.py:652"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-992d817575662525", "level": "note", "message": {"text": "Possibly dead Python function: srgb_to_linear"}, "properties": {"repobilityId": "1dbb259d27da78cb", "scanner": "scanner-primary", "fingerprint": "992d817575662525", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/fit_srgb_pow24.py:16"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-14f24068d5756b02", "level": "note", "message": {"text": "Possibly dead Python function: pow24"}, "properties": {"repobilityId": "82d583e35d41ab48", "scanner": "scanner-primary", "fingerprint": "14f24068d5756b02", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/fit_srgb_pow24.py:22"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dbfefe58353a15d8", "level": "note", "message": {"text": "Possibly dead Python function: remez_fit"}, "properties": {"repobilityId": "1298d05abdd04aad", "scanner": "scanner-primary", "fingerprint": "dbfefe58353a15d8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/fit_srgb_pow24.py:27"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dfa109a1d4520018", "level": "note", "message": {"text": "Possibly dead Python function: sort_key"}, "properties": {"repobilityId": "ac2a4181eae38738", "scanner": "scanner-primary", "fingerprint": "dfa109a1d4520018", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/shootout/scripts/psnr.py:162"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-18f952ba74efbe77", "level": "warning", "message": {"text": "Privileged port 512 in use"}, "properties": {"repobilityId": "2d26cb86d44dba3f", "scanner": "scanner-primary", "fingerprint": "18f952ba74efbe77", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "run-amiga.sh"}, "region": {"startLine": 1}}}]}, {"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-e95981f14501d1de", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in service/html/assets/png2amiga-CAKPol98.js:12"}, "properties": {"repobilityId": "ee7119fbceda911a", "scanner": "scanner-primary", "fingerprint": "e95981f14501d1de", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/html/assets/png2amiga-CAKPol98.js"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-aa99f7670a762872", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in service/html/assets/png2amiga-DAc4_hwD.js:12"}, "properties": {"repobilityId": "916c307d95ec9579", "scanner": "scanner-primary", "fingerprint": "aa99f7670a762872", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/html/assets/png2amiga-DAc4_hwD.js"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-bfe7160310587dda", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in service/html/assets/png2amiga-U1loTwBv.js:1"}, "properties": {"repobilityId": "ce03e9307a666d2f", "scanner": "scanner-primary", "fingerprint": "bfe7160310587dda", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/html/assets/png2amiga-U1loTwBv.js"}, "region": {"startLine": 1}}}]}, {"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-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5ab0c5bd71e63ad8", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5ab0c5bd71e63ad8", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 92}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0ad86557a2848db6", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 116}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5ab0c5bd71e63ad8", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 135}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b0f359fc82dc1097", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 149}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f0dc584a111ffc00", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 165}}}]}, {"ruleId": "scanner-1838a141491ce38c", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "b8fd4f5048f96576", "scanner": "scanner-primary", "fingerprint": "1838a141491ce38c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dfd9db5038437f79", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d2330a28dff131df", "scanner": "scanner-primary", "fingerprint": "dfd9db5038437f79", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/web-ci.yml"}, "region": {"startLine": 94}}}]}, {"ruleId": "scanner-3e4cb03fa79bf1c7", "level": "note", "message": {"text": "Very large file: service/html/assets/index-iq3SYFJf.js (2200 lines)"}, "properties": {"repobilityId": "8ba6453842b619d3", "scanner": "scanner-primary", "fingerprint": "3e4cb03fa79bf1c7", "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": "ff2bee83fefaba32", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "03cedc0be0bd6799", "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": "2c0928f89ab1f2e3", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-2ec223780f88ddda", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/vite.config.ts:11"}, "properties": {"repobilityId": "0261600c36359622", "scanner": "scanner-primary", "fingerprint": "2ec223780f88ddda", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-00c90779fcd1f4d0", "level": "none", "message": {"text": "Commented-code block (7 lines) in web/eslint.config.js:221"}, "properties": {"repobilityId": "675d695665876ffd", "scanner": "scanner-primary", "fingerprint": "00c90779fcd1f4d0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a14726e5bc0c91a", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/vitest.config.ts:3"}, "properties": {"repobilityId": "fdc6cb547234f465", "scanner": "scanner-primary", "fingerprint": "2a14726e5bc0c91a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ffb352909106fac5", "level": "none", "message": {"text": "Commented-code block (9 lines) in web/scripts/check-bundle-size.mjs:23"}, "properties": {"repobilityId": "6e9de0d41d20be17", "scanner": "scanner-primary", "fingerprint": "ffb352909106fac5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b17795173502347", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/scripts/bench-wasm.mjs:2"}, "properties": {"repobilityId": "9aa763d1d418ad1e", "scanner": "scanner-primary", "fingerprint": "8b17795173502347", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-db1907fc742931b9", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/scripts/gen-dither-thumbs.mjs:74"}, "properties": {"repobilityId": "172ab9be6ab95876", "scanner": "scanner-primary", "fingerprint": "db1907fc742931b9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0aa2590c587b8e58", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/main.ts:12"}, "properties": {"repobilityId": "495e5493d87780c9", "scanner": "scanner-primary", "fingerprint": "0aa2590c587b8e58", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6fec236bc29f5aac", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/vite-env.d.ts:86"}, "properties": {"repobilityId": "1049e95bf80dadc1", "scanner": "scanner-primary", "fingerprint": "6fec236bc29f5aac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-970c1f43e66fef28", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/composables/useWasm.ts:127"}, "properties": {"repobilityId": "7a34d8427986ad61", "scanner": "scanner-primary", "fingerprint": "970c1f43e66fef28", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-250080488b7bc2c5", "level": "none", "message": {"text": "Commented-code block (13 lines) in web/src/lib/crt.ts:11"}, "properties": {"repobilityId": "b137ca1fbd217484", "scanner": "scanner-primary", "fingerprint": "250080488b7bc2c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4c06db596a834eb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/lib/crt.ts:100"}, "properties": {"repobilityId": "7e96d312051dd1a0", "scanner": "scanner-primary", "fingerprint": "d4c06db596a834eb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-24974cad2315d85b", "level": "note", "message": {"text": "Legacy-named symbol `nOld` in web/src/lib/options.ts:372"}, "properties": {"repobilityId": "945ec79109adb9c7", "scanner": "scanner-primary", "fingerprint": "24974cad2315d85b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-38eb5eb2c22ed3ac", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/lib/options.ts:39"}, "properties": {"repobilityId": "542b4653904e9ed6", "scanner": "scanner-primary", "fingerprint": "38eb5eb2c22ed3ac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b4f162327f75241", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/workers/wasm.worker.ts:230"}, "properties": {"repobilityId": "e0f9363022217dc0", "scanner": "scanner-primary", "fingerprint": "0b4f162327f75241", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1e6f879571d06f5d", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/compile.py:99"}, "properties": {"repobilityId": "f59360eb75a8ade7", "scanner": "scanner-primary", "fingerprint": "1e6f879571d06f5d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-669eb84e837f0971", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 service/compile.py:347"}, "properties": {"repobilityId": "c0d0ba9312410052", "scanner": "scanner-primary", "fingerprint": "669eb84e837f0971", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5a512d722cc08921", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/html/assets/png2amiga-CAKPol98.js:1"}, "properties": {"repobilityId": "767168508d9687b0", "scanner": "scanner-primary", "fingerprint": "5a512d722cc08921", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-87dd09f3f1843913", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/html/assets/png2amiga-DAc4_hwD.js:1"}, "properties": {"repobilityId": "3ae909b2957366f3", "scanner": "scanner-primary", "fingerprint": "87dd09f3f1843913", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7d4ee82a891cb409", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/html/assets/index-iq3SYFJf.js:1"}, "properties": {"repobilityId": "9515e219fa95e3b8", "scanner": "scanner-primary", "fingerprint": "7d4ee82a891cb409", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-35fd707885a637a3", "level": "none", "message": {"text": "Commented-code block (6 lines) in service/html/assets/crt-xeSdQPn3.js:25"}, "properties": {"repobilityId": "22ddddcc7ab5db23", "scanner": "scanner-primary", "fingerprint": "35fd707885a637a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ea4452aa739a0ab2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/html/assets/crt-xeSdQPn3.js:57"}, "properties": {"repobilityId": "4ce76d1f086f5310", "scanner": "scanner-primary", "fingerprint": "ea4452aa739a0ab2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4b3e95a1b6528fb2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/html/assets/png2amiga-U1loTwBv.js:1"}, "properties": {"repobilityId": "8de979d857b8fbe8", "scanner": "scanner-primary", "fingerprint": "4b3e95a1b6528fb2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-737e5dde86979170", "level": "none", "message": {"text": "Commented-code block (7 lines) in tools/check_reserve_color_indep.py:24"}, "properties": {"repobilityId": "aa26a2352953cb71", "scanner": "scanner-primary", "fingerprint": "737e5dde86979170", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ac621669b9b9431", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 tools/check_reserve_color_indep.py:36"}, "properties": {"repobilityId": "f02b5bdc29c95026", "scanner": "scanner-primary", "fingerprint": "1ac621669b9b9431", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-df490422547327d1", "level": "none", "message": {"text": "Commented-code block (5 lines) in tools/check_api_equiv.py:77"}, "properties": {"repobilityId": "804a6e633cdec2eb", "scanner": "scanner-primary", "fingerprint": "df490422547327d1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8afb94922bf894b2", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 tools/check_api_equiv.py:36"}, "properties": {"repobilityId": "8d232b63550d1f12", "scanner": "scanner-primary", "fingerprint": "8afb94922bf894b2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-985edacaf85df822", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 tools/check_palette.py:80"}, "properties": {"repobilityId": "e769c14e61e88965", "scanner": "scanner-primary", "fingerprint": "985edacaf85df822", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bfbb747f79a03841", "level": "none", "message": {"text": "Commented-code block (8 lines) in tools/check_ji_lock_consistency.py:118"}, "properties": {"repobilityId": "1badbbcce7161b52", "scanner": "scanner-primary", "fingerprint": "bfbb747f79a03841", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d38bc4fc541319b", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 tools/check_ji_lock_consistency.py:34"}, "properties": {"repobilityId": "b01bcbf237626a72", "scanner": "scanner-primary", "fingerprint": "8d38bc4fc541319b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9b4291be051f1e0d", "level": "none", "message": {"text": "Commented-code block (5 lines) in tools/recoil_roundtrip.py:43"}, "properties": {"repobilityId": "327704b5e11d5cb8", "scanner": "scanner-primary", "fingerprint": "9b4291be051f1e0d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-89c0e8b36e5039a5", "level": "none", "message": {"text": "Commented-code block (5 lines) in tools/dither_sweep.py:142"}, "properties": {"repobilityId": "35a90856d4324724", "scanner": "scanner-primary", "fingerprint": "89c0e8b36e5039a5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-168e7dfa71a4118d", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 tools/dither_sweep.py:272"}, "properties": {"repobilityId": "faf5a9f7281fa571", "scanner": "scanner-primary", "fingerprint": "168e7dfa71a4118d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cedb079ad04399d2", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 tools/check_pixel_count.py:48"}, "properties": {"repobilityId": "2d814437d9f3ba4b", "scanner": "scanner-primary", "fingerprint": "cedb079ad04399d2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e7dff2ccd9fae5c2", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 tools/check_palette_json_roundtrip.py:22"}, "properties": {"repobilityId": "15619d5f9b37ee74", "scanner": "scanner-primary", "fingerprint": "e7dff2ccd9fae5c2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-34dc0315c0e493c9", "level": "none", "message": {"text": "Commented-code block (5 lines) in tools/shootout/scripts/psnr.py:103"}, "properties": {"repobilityId": "63b8b558183ef712", "scanner": "scanner-primary", "fingerprint": "34dc0315c0e493c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "c597d79cfed67cc3", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}