{"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-b3b350275adf9850", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/views/EntityView.jsx:487", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/views/EntityView.jsx:487"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-19a44f7c3ca7d055", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ui.jsx:92", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ui.jsx:92"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ece8a1d26b42b9de", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/Copilot.jsx:177", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/Copilot.jsx:177"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f8f48041783ac958", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/GraphCanvas.jsx:93", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/GraphCanvas.jsx:93"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-75a2a93a8aaff418", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/Reports.jsx:135", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/Reports.jsx:135"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "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-efeae1827c6c9bc3", "name": "Docker base image is tag-pinned but not digest-pinned: golang:1.26-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: golang:1.26-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-d31b80bafc244313", "name": "Docker base image is tag-pinned but not digest-pinned: alpine:3.20", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: alpine:3.20"}, "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-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-85734b889f39e171", "name": "Insecure pattern 'dangerous_innerhtml' in src/views/EntityView.jsx:487", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/views/EntityView.jsx:487"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-76cc1c16aa640787", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/ui.jsx:92", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/ui.jsx:92"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-25742247b0c4b6d7", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/Copilot.jsx:177", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/Copilot.jsx:177"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d97b3e633d16422d", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/GraphCanvas.jsx:93", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/GraphCanvas.jsx:93"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9cab417297defd8e", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/Reports.jsx:135", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/Reports.jsx:135"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-go@v5 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-dd3f0de11a3e7fe0", "name": "Very large file: src/i18n.jsx (2271 lines)", "shortDescription": {"text": "Very large file: src/i18n.jsx (2271 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-ea6afd0bcfc11fe8", "name": "Very large file: src/views/OntologyAuthor.jsx (889 lines)", "shortDescription": {"text": "Very large file: src/views/OntologyAuthor.jsx (889 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-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 7 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 93 placeholder/mock markers across 40 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-447e608c8006d777", "name": "Commented-code block (6 lines) in vite.config.js:107", "shortDescription": {"text": "Commented-code block (6 lines) in vite.config.js:107"}, "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-f7d086675cf232c3", "name": "Commented-code block (5 lines) in scripts/gen-fixtures.mjs:34", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/gen-fixtures.mjs:34"}, "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-131c16517882a5e8", "name": "Commented-code block (6 lines) in src/App.jsx:11", "shortDescription": {"text": "Commented-code block (6 lines) in src/App.jsx: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-0e44b2e944b4de13", "name": "Commented-code block (7 lines) in src/i18n.jsx:20", "shortDescription": {"text": "Commented-code block (7 lines) in src/i18n.jsx:20"}, "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-a7240f520ac0dee2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/views/CasesWorkbench.jsx:238", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/views/CasesWorkbench.jsx:238"}, "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-2c4a64b0fdf7f0ca", "name": "Commented-code block (5 lines) in src/views/RulesView.jsx:68", "shortDescription": {"text": "Commented-code block (5 lines) in src/views/RulesView.jsx:68"}, "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-5dc704ca83ad7f15", "name": "Commented-code block (5 lines) in src/views/ReasonView.jsx:440", "shortDescription": {"text": "Commented-code block (5 lines) in src/views/ReasonView.jsx:440"}, "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-b05e63d8ee454d4f", "name": "Commented-code block (7 lines) in src/views/HomeView.jsx:362", "shortDescription": {"text": "Commented-code block (7 lines) in src/views/HomeView.jsx:362"}, "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-f75d6a373ece6aac", "name": "Commented-code block (6 lines) in src/views/GraphView.jsx:191", "shortDescription": {"text": "Commented-code block (6 lines) in src/views/GraphView.jsx:191"}, "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-69d9bd34f6b583cf", "name": "Commented-code block (5 lines) in src/views/ActionsView.jsx:559", "shortDescription": {"text": "Commented-code block (5 lines) in src/views/ActionsView.jsx:559"}, "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-4dbf8ffeef735ca8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/views/ActionsView.jsx:510", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/views/ActionsView.jsx:510"}, "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-ef5be58cffb99844", "name": "Commented-code block (5 lines) in src/views/EntityView.jsx:85", "shortDescription": {"text": "Commented-code block (5 lines) in src/views/EntityView.jsx:85"}, "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-80ac18859ae7efde", "name": "Commented-code block (5 lines) in src/views/GraphAnalysisView.jsx:42", "shortDescription": {"text": "Commented-code block (5 lines) in src/views/GraphAnalysisView.jsx:42"}, "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-af2f93c13be44445", "name": "Commented-code block (5 lines) in src/views/EvidenceView.jsx:162", "shortDescription": {"text": "Commented-code block (5 lines) in src/views/EvidenceView.jsx:162"}, "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-229477af9ffc7813", "name": "Commented-code block (5 lines) in src/components/Shell.jsx:142", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/Shell.jsx: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-3309837bed2c1a50", "name": "Commented-code block (7 lines) in src/components/TweaksPanel.jsx:20", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/TweaksPanel.jsx:20"}, "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-56779037338da863", "name": "Commented-code block (5 lines) in src/components/ObjectIndex.jsx:86", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/ObjectIndex.jsx: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-230b9880cdf2bc81", "name": "Commented-code block (6 lines) in src/components/Security.jsx:99", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/Security.jsx: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-397b7415a0cfd980", "name": "Commented-code block (9 lines) in src/components/ui.jsx:122", "shortDescription": {"text": "Commented-code block (9 lines) in src/components/ui.jsx:122"}, "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-968d629088067e8c", "name": "Commented-code block (6 lines) in src/components/MapCanvas.jsx:37", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/MapCanvas.jsx:37"}, "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-61a33017a5f0a69c", "name": "Commented-code block (5 lines) in src/components/Access.jsx:17", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/Access.jsx:17"}, "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-41afd1f4ee036384", "name": "Commented-code block (5 lines) in src/services/projects.js:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/services/projects.js: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-b158c630a4e13e10", "name": "Commented-code block (12 lines) in src/services/objects.js:20", "shortDescription": {"text": "Commented-code block (12 lines) in src/services/objects.js:20"}, "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-007c7974983695b3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/objects.js:41", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/objects.js:41"}, "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-3bda4de0dae548b6", "name": "Commented-code block (5 lines) in src/services/rules.js:34", "shortDescription": {"text": "Commented-code block (5 lines) in src/services/rules.js:34"}, "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-37a4d2f6414aaad9", "name": "Commented-code block (6 lines) in src/services/ontology.js:170", "shortDescription": {"text": "Commented-code block (6 lines) in src/services/ontology.js:170"}, "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-132c8405a39f709e", "name": "Commented-code block (7 lines) in src/services/governance.js:21", "shortDescription": {"text": "Commented-code block (7 lines) in src/services/governance.js:21"}, "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-ec47f51f9ff944dd", "name": "Commented-code block (5 lines) in src/services/audit.js:44", "shortDescription": {"text": "Commented-code block (5 lines) in src/services/audit.js: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-afb8566a9de8d71e", "name": "Commented-code block (8 lines) in src/services/actions.js:20", "shortDescription": {"text": "Commented-code block (8 lines) in src/services/actions.js:20"}, "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-4644d685a3daffca", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/alerts.js:5", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/alerts.js:5"}, "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-804d8b9421eb4fff", "name": "Commented-code block (7 lines) in src/services/evidence.js:90", "shortDescription": {"text": "Commented-code block (7 lines) in src/services/evidence.js:90"}, "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-6ae79d29f46ae4a9", "name": "Commented-code block (6 lines) in src/services/ai.js:20", "shortDescription": {"text": "Commented-code block (6 lines) in src/services/ai.js:20"}, "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-e07f3cba56180ae0", "name": "Commented-code block (6 lines) in src/services/resolve.js:32", "shortDescription": {"text": "Commented-code block (6 lines) in src/services/resolve.js:32"}, "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-969c3b36a2d70791", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/users.js:15", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/users.js:15"}, "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-773d8297f4180209", "name": "Commented-code block (6 lines) in test/services.envelope.test.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in test/services.envelope.test.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-c8cee2c10415ad0c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 test/services.envelope.test.js:16", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 test/services.envelope.test.js:16"}, "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-319e66a630e14977", "name": "2 env vars used in code but missing from .env.example", "shortDescription": {"text": "2 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `AXIOM_ALLOW_CLASSIFIED_DEMO_SEEDS`, `VITE_NOTIF_POLL_MS`. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/25421"}, "properties": {"repository": "DioCrafts/testing-ui", "repoUrl": "https://github.com/DioCrafts/testing-ui", "branch": "main"}, "results": [{"ruleId": "scanner-b3b350275adf9850", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/views/EntityView.jsx:487"}, "properties": {"repobilityId": "7b6378321f1c485d", "scanner": "scanner-primary", "fingerprint": "b3b350275adf9850", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-19a44f7c3ca7d055", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ui.jsx:92"}, "properties": {"repobilityId": "e08fbf7e7cec1fdc", "scanner": "scanner-primary", "fingerprint": "19a44f7c3ca7d055", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-ece8a1d26b42b9de", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/Copilot.jsx:177"}, "properties": {"repobilityId": "13e4eaf6e83f2df8", "scanner": "scanner-primary", "fingerprint": "ece8a1d26b42b9de", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-f8f48041783ac958", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/GraphCanvas.jsx:93"}, "properties": {"repobilityId": "19a507a82eb058c4", "scanner": "scanner-primary", "fingerprint": "f8f48041783ac958", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-75a2a93a8aaff418", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/Reports.jsx:135"}, "properties": {"repobilityId": "dd1cfc4bf9c568b6", "scanner": "scanner-primary", "fingerprint": "75a2a93a8aaff418", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-835eae4c7f17a2f8", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine"}, "properties": {"repobilityId": "784c1198f5fa3bd5", "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": 10}}}]}, {"ruleId": "scanner-efeae1827c6c9bc3", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: golang:1.26-alpine"}, "properties": {"repobilityId": "9fcc058375a22206", "scanner": "scanner-primary", "fingerprint": "efeae1827c6c9bc3", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-d31b80bafc244313", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: alpine:3.20"}, "properties": {"repobilityId": "2f1ff30073e4ee53", "scanner": "scanner-primary", "fingerprint": "d31b80bafc244313", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 28}}}]}, {"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-85734b889f39e171", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/views/EntityView.jsx:487"}, "properties": {"repobilityId": "b6ddd74a6b2532d1", "scanner": "scanner-primary", "fingerprint": "85734b889f39e171", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/views/EntityView.jsx"}, "region": {"startLine": 487}}}]}, {"ruleId": "scanner-76cc1c16aa640787", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/ui.jsx:92"}, "properties": {"repobilityId": "7cfb763c648743d8", "scanner": "scanner-primary", "fingerprint": "76cc1c16aa640787", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/ui.jsx"}, "region": {"startLine": 92}}}]}, {"ruleId": "scanner-25742247b0c4b6d7", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/Copilot.jsx:177"}, "properties": {"repobilityId": "75237444bdc019f0", "scanner": "scanner-primary", "fingerprint": "25742247b0c4b6d7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/Copilot.jsx"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-d97b3e633d16422d", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/GraphCanvas.jsx:93"}, "properties": {"repobilityId": "c315d2cfcf3feb84", "scanner": "scanner-primary", "fingerprint": "d97b3e633d16422d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/GraphCanvas.jsx"}, "region": {"startLine": 93}}}]}, {"ruleId": "scanner-9cab417297defd8e", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/Reports.jsx:135"}, "properties": {"repobilityId": "885409b447ed9871", "scanner": "scanner-primary", "fingerprint": "9cab417297defd8e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/Reports.jsx"}, "region": {"startLine": 135}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e0c3a165eed1c507", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 112}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fa57e468c32f4d09", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 164}}}]}, {"ruleId": "scanner-dd3f0de11a3e7fe0", "level": "note", "message": {"text": "Very large file: src/i18n.jsx (2271 lines)"}, "properties": {"repobilityId": "d370a1ebf60052c2", "scanner": "scanner-primary", "fingerprint": "dd3f0de11a3e7fe0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea6afd0bcfc11fe8", "level": "note", "message": {"text": "Very large file: src/views/OntologyAuthor.jsx (889 lines)"}, "properties": {"repobilityId": "7cf2bd93b8aa857c", "scanner": "scanner-primary", "fingerprint": "ea6afd0bcfc11fe8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "0cfa1ce0c8f9023d", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "5b7a0a405391914a", "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": "269fcfdb8bb4427b", "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": "fd2e090943912743", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-447e608c8006d777", "level": "none", "message": {"text": "Commented-code block (6 lines) in vite.config.js:107"}, "properties": {"repobilityId": "012ce3be9d0afa53", "scanner": "scanner-primary", "fingerprint": "447e608c8006d777", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f7d086675cf232c3", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/gen-fixtures.mjs:34"}, "properties": {"repobilityId": "341ae1152350fad0", "scanner": "scanner-primary", "fingerprint": "f7d086675cf232c3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-131c16517882a5e8", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/App.jsx:11"}, "properties": {"repobilityId": "c9c6cbaaa31155ec", "scanner": "scanner-primary", "fingerprint": "131c16517882a5e8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0e44b2e944b4de13", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/i18n.jsx:20"}, "properties": {"repobilityId": "38d981ae6bf1e79b", "scanner": "scanner-primary", "fingerprint": "0e44b2e944b4de13", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a7240f520ac0dee2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/views/CasesWorkbench.jsx:238"}, "properties": {"repobilityId": "5cab532c940ed615", "scanner": "scanner-primary", "fingerprint": "a7240f520ac0dee2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2c4a64b0fdf7f0ca", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/views/RulesView.jsx:68"}, "properties": {"repobilityId": "a0b729cd68284a29", "scanner": "scanner-primary", "fingerprint": "2c4a64b0fdf7f0ca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5dc704ca83ad7f15", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/views/ReasonView.jsx:440"}, "properties": {"repobilityId": "035cd45637f8ae1e", "scanner": "scanner-primary", "fingerprint": "5dc704ca83ad7f15", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b05e63d8ee454d4f", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/views/HomeView.jsx:362"}, "properties": {"repobilityId": "893c7e960d03cffe", "scanner": "scanner-primary", "fingerprint": "b05e63d8ee454d4f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f75d6a373ece6aac", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/views/GraphView.jsx:191"}, "properties": {"repobilityId": "1eeb31c9626f8f30", "scanner": "scanner-primary", "fingerprint": "f75d6a373ece6aac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-69d9bd34f6b583cf", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/views/ActionsView.jsx:559"}, "properties": {"repobilityId": "b714240c98c37a09", "scanner": "scanner-primary", "fingerprint": "69d9bd34f6b583cf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4dbf8ffeef735ca8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/views/ActionsView.jsx:510"}, "properties": {"repobilityId": "44badb67a4b530bc", "scanner": "scanner-primary", "fingerprint": "4dbf8ffeef735ca8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ef5be58cffb99844", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/views/EntityView.jsx:85"}, "properties": {"repobilityId": "ac77449119e8c3e6", "scanner": "scanner-primary", "fingerprint": "ef5be58cffb99844", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-80ac18859ae7efde", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/views/GraphAnalysisView.jsx:42"}, "properties": {"repobilityId": "91a34026587bf50e", "scanner": "scanner-primary", "fingerprint": "80ac18859ae7efde", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-af2f93c13be44445", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/views/EvidenceView.jsx:162"}, "properties": {"repobilityId": "92e251a1d8b11a43", "scanner": "scanner-primary", "fingerprint": "af2f93c13be44445", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-229477af9ffc7813", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/Shell.jsx:142"}, "properties": {"repobilityId": "605f76f9d4062b19", "scanner": "scanner-primary", "fingerprint": "229477af9ffc7813", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3309837bed2c1a50", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/TweaksPanel.jsx:20"}, "properties": {"repobilityId": "747fea10861d3ea5", "scanner": "scanner-primary", "fingerprint": "3309837bed2c1a50", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-56779037338da863", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/ObjectIndex.jsx:86"}, "properties": {"repobilityId": "4a55588636855edb", "scanner": "scanner-primary", "fingerprint": "56779037338da863", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-230b9880cdf2bc81", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/Security.jsx:99"}, "properties": {"repobilityId": "bc9ccabab1759d51", "scanner": "scanner-primary", "fingerprint": "230b9880cdf2bc81", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-397b7415a0cfd980", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/components/ui.jsx:122"}, "properties": {"repobilityId": "e26aa2d47fd203b1", "scanner": "scanner-primary", "fingerprint": "397b7415a0cfd980", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-968d629088067e8c", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/MapCanvas.jsx:37"}, "properties": {"repobilityId": "811ec14f266bf783", "scanner": "scanner-primary", "fingerprint": "968d629088067e8c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-61a33017a5f0a69c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/Access.jsx:17"}, "properties": {"repobilityId": "f107bbea322049e0", "scanner": "scanner-primary", "fingerprint": "61a33017a5f0a69c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-41afd1f4ee036384", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/services/projects.js:4"}, "properties": {"repobilityId": "6606d259b364cd07", "scanner": "scanner-primary", "fingerprint": "41afd1f4ee036384", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b158c630a4e13e10", "level": "none", "message": {"text": "Commented-code block (12 lines) in src/services/objects.js:20"}, "properties": {"repobilityId": "21a7f13ffb93597d", "scanner": "scanner-primary", "fingerprint": "b158c630a4e13e10", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-007c7974983695b3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/objects.js:41"}, "properties": {"repobilityId": "73841f7cb5567ae3", "scanner": "scanner-primary", "fingerprint": "007c7974983695b3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3bda4de0dae548b6", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/services/rules.js:34"}, "properties": {"repobilityId": "702d7a5e3fc65e5b", "scanner": "scanner-primary", "fingerprint": "3bda4de0dae548b6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-37a4d2f6414aaad9", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/services/ontology.js:170"}, "properties": {"repobilityId": "91ee9ba4a64bf817", "scanner": "scanner-primary", "fingerprint": "37a4d2f6414aaad9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-132c8405a39f709e", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/services/governance.js:21"}, "properties": {"repobilityId": "7f727c048def427f", "scanner": "scanner-primary", "fingerprint": "132c8405a39f709e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec47f51f9ff944dd", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/services/audit.js:44"}, "properties": {"repobilityId": "52b795951dec315f", "scanner": "scanner-primary", "fingerprint": "ec47f51f9ff944dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-afb8566a9de8d71e", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/services/actions.js:20"}, "properties": {"repobilityId": "4367b53c349b7f7d", "scanner": "scanner-primary", "fingerprint": "afb8566a9de8d71e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4644d685a3daffca", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/alerts.js:5"}, "properties": {"repobilityId": "c89758dabb165907", "scanner": "scanner-primary", "fingerprint": "4644d685a3daffca", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-804d8b9421eb4fff", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/services/evidence.js:90"}, "properties": {"repobilityId": "924bfcacefa275af", "scanner": "scanner-primary", "fingerprint": "804d8b9421eb4fff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6ae79d29f46ae4a9", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/services/ai.js:20"}, "properties": {"repobilityId": "bfd8af2b9ecc9249", "scanner": "scanner-primary", "fingerprint": "6ae79d29f46ae4a9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e07f3cba56180ae0", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/services/resolve.js:32"}, "properties": {"repobilityId": "0831b95946ade860", "scanner": "scanner-primary", "fingerprint": "e07f3cba56180ae0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-969c3b36a2d70791", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/users.js:15"}, "properties": {"repobilityId": "a340c44c8c15bca3", "scanner": "scanner-primary", "fingerprint": "969c3b36a2d70791", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-773d8297f4180209", "level": "none", "message": {"text": "Commented-code block (6 lines) in test/services.envelope.test.js:1"}, "properties": {"repobilityId": "44febd6dc2a83a65", "scanner": "scanner-primary", "fingerprint": "773d8297f4180209", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8cee2c10415ad0c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 test/services.envelope.test.js:16"}, "properties": {"repobilityId": "c009611932198a1f", "scanner": "scanner-primary", "fingerprint": "c8cee2c10415ad0c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-319e66a630e14977", "level": "none", "message": {"text": "2 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "d838d1fc5d8231c9", "scanner": "scanner-primary", "fingerprint": "319e66a630e14977", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}