{"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-10ba44b7c50fea32", "name": "Stray `console.log` in TS/JS \u2014 tools/gen-sounds.js:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/gen-sounds.js:56"}, "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-3c998d5319f721a3", "name": "Insecure pattern 'direct_innerhtml_assignment' in HighlightRows-Firefox/popup.js:394", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in HighlightRows-Firefox/popup.js:394"}, "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-a157e0c73fbcbe39", "name": "Insecure pattern 'direct_innerhtml_assignment' in HighlightRows/popup.js:394", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in HighlightRows/popup.js:394"}, "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-f06248c6565ea4cd", "name": "Very large file: HighlightRows-Firefox/content.js (2135 lines)", "shortDescription": {"text": "Very large file: HighlightRows-Firefox/content.js (2135 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-c5786e39b8aeb5ab", "name": "Very large file: HighlightRows-Firefox/popup.js (1440 lines)", "shortDescription": {"text": "Very large file: HighlightRows-Firefox/popup.js (1440 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-18727be6a696b0d7", "name": "Very large file: HighlightRows/content.js (2135 lines)", "shortDescription": {"text": "Very large file: HighlightRows/content.js (2135 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-9121bc828cd4e819", "name": "Very large file: HighlightRows/popup.js (1440 lines)", "shortDescription": {"text": "Very large file: HighlightRows/popup.js (1440 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "0 test file(s) for 9 source file(s) (ratio 0.00). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 20 placeholder/mock markers across 4 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-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, tests. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0cee8979bd4ed833", "name": "Commented-code block (6 lines) in HighlightRows-Firefox/sb.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in HighlightRows-Firefox/sb.js: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-441b923c3405c618", "name": "`fetch()` without try/.catch or AbortSignal \u2014 HighlightRows-Firefox/sb.js:85", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 HighlightRows-Firefox/sb.js:85"}, "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-26f2a0a95840109a", "name": "Commented-code block (6 lines) in HighlightRows-Firefox/background.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in HighlightRows-Firefox/background.js: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-be4ddd2428311a87", "name": "Commented-code block (5 lines) in HighlightRows-Firefox/content.js:1451", "shortDescription": {"text": "Commented-code block (5 lines) in HighlightRows-Firefox/content.js:1451"}, "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-2a89ad51f815044d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 HighlightRows-Firefox/content.js:1433", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 HighlightRows-Firefox/content.js:1433"}, "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-b8fed2091184935a", "name": "Commented-code block (6 lines) in HighlightRows/sb.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in HighlightRows/sb.js: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-77ca5fb2dabc4831", "name": "`fetch()` without try/.catch or AbortSignal \u2014 HighlightRows/sb.js:85", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 HighlightRows/sb.js:85"}, "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-cf3373833f12bcec", "name": "Commented-code block (6 lines) in HighlightRows/background.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in HighlightRows/background.js: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-235eb1821be7d6a1", "name": "Commented-code block (5 lines) in HighlightRows/content.js:1451", "shortDescription": {"text": "Commented-code block (5 lines) in HighlightRows/content.js:1451"}, "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-941ec6b1a2873ebd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 HighlightRows/content.js:1433", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 HighlightRows/content.js:1433"}, "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}}]}}, "automationDetails": {"id": "repobility/23828"}, "properties": {"repository": "a48-vitasyk/Highlight_Rows", "repoUrl": "https://github.com/a48-vitasyk/Highlight_Rows", "branch": "main"}, "results": [{"ruleId": "scanner-10ba44b7c50fea32", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/gen-sounds.js:56"}, "properties": {"repobilityId": "a6e413da68c5108e", "scanner": "scanner-primary", "fingerprint": "10ba44b7c50fea32", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c998d5319f721a3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in HighlightRows-Firefox/popup.js:394"}, "properties": {"repobilityId": "ee27d908c01b36c9", "scanner": "scanner-primary", "fingerprint": "3c998d5319f721a3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "HighlightRows-Firefox/popup.js"}, "region": {"startLine": 394}}}]}, {"ruleId": "scanner-a157e0c73fbcbe39", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in HighlightRows/popup.js:394"}, "properties": {"repobilityId": "60b701a66aac10ef", "scanner": "scanner-primary", "fingerprint": "a157e0c73fbcbe39", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "HighlightRows/popup.js"}, "region": {"startLine": 394}}}]}, {"ruleId": "scanner-f06248c6565ea4cd", "level": "note", "message": {"text": "Very large file: HighlightRows-Firefox/content.js (2135 lines)"}, "properties": {"repobilityId": "6cce8f187606d9b9", "scanner": "scanner-primary", "fingerprint": "f06248c6565ea4cd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c5786e39b8aeb5ab", "level": "note", "message": {"text": "Very large file: HighlightRows-Firefox/popup.js (1440 lines)"}, "properties": {"repobilityId": "17ed9626ee52415e", "scanner": "scanner-primary", "fingerprint": "c5786e39b8aeb5ab", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-18727be6a696b0d7", "level": "note", "message": {"text": "Very large file: HighlightRows/content.js (2135 lines)"}, "properties": {"repobilityId": "8f565232a7d97d39", "scanner": "scanner-primary", "fingerprint": "18727be6a696b0d7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9121bc828cd4e819", "level": "note", "message": {"text": "Very large file: HighlightRows/popup.js (1440 lines)"}, "properties": {"repobilityId": "be0acb39885737e0", "scanner": "scanner-primary", "fingerprint": "9121bc828cd4e819", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "8360b69b8fbe8f41", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "f6bdeb2cc4f1d16a", "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": "382ff286e7642b53", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "25d31f83baacf7e5", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-0cee8979bd4ed833", "level": "none", "message": {"text": "Commented-code block (6 lines) in HighlightRows-Firefox/sb.js:1"}, "properties": {"repobilityId": "fb95cd4d90c2743f", "scanner": "scanner-primary", "fingerprint": "0cee8979bd4ed833", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-441b923c3405c618", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 HighlightRows-Firefox/sb.js:85"}, "properties": {"repobilityId": "f706178cf3104425", "scanner": "scanner-primary", "fingerprint": "441b923c3405c618", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-26f2a0a95840109a", "level": "none", "message": {"text": "Commented-code block (6 lines) in HighlightRows-Firefox/background.js:1"}, "properties": {"repobilityId": "ba2623f771cfa985", "scanner": "scanner-primary", "fingerprint": "26f2a0a95840109a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be4ddd2428311a87", "level": "none", "message": {"text": "Commented-code block (5 lines) in HighlightRows-Firefox/content.js:1451"}, "properties": {"repobilityId": "ee04c91fa446e630", "scanner": "scanner-primary", "fingerprint": "be4ddd2428311a87", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a89ad51f815044d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 HighlightRows-Firefox/content.js:1433"}, "properties": {"repobilityId": "9dcfd6d7ab5a11bd", "scanner": "scanner-primary", "fingerprint": "2a89ad51f815044d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b8fed2091184935a", "level": "none", "message": {"text": "Commented-code block (6 lines) in HighlightRows/sb.js:1"}, "properties": {"repobilityId": "ae9a41946d92c654", "scanner": "scanner-primary", "fingerprint": "b8fed2091184935a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-77ca5fb2dabc4831", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 HighlightRows/sb.js:85"}, "properties": {"repobilityId": "802691b0072616dc", "scanner": "scanner-primary", "fingerprint": "77ca5fb2dabc4831", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cf3373833f12bcec", "level": "none", "message": {"text": "Commented-code block (6 lines) in HighlightRows/background.js:1"}, "properties": {"repobilityId": "e8ae18bca97409cc", "scanner": "scanner-primary", "fingerprint": "cf3373833f12bcec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-235eb1821be7d6a1", "level": "none", "message": {"text": "Commented-code block (5 lines) in HighlightRows/content.js:1451"}, "properties": {"repobilityId": "c5824fe1e541bc09", "scanner": "scanner-primary", "fingerprint": "235eb1821be7d6a1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-941ec6b1a2873ebd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 HighlightRows/content.js:1433"}, "properties": {"repobilityId": "d4dee3d21755cd61", "scanner": "scanner-primary", "fingerprint": "941ec6b1a2873ebd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}]}]}