{"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-4c228db276795dae", "name": "Stray `console.log` in TS/JS \u2014 scripts/probe-extract.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/probe-extract.ts:53"}, "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-9d53ecba6a45bad8", "name": "Stray `console.log` in TS/JS \u2014 scripts/precompute-bench-decompositions.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/precompute-bench-decompositions.ts:26"}, "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-5eaefb2ea96887db", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-schema-docs.ts:109", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-schema-docs.ts:109"}, "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-82bdd446b518037d", "name": "Stray `console.log` in TS/JS \u2014 scripts/aggregate-longmem-transcripts.ts:102", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/aggregate-longmem-transcripts.ts:102"}, "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-28135dc701ef0b42", "name": "Stray `console.log` in TS/JS \u2014 scripts/update-model-apis.ts:118", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/update-model-apis.ts:118"}, "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-bbdff1dc92e01234", "name": "Stray `console.log` in TS/JS \u2014 scripts/probe-reranker.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/probe-reranker.ts:6"}, "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-7e6af910425f3883", "name": "Stray `console.log` in TS/JS \u2014 scripts/generateSearchCentroids.ts:256", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generateSearchCentroids.ts:256"}, "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-1c485c7042df5c7f", "name": "Stray `console.log` in TS/JS \u2014 scripts/explore-composite.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/explore-composite.ts:27"}, "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-595ba07c1b21e6fa", "name": "Stray `console.log` in TS/JS \u2014 scripts/generateStockPriceCentroids.ts:167", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generateStockPriceCentroids.ts:167"}, "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-d8c31ad2d02d0602", "name": "Stray `console.log` in TS/JS \u2014 scripts/compare-app-gen-runs.ts:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/compare-app-gen-runs.ts:71"}, "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-5c3f57d717764c5c", "name": "Stray `console.log` in TS/JS \u2014 scripts/generateCryptoPriceCentroids.ts:190", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generateCryptoPriceCentroids.ts:190"}, "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-55b76a9f54ba3165", "name": "Stray `console.log` in TS/JS \u2014 scripts/precompute-bench-entities.ts:78", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/precompute-bench-entities.ts:78"}, "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-a65809d6d330a0d6", "name": "Stray `console.log` in TS/JS \u2014 scripts/bench-recall-latency.ts:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/bench-recall-latency.ts:80"}, "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-43977f6f7b279bcf", "name": "Stray `console.log` in TS/JS \u2014 scripts/generateWeatherCentroids.ts:137", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generateWeatherCentroids.ts:137"}, "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-828c86025d4b3bc6", "name": "Stray `console.log` in TS/JS \u2014 src/index.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/index.ts:47"}, "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-533e2fdfae2c33a5", "name": "TODO/FIXME marker in shipping code \u2014 src/clientCompat.ts:25", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/clientCompat.ts:25"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-47368b415252e784", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/tools/appBuilderPrompt.ts:64", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/tools/appBuilderPrompt.ts:64"}, "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-c4c5c513d49de338", "name": "Stray `console.log` in TS/JS \u2014 src/react/useEncryption.ts:621", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/react/useEncryption.ts:621"}, "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-ace93c9d0e89e639", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/react/chart.tsx:69", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/react/chart.tsx:69"}, "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-418d37ebb166b3c9", "name": "Stray `console.log` in TS/JS \u2014 src/react/useDropboxBackup.ts:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/react/useDropboxBackup.ts:82"}, "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-22983a43c7160860", "name": "Stray `console.log` in TS/JS \u2014 src/react/useChatStorage.ts:856", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/react/useChatStorage.ts:856"}, "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-5632da030bc5e55d", "name": "Stray `console.log` in TS/JS \u2014 src/react/useChat.ts:122", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/react/useChat.ts:122"}, "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-55a3fb66cc6688d0", "name": "Stray `console.log` in TS/JS \u2014 src/react/useProjects.ts:114", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/react/useProjects.ts:114"}, "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-6f7a0708fb8ed5cb", "name": "Stray `console.log` in TS/JS \u2014 src/react/useICloudBackup.ts:86", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/react/useICloudBackup.ts:86"}, "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-b05a9075a1823c14", "name": "Stray `console.log` in TS/JS \u2014 src/react/useGoogleDriveBackup.ts:85", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/react/useGoogleDriveBackup.ts:85"}, "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-ef7737f6248ebe2a", "name": "TODO/FIXME marker in shipping code \u2014 src/lib/chat/toolLoop.ts:1308", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/lib/chat/toolLoop.ts:1308"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-da5ac0cec5a8d3fd", "name": "TODO/FIXME marker in shipping code \u2014 src/lib/chat/useChat/strategies/completions.ts:658", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/lib/chat/useChat/strategies/completions.ts:658"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1352925c08b0151b", "name": "Stray `console.log` in TS/JS \u2014 src/lib/polyfills/index.ts:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/polyfills/index.ts:72"}, "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-742cc2e6e4bb8839", "name": "Stray `console.log` in TS/JS \u2014 src/expo/index.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/expo/index.ts:65"}, "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-c4a964f8c79d720a", "name": "Stray `console.log` in TS/JS \u2014 src/expo/useChat.ts:108", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/expo/useChat.ts:108"}, "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-e129a37847b2f1a1", "name": "Stray `console.log` in TS/JS \u2014 test/classifier/promptRouting.ts:762", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/classifier/promptRouting.ts:762"}, "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-97e97ea0889044dc", "name": "Stray `console.log` in TS/JS \u2014 test/classifier/webSearchClassifier.ts:300", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/classifier/webSearchClassifier.ts:300"}, "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-b9bfa048e54d5b97", "name": "Stray `console.log` in TS/JS \u2014 test/memory/longmemeval.ts:138", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/memory/longmemeval.ts:138"}, "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-641a1d568346a24e", "name": "Stray `console.log` in TS/JS \u2014 test/memory/src/vault/benchmark.test.ts:452", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/memory/src/vault/benchmark.test.ts:452"}, "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-8ce7dee2585b22d5", "name": "Stray `console.log` in TS/JS \u2014 test/memory/src/longmemeval/ensembleStrategy.ts:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/memory/src/longmemeval/ensembleStrategy.ts:64"}, "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-e5c16cbc29d5fd81", "name": "Stray `console.log` in TS/JS \u2014 test/memory/src/longmemeval/reporter.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/memory/src/longmemeval/reporter.ts:42"}, "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-97961c1fb96926a6", "name": "Stray `console.log` in TS/JS \u2014 test/memory/src/longmemeval/recallStrategy.ts:94", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/memory/src/longmemeval/recallStrategy.ts:94"}, "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-f9a996d8ab9ebb9b", "name": "Stray `console.log` in TS/JS \u2014 test/memory/src/longmemeval/dataset.ts:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/memory/src/longmemeval/dataset.ts:58"}, "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-bb0eaf6c4cbe1fb8", "name": "Stray `console.log` in TS/JS \u2014 test/memory/src/longmemeval/memoryEngineStrategy.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/memory/src/longmemeval/memoryEngineStrategy.ts:47"}, "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-2e5c807047f72178", "name": "Stray `console.log` in TS/JS \u2014 test/memory/src/longmemeval/memoryVaultStrategy.ts:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/memory/src/longmemeval/memoryVaultStrategy.ts:82"}, "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-cc21f23ce4dae9d3", "name": "Stray `console.log` in TS/JS \u2014 test/memory/src/longmemeval/suite.ts:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/memory/src/longmemeval/suite.ts:76"}, "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-3f4cab8bd8e4aad2", "name": "Stray `console.log` in TS/JS \u2014 test/tools/index.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/index.ts:42"}, "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-ce9e1373623a715a", "name": "Stray `console.log` in TS/JS \u2014 test/tools/setup.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/setup.ts:47"}, "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-6b3ae7df7f83031b", "name": "Stray `console.log` in TS/JS \u2014 test/tools/requestProbe.ts:100", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/requestProbe.ts:100"}, "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-5ed2a619398af0ec", "name": "Stray `console.log` in TS/JS \u2014 test/tools/recorder.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/recorder.ts:33"}, "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-6ecd5fc488653b58", "name": "Stray `console.log` in TS/JS \u2014 test/tools/googleCalendar.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/googleCalendar.ts:35"}, "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-27096d0ba65be20b", "name": "Stray `console.log` in TS/JS \u2014 test/tools/googleDrive.ts:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/googleDrive.ts:66"}, "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-cb9232ea7250987a", "name": "Stray `console.log` in TS/JS \u2014 test/tools/toolSelection.ts:800", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/toolSelection.ts:800"}, "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-c5cb028a79d2e8e5", "name": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/slide-generation.test.ts:186", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/slide-generation.test.ts:186"}, "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-c5e1894a0aa4f581", "name": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/setup.ts:83", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/setup.ts:83"}, "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-6aae1bbaf68e78a6", "name": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/compositionLayouts.test.ts:139", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/compositionLayouts.test.ts:139"}, "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-116a2de9f6894b78", "name": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/prompts.test.ts:105", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/prompts.test.ts:105"}, "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-c150eda73f5ea4fd", "name": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/rerenderDecks.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/rerenderDecks.ts:46"}, "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-27e8756ff0d3be99", "name": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/probeAccent.ts:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/probeAccent.ts:71"}, "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-aa9bd417a3881176", "name": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/editProbe.test.ts:136", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/editProbe.test.ts:136"}, "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-cb7cf7c194ad8ccd", "name": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/dumpCatalog.ts:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/dumpCatalog.ts:66"}, "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-623f2e330f55d4d7", "name": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/deckEditingTimings.test.ts:122", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/deckEditingTimings.test.ts:122"}, "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-003a0a54a9ee3bfc", "name": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/runModelComparison.ts:98", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/runModelComparison.ts:98"}, "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-41ea19ba7df33f57", "name": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/dumpDesignSystem.ts:161", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/dumpDesignSystem.ts:161"}, "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-b9471a6a364e7bcf", "name": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/models.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/models.ts:17"}, "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-26248e6dfba42522", "name": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/requestProbe.test.ts:99", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/requestProbe.test.ts:99"}, "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-4713600d200c93ec", "name": "Stray `console.log` in TS/JS \u2014 test/tools/app-generation/setup.ts:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/app-generation/setup.ts:71"}, "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-7b2d6856d2fc6608", "name": "Stray `console.log` in TS/JS \u2014 test/tools/app-generation/precision-updates.test.ts:176", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/app-generation/precision-updates.test.ts:176"}, "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-5d318e39d5d152f1", "name": "Stray `console.log` in TS/JS \u2014 test/tools/app-generation/app-generation.test.ts:162", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/app-generation/app-generation.test.ts:162"}, "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-7ece71800702b4b4", "name": "Stray `console.log` in TS/JS \u2014 test/tools/app-generation/flashcards-ai.test.ts:167", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/app-generation/flashcards-ai.test.ts:167"}, "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-8738bbbb5820b974", "name": "Stray `console.log` in TS/JS \u2014 test/tools/app-generation/kanban.test.ts:196", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/app-generation/kanban.test.ts:196"}, "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-febc9cbba3ea6fd9", "name": "Stray `console.log` in TS/JS \u2014 test/tools/app-generation/sequential-changes.test.ts:186", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/app-generation/sequential-changes.test.ts:186"}, "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-a961bdeb2fc22e6e", "name": "Stray `console.log` in TS/JS \u2014 test/tools/app-generation/photo-gallery.test.ts:169", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/app-generation/photo-gallery.test.ts:169"}, "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-40f2ecb4fb0cac8d", "name": "Insecure pattern 'node_child_process' in scripts/import-impact.mjs:17", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/import-impact.mjs:17"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-93b927f93668d575", "name": "Insecure pattern 'node_child_process' in scripts/audit.mjs:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/audit.mjs:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1c678f03c7cceefd", "name": "Insecure pattern 'cors_wildcard' in src/tools/appCompleteBridge.browser.test.ts:64", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in src/tools/appCompleteBridge.browser.test.ts:64"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ca0be750252fb44f", "name": "Insecure pattern 'new_function_used' in src/tools/appCompleteBridge.test.ts:353", "shortDescription": {"text": "Insecure pattern 'new_function_used' in src/tools/appCompleteBridge.test.ts:353"}, "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-888adb2110638bf1", "name": "Insecure pattern 'dangerous_innerhtml' in src/tools/appBuilderPrompt.ts:64", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/tools/appBuilderPrompt.ts:64"}, "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-d07301f13e94c974", "name": "Insecure pattern 'new_function_used' in src/tools/appCompleteBridge.ts:495", "shortDescription": {"text": "Insecure pattern 'new_function_used' in src/tools/appCompleteBridge.ts:495"}, "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-5260c90ac08b4446", "name": "Insecure pattern 'cors_wildcard' in src/tools/appCompleteBridge.ts:234", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in src/tools/appCompleteBridge.ts:234"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-89c9757f17fc0cce", "name": "Insecure pattern 'dangerous_innerhtml' in src/react/chart.tsx:69", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/react/chart.tsx:69"}, "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-7a8f8e5e1bb644a1", "name": "Insecure pattern 'local_storage_auth_token' in src/lib/auth/notion.test.ts:77", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in src/lib/auth/notion.test.ts:77"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-755cb1df8cc0e217", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@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-749156c4dcc8bd03", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "davelosert/vitest-coverage-report-action@v2 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": "medium", "confidence": 1.0}}, {"id": "scanner-0d6e356bd662a918", "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-node@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-acd831e1c457094a", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@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-24ca27bcd07f1b88", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/cache@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-266162aa2c525a31", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@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-522e7fdf89cea0b1", "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-node@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-6ba9bfab5f283202", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@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-317f4782582be217", "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-node@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-547ba2c19ec60c9b", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@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-911551c42373a331", "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-node@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-77667a3681fcbc30", "name": "Very large file: src/tools/appGeneration.test.ts (1400 lines)", "shortDescription": {"text": "Very large file: src/tools/appGeneration.test.ts (1400 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-456280820c1d6ba7", "name": "Very large file: src/tools/appGeneration.ts (1587 lines)", "shortDescription": {"text": "Very large file: src/tools/appGeneration.ts (1587 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-9b9d32da348c3c34", "name": "Very large file: src/tools/slides/index.ts (2059 lines)", "shortDescription": {"text": "Very large file: src/tools/slides/index.ts (2059 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-1382717ae2103901", "name": "Very large file: src/tools/slides/tools.test.ts (1374 lines)", "shortDescription": {"text": "Very large file: src/tools/slides/tools.test.ts (1374 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-437223e4d5976348", "name": "Very large file: src/tools/slides/layouts.ts (3504 lines)", "shortDescription": {"text": "Very large file: src/tools/slides/layouts.ts (3504 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-a83e82838296e830", "name": "Very large file: src/tools/slides/designSystem.ts (5165 lines)", "shortDescription": {"text": "Very large file: src/tools/slides/designSystem.ts (5165 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-456eccdb5b37692c", "name": "Very large file: src/react/useEncryption.ts (1503 lines)", "shortDescription": {"text": "Very large file: src/react/useEncryption.ts (1503 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-04c46d54884083f4", "name": "Very large file: src/react/useChat.toolLoop.test.tsx (1581 lines)", "shortDescription": {"text": "Very large file: src/react/useChat.toolLoop.test.tsx (1581 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-9efa60b3d72de322", "name": "Very large file: src/react/useChatStorage.ts (3140 lines)", "shortDescription": {"text": "Very large file: src/react/useChatStorage.ts (3140 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-19d6c791dfbc28d6", "name": "Very large file: src/client/types.gen.ts (9488 lines)", "shortDescription": {"text": "Very large file: src/client/types.gen.ts (9488 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-d6bff6f4e50b6945", "name": "Very large file: src/client/sdk.gen.ts (1905 lines)", "shortDescription": {"text": "Very large file: src/client/sdk.gen.ts (1905 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-ba7d6b80828a0cfb", "name": "Very large file: src/lib/chat/toolLoop.ts (1968 lines)", "shortDescription": {"text": "Very large file: src/lib/chat/toolLoop.ts (1968 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-4642f8e04424453b", "name": "Very large file: src/lib/memoryVault/searchTool.ts (1523 lines)", "shortDescription": {"text": "Very large file: src/lib/memoryVault/searchTool.ts (1523 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-db92ae4cf689d386", "name": "Very large file: src/expo/useChatStorage.ts (1621 lines)", "shortDescription": {"text": "Very large file: src/expo/useChatStorage.ts (1621 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-44676e8939c7fb37", "name": "Node manifest has dependencies but no lockfile: packages/agents/sentinel/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/agents/sentinel/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-da7ddd320125046d", "name": "Node manifest has dependencies but no lockfile: packages/agents/runtime/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/agents/runtime/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d57e038b9bd976ba", "name": "Node manifest has dependencies but no lockfile: packages/agents/registry/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/agents/registry/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-913e4e4fa7cea9b8", "name": "Node manifest has dependencies but no lockfile: packages/agents/haven/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/agents/haven/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "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 123 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 81 placeholder/mock markers across 17 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-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing lockfile. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-619c19b0f5e3f50a", "name": "Legacy-named symbol `__anuma_connector_error_v1` in packages/agents/runtime/src/runAgentRequest.ts:9", "shortDescription": {"text": "Legacy-named symbol `__anuma_connector_error_v1` in packages/agents/runtime/src/runAgentRequest.ts:9"}, "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-5d3ff6616a5d7248", "name": "Commented-code block (5 lines) in packages/agents/runtime/src/runAgentRequest.ts:190", "shortDescription": {"text": "Commented-code block (5 lines) in packages/agents/runtime/src/runAgentRequest.ts:190"}, "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-a06b35f4c1f97ecf", "name": "Legacy-named symbol `haven_v1` in packages/agents/runtime/src/types.ts:18", "shortDescription": {"text": "Legacy-named symbol `haven_v1` in packages/agents/runtime/src/types.ts:18"}, "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-973750fd3fcfaabd", "name": "Legacy-named symbol `haven_v1` in packages/agents/runtime/test/fixtures.ts:20", "shortDescription": {"text": "Legacy-named symbol `haven_v1` in packages/agents/runtime/test/fixtures.ts:20"}, "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-07611906cd48dfe8", "name": "Legacy-named symbol `__anuma_connector_error_v1` in packages/agents/runtime/test/e2e.test.ts:157", "shortDescription": {"text": "Legacy-named symbol `__anuma_connector_error_v1` in packages/agents/runtime/test/e2e.test.ts:157"}, "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-5dcc40c42da69036", "name": "Commented-code block (6 lines) in scripts/aggregate-longmem-transcripts.ts:54", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/aggregate-longmem-transcripts.ts:54"}, "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-d46d31af07d3f571", "name": "Commented-code block (5 lines) in scripts/patch-generated-client.mjs:28", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/patch-generated-client.mjs:28"}, "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-79783dc1ac3d55c7", "name": "Commented-code block (5 lines) in scripts/generateSearchCentroids.ts:237", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/generateSearchCentroids.ts:237"}, "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-1070cea1b8c44e29", "name": "Commented-code block (6 lines) in scripts/generateCryptoPriceCentroids.ts:65", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/generateCryptoPriceCentroids.ts:65"}, "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-314b34408f4ebed8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/precompute-bench-entities.ts:43", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/precompute-bench-entities.ts:43"}, "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-4888aca7b0acd136", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/audit.mjs:42", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/audit.mjs:42"}, "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-2c401ba0f2742bad", "name": "Commented-code block (5 lines) in src/index.ts:92", "shortDescription": {"text": "Commented-code block (5 lines) in src/index.ts:92"}, "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-4eefc4f7525978b0", "name": "Commented-code block (5 lines) in src/clientCompat.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/clientCompat.ts: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-4101394cae082b18", "name": "Commented-code block (6 lines) in src/tools/appGeneration.test.ts:183", "shortDescription": {"text": "Commented-code block (6 lines) in src/tools/appGeneration.test.ts:183"}, "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-6271bbf9fcac29de", "name": "Legacy-named symbol `__anuma_connector_error_v1` in src/tools/gmail.test.ts:79", "shortDescription": {"text": "Legacy-named symbol `__anuma_connector_error_v1` in src/tools/gmail.test.ts:79"}, "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-251d3bcd668edfc9", "name": "Commented-code block (7 lines) in src/tools/appAudit.ts:349", "shortDescription": {"text": "Commented-code block (7 lines) in src/tools/appAudit.ts:349"}, "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-05076a57e7d89394", "name": "Legacy-named symbol `__anuma_connector_error_v1` in src/tools/gmail.ts:19", "shortDescription": {"text": "Legacy-named symbol `__anuma_connector_error_v1` in src/tools/gmail.ts:19"}, "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-baf7d3739bf2460c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/tools/googleDrive.ts:329", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/tools/googleDrive.ts:329"}, "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-88df00d2dadcd0fa", "name": "Commented-code block (5 lines) in src/tools/appCompleteBridge.test.ts:34", "shortDescription": {"text": "Commented-code block (5 lines) in src/tools/appCompleteBridge.test.ts: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-495106a77fcbec06", "name": "Commented-code block (6 lines) in src/tools/appExport.ts:235", "shortDescription": {"text": "Commented-code block (6 lines) in src/tools/appExport.ts:235"}, "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-c19057f27ae29a8c", "name": "Commented-code block (6 lines) in src/tools/appAudit.test.ts:265", "shortDescription": {"text": "Commented-code block (6 lines) in src/tools/appAudit.test.ts:265"}, "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-46b9e084bd602464", "name": "Commented-code block (5 lines) in src/tools/appGeneration.ts:909", "shortDescription": {"text": "Commented-code block (5 lines) in src/tools/appGeneration.ts:909"}, "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-cd352c6d1822b50b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/tools/notion.ts:159", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/tools/notion.ts:159"}, "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-ac37fdeb0d2d6797", "name": "Commented-code block (6 lines) in src/tools/appCompleteBridge.ts:156", "shortDescription": {"text": "Commented-code block (6 lines) in src/tools/appCompleteBridge.ts:156"}, "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-964bb5470d290ab8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/tools/appCompleteBridge.ts:52", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/tools/appCompleteBridge.ts:52"}, "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-57bad2aa7eb91da3", "name": "Commented-code block (5 lines) in src/tools/appExport.browser.test.ts:201", "shortDescription": {"text": "Commented-code block (5 lines) in src/tools/appExport.browser.test.ts:201"}, "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-4eabf59bc8256c87", "name": "Commented-code block (6 lines) in src/tools/appExport.test.ts:82", "shortDescription": {"text": "Commented-code block (6 lines) in src/tools/appExport.test.ts:82"}, "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-db8b41023d258268", "name": "Commented-code block (10 lines) in src/tools/slides/index.ts:747", "shortDescription": {"text": "Commented-code block (10 lines) in src/tools/slides/index.ts:747"}, "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-7a6f9ce21d33849b", "name": "Commented-code block (6 lines) in src/tools/slides/tools.test.ts:500", "shortDescription": {"text": "Commented-code block (6 lines) in src/tools/slides/tools.test.ts:500"}, "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-ca1202755799e399", "name": "Commented-code block (5 lines) in src/tools/slides/layouts.ts:11", "shortDescription": {"text": "Commented-code block (5 lines) in src/tools/slides/layouts.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-2e86205aa95788b1", "name": "Commented-code block (6 lines) in src/tools/slides/designSystem.test.ts:146", "shortDescription": {"text": "Commented-code block (6 lines) in src/tools/slides/designSystem.test.ts:146"}, "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-6cf98ffe60ae0d15", "name": "Commented-code block (5 lines) in src/tools/slides/jsx.ts:554", "shortDescription": {"text": "Commented-code block (5 lines) in src/tools/slides/jsx.ts:554"}, "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-b126175f5a7ba78f", "name": "Commented-code block (5 lines) in src/tools/slides/fonts.test.ts:35", "shortDescription": {"text": "Commented-code block (5 lines) in src/tools/slides/fonts.test.ts:35"}, "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-acb4561418e81dd6", "name": "Commented-code block (6 lines) in src/tools/slides/designSystem.ts:640", "shortDescription": {"text": "Commented-code block (6 lines) in src/tools/slides/designSystem.ts:640"}, "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-04a3ae1ae2f6bc20", "name": "Commented-code block (7 lines) in src/react/useEncryption.ts:651", "shortDescription": {"text": "Commented-code block (7 lines) in src/react/useEncryption.ts:651"}, "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-426cf844e3f8b749", "name": "Commented-code block (6 lines) in src/react/useChat.toolLoop.test.tsx:1470", "shortDescription": {"text": "Commented-code block (6 lines) in src/react/useChat.toolLoop.test.tsx:1470"}, "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-d5de4f57dc7f4215", "name": "Commented-code block (6 lines) in src/react/useChatStorage.ts:219", "shortDescription": {"text": "Commented-code block (6 lines) in src/react/useChatStorage.ts:219"}, "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-9a353872db698672", "name": "Commented-code block (6 lines) in src/react/anumaRuntime.tsx:182", "shortDescription": {"text": "Commented-code block (6 lines) in src/react/anumaRuntime.tsx:182"}, "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-301594a9ea92b5ee", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/react/useProjects.ts:162", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/react/useProjects.ts:162"}, "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-ba5f0b9ddf4b699f", "name": "Commented-code block (7 lines) in src/react/useChat.test.tsx:254", "shortDescription": {"text": "Commented-code block (7 lines) in src/react/useChat.test.tsx:254"}, "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-edb92d212afa7529", "name": "Commented-code block (10 lines) in src/design/useCanvasGestures.ts:156", "shortDescription": {"text": "Commented-code block (10 lines) in src/design/useCanvasGestures.ts:156"}, "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-88d5d94ee1342944", "name": "Commented-code block (9 lines) in src/lib/memory/mmr.ts:42", "shortDescription": {"text": "Commented-code block (9 lines) in src/lib/memory/mmr.ts: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-3e2088120b8f62b4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/memory/reflect.ts:58", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/memory/reflect.ts:58"}, "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-7f88029b7d877fbd", "name": "Commented-code block (5 lines) in src/lib/memory/queryEntities.ts:96", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/memory/queryEntities.ts:96"}, "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-c32d36754ea9595a", "name": "Commented-code block (5 lines) in src/lib/memory/portalLlm.ts:109", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/memory/portalLlm.ts:109"}, "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-d58c1323d603575d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/memory/portalLlm.ts:51", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/memory/portalLlm.ts:51"}, "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-8b923adfbf5a4454", "name": "Commented-code block (7 lines) in src/lib/memory/recall.test.ts:240", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/memory/recall.test.ts:240"}, "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-ff80af842a6932d0", "name": "Commented-code block (5 lines) in src/lib/memory/recallTool.ts:74", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/memory/recallTool.ts: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-30057fe895a858e0", "name": "Commented-code block (5 lines) in src/lib/memory/types.ts:126", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/memory/types.ts:126"}, "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-9e1d578298a4efd1", "name": "Commented-code block (5 lines) in src/lib/memory/recall.ts:231", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/memory/recall.ts:231"}, "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-d73610de61dac428", "name": "Commented-code block (5 lines) in src/lib/memory/consolidate.ts:145", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/memory/consolidate.ts:145"}, "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-4ff2c4162f3b3a38", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/memory/consolidate.ts:104", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/memory/consolidate.ts:104"}, "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-d3de7bd6157f4ab3", "name": "Commented-code block (6 lines) in src/lib/tools/serverTools.ts:851", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/tools/serverTools.ts:851"}, "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-551cdddec3924a1a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/tools/serverTools.ts:339", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/tools/serverTools.ts:339"}, "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-9167fe4313da2faa", "name": "Commented-code block (6 lines) in src/lib/chat/xhrTransport.ts:111", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/chat/xhrTransport.ts:111"}, "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-d86a44f3b45d8c62", "name": "Commented-code block (5 lines) in src/lib/chat/summarize.ts:508", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/chat/summarize.ts:508"}, "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-5d10bc781be9aa53", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/chat/summarize.ts:364", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/chat/summarize.ts:364"}, "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-555cc959d32cd28a", "name": "Commented-code block (5 lines) in src/lib/chat/summarize.test.ts:157", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/chat/summarize.test.ts:157"}, "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-937243ef4aea300a", "name": "Commented-code block (9 lines) in src/lib/chat/toolLoop.ts:180", "shortDescription": {"text": "Commented-code block (9 lines) in src/lib/chat/toolLoop.ts:180"}, "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-95acd7b949c44803", "name": "Commented-code block (5 lines) in src/lib/chat/toolLoop.streamRetry.test.ts:130", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/chat/toolLoop.streamRetry.test.ts:130"}, "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-912a5e16e5c655ab", "name": "Commented-code block (10 lines) in src/lib/chat/useChat/strategies/responses.ts:216", "shortDescription": {"text": "Commented-code block (10 lines) in src/lib/chat/useChat/strategies/responses.ts:216"}, "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-5b71be92ce4d400a", "name": "Commented-code block (6 lines) in src/lib/chat/useChat/strategies/portalShape.test.ts:18", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/chat/useChat/strategies/portalShape.test.ts:18"}, "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-59782151eeb94401", "name": "Commented-code block (8 lines) in src/lib/chat/useChat/strategies/responses.test.ts:152", "shortDescription": {"text": "Commented-code block (8 lines) in src/lib/chat/useChat/strategies/responses.test.ts:152"}, "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-4750e97ddd31b61c", "name": "Commented-code block (6 lines) in src/lib/chat/useChat/strategies/completions.ts:290", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/chat/useChat/strategies/completions.ts:290"}, "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-faccb107f2b11ee8", "name": "Commented-code block (7 lines) in src/lib/chat/useChat/strategies/completions.test.ts:105", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/chat/useChat/strategies/completions.test.ts:105"}, "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-fbe829e658218923", "name": "Commented-code block (6 lines) in src/lib/memoryVault/searchTool.ts:471", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/memoryVault/searchTool.ts:471"}, "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-e448d0253695d102", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/memoryVault/decomposeQuery.ts:74", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/memoryVault/decomposeQuery.ts:74"}, "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-61d8b3e845327030", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/backup/google/api.ts:40", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/backup/google/api.ts:40"}, "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-31977668ecdbdae4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/backup/google/backup.ts:111", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/backup/google/backup.ts:111"}, "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-2e51b3ad7a697133", "name": "Legacy-named symbol `create_folder_v2` in src/lib/backup/dropbox/api.ts:67", "shortDescription": {"text": "Legacy-named symbol `create_folder_v2` in src/lib/backup/dropbox/api.ts:67"}, "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-a92e9af4ea7e46d8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/backup/dropbox/api.ts:97", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/backup/dropbox/api.ts:97"}, "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-342c13fb6fefaf9b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/backup/dropbox/backup.ts:76", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/backup/dropbox/backup.ts:76"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bc56b00c13c0301f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/backup/icloud/api.ts:434", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/backup/icloud/api.ts:434"}, "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-c7ca4b6476583403", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/backup/icloud/backup.ts:76", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/backup/icloud/backup.ts:76"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b0e5bb875d0582db", "name": "Commented-code block (6 lines) in src/lib/sse/keepalive.ts:131", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/sse/keepalive.ts:131"}, "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-71971063de24fb65", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/auth/notion-primitives.ts:185", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/auth/notion-primitives.ts:185"}, "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-7759a76f429339b5", "name": "Commented-code block (5 lines) in src/lib/auth/notion.ts:392", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/auth/notion.ts:392"}, "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-1f7f5108072e8097", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/auth/notion.ts:160", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/auth/notion.ts:160"}, "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-30ffb97eef516e9a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/processors/encoding.ts:22", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/processors/encoding.ts:22"}, "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-f1517d7b1d089a5a", "name": "Commented-code block (5 lines) in src/lib/db/schema.ts:730", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/db/schema.ts:730"}, "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-8a6eabcb12f23635", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/project/operations.ts:63", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/project/operations.ts:63"}, "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-dd749348f9cf45a0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/media/operations.ts:195", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/media/operations.ts:195"}, "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-7936739d3b965163", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/media/operations.relink.test.ts:59", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/media/operations.relink.test.ts:59"}, "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-7318cf49a803764d", "name": "Commented-code block (5 lines) in src/lib/db/chat/lazyDecrypt.ts:181", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/db/chat/lazyDecrypt.ts:181"}, "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-4df27268b5117b5f", "name": "Commented-code block (8 lines) in src/lib/db/chat/operations.ts:813", "shortDescription": {"text": "Commented-code block (8 lines) in src/lib/db/chat/operations.ts:813"}, "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-5b2a5a71a1290a96", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/chat/operations.ts:200", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/chat/operations.ts:200"}, "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-22257f1b2b9f41bb", "name": "Commented-code block (5 lines) in src/lib/db/chat/lazyDecrypt.test.ts:170", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/db/chat/lazyDecrypt.test.ts: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-c0252cf3220981c9", "name": "Commented-code block (6 lines) in src/lib/db/chat/encryption.ts:120", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/db/chat/encryption.ts:120"}, "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-d4bce653272f4e0c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/chat/operations.pinned.test.ts:52", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/chat/operations.pinned.test.ts:52"}, "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-8d9cb8a7dcf3f027", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/chat/summaryOperations.ts:43", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/chat/summaryOperations.ts:43"}, "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-12d3f32876d5c517", "name": "Commented-code block (8 lines) in src/lib/db/memoryVault/operations.ts:169", "shortDescription": {"text": "Commented-code block (8 lines) in src/lib/db/memoryVault/operations.ts:169"}, "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-bf12657c76b81476", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/memoryVault/operations.ts:187", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/memoryVault/operations.ts:187"}, "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-805b6cbc79f27114", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/appFiles/operations.ts:42", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/appFiles/operations.ts:42"}, "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-029e46d495d78772", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/entities/operations.ts:56", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/entities/operations.ts:56"}, "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-0a98dc0b2c628b1d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/settings/operations.ts:26", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/settings/operations.ts:26"}, "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-10475525d5511309", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/vaultFolders/operations.ts:91", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/vaultFolders/operations.ts:91"}, "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-f3536f8bf517ef71", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/userPreferences/operations.ts:49", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/userPreferences/operations.ts:49"}, "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-266fbd3eb50e1c03", "name": "Legacy-named symbol `__anuma_connector_error_v1` in src/lib/connectors/index.ts:8", "shortDescription": {"text": "Legacy-named symbol `__anuma_connector_error_v1` in src/lib/connectors/index.ts:8"}, "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-8e224bbb415ad419", "name": "Legacy-named symbol `__anuma_connector_error_v1` in src/lib/connectors/errors.ts:8", "shortDescription": {"text": "Legacy-named symbol `__anuma_connector_error_v1` in src/lib/connectors/errors.ts:8"}, "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-86b9ccddf6a21d0d", "name": "Legacy-named symbol `__anuma_connector_error_v1` in src/lib/connectors/client.ts:18", "shortDescription": {"text": "Legacy-named symbol `__anuma_connector_error_v1` in src/lib/connectors/client.ts:18"}, "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-c26ce826c243e159", "name": "Legacy-named symbol `__anuma_connector_error_v1` in src/lib/connectors/errors.test.ts:14", "shortDescription": {"text": "Legacy-named symbol `__anuma_connector_error_v1` in src/lib/connectors/errors.test.ts:14"}, "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-5df687e414a22bae", "name": "Commented-code block (5 lines) in src/lib/storage/WatermelonChatStorageAdapter.ts:197", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/storage/WatermelonChatStorageAdapter.ts:197"}, "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-9f392fdf15695444", "name": "Commented-code block (5 lines) in test/classifier/promptRouting.ts:117", "shortDescription": {"text": "Commented-code block (5 lines) in test/classifier/promptRouting.ts:117"}, "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-5169cdad8c5b93a0", "name": "Commented-code block (5 lines) in test/memory/src/vault/benchmark.test.ts:103", "shortDescription": {"text": "Commented-code block (5 lines) in test/memory/src/vault/benchmark.test.ts: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-b08f946d5200571c", "name": "Commented-code block (7 lines) in test/memory/src/longmemeval/recallStrategy.ts:143", "shortDescription": {"text": "Commented-code block (7 lines) in test/memory/src/longmemeval/recallStrategy.ts:143"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-61ccb6657608ee36", "name": "`fetch()` without try/.catch or AbortSignal \u2014 test/memory/src/longmemeval/dataset.ts:61", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 test/memory/src/longmemeval/dataset.ts:61"}, "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-cedeb0f1e4f043b6", "name": "Commented-code block (5 lines) in test/memory/src/longmemeval/memoryVaultStrategy.ts:196", "shortDescription": {"text": "Commented-code block (5 lines) in test/memory/src/longmemeval/memoryVaultStrategy.ts:196"}, "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-9cabfe875e055618", "name": "Commented-code block (5 lines) in test/memory/src/longmemeval/suite.ts:344", "shortDescription": {"text": "Commented-code block (5 lines) in test/memory/src/longmemeval/suite.ts:344"}, "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-d4fa83e5c390e904", "name": "`fetch()` without try/.catch or AbortSignal \u2014 test/memory/src/longmemeval/suite.ts:375", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 test/memory/src/longmemeval/suite.ts:375"}, "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-a34140434d8c9ff1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 test/tools/googleAuth.ts:40", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 test/tools/googleAuth.ts:40"}, "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-d5e4783b8d3f5429", "name": "`fetch()` without try/.catch or AbortSignal \u2014 test/tools/memoryVault.ts:99", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 test/tools/memoryVault.ts:99"}, "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-84edf1800770dec0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 test/tools/googleDrive.ts:48", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 test/tools/googleDrive.ts:48"}, "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-7f11a349fc52fe2c", "name": "Commented-code block (6 lines) in test/tools/toolSelection.ts:227", "shortDescription": {"text": "Commented-code block (6 lines) in test/tools/toolSelection.ts:227"}, "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-770b30b333cef6e1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 test/tools/slide-generation/setup.ts:58", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 test/tools/slide-generation/setup.ts:58"}, "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-eb78c604bf8e387f", "name": "Commented-code block (5 lines) in test/tools/slide-generation/compositionLayouts.test.ts:271", "shortDescription": {"text": "Commented-code block (5 lines) in test/tools/slide-generation/compositionLayouts.test.ts:271"}, "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-be8f1c61d75b6573", "name": "Commented-code block (6 lines) in test/tools/slide-generation/requestProbe.test.ts:83", "shortDescription": {"text": "Commented-code block (6 lines) in test/tools/slide-generation/requestProbe.test.ts:83"}, "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-7391761d07b2f6ba", "name": "Commented-code block (7 lines) in test/tools/app-generation/kanban.test.ts:163", "shortDescription": {"text": "Commented-code block (7 lines) in test/tools/app-generation/kanban.test.ts:163"}, "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-f623573f99a7fc33", "name": "Commented-code block (5 lines) in test/tools/app-generation/chat-app-debug.test.ts:69", "shortDescription": {"text": "Commented-code block (5 lines) in test/tools/app-generation/chat-app-debug.test.ts:69"}, "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-51dbf90b6ad9e4e9", "name": "28 env vars used in code but missing from .env.example", "shortDescription": {"text": "28 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ANUMA_API_URL`, `ANUMA_PORTAL_URL`, `API_URL`, `BENCHMARK_QUIET`, `COMPARE_MODELS`, `COMPARE_OUT`, `COMPARE_PROMPT`, `DATABASE_URL` + 20 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/24247"}, "properties": {"repository": "anuma-ai/sdk", "repoUrl": "https://github.com/anuma-ai/sdk", "branch": "main"}, "results": [{"ruleId": "scanner-4c228db276795dae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/probe-extract.ts:53"}, "properties": {"repobilityId": "485d8db4e9021975", "scanner": "scanner-primary", "fingerprint": "4c228db276795dae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9d53ecba6a45bad8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/precompute-bench-decompositions.ts:26"}, "properties": {"repobilityId": "78e5f6d600089488", "scanner": "scanner-primary", "fingerprint": "9d53ecba6a45bad8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5eaefb2ea96887db", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-schema-docs.ts:109"}, "properties": {"repobilityId": "cbf686dff89ca073", "scanner": "scanner-primary", "fingerprint": "5eaefb2ea96887db", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-82bdd446b518037d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/aggregate-longmem-transcripts.ts:102"}, "properties": {"repobilityId": "62446af0eff1d168", "scanner": "scanner-primary", "fingerprint": "82bdd446b518037d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-28135dc701ef0b42", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/update-model-apis.ts:118"}, "properties": {"repobilityId": "b9185bd08ff0873c", "scanner": "scanner-primary", "fingerprint": "28135dc701ef0b42", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bbdff1dc92e01234", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/probe-reranker.ts:6"}, "properties": {"repobilityId": "b4e24845a7775151", "scanner": "scanner-primary", "fingerprint": "bbdff1dc92e01234", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7e6af910425f3883", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generateSearchCentroids.ts:256"}, "properties": {"repobilityId": "7d17e2b106a5e5cd", "scanner": "scanner-primary", "fingerprint": "7e6af910425f3883", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1c485c7042df5c7f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/explore-composite.ts:27"}, "properties": {"repobilityId": "11759b88043d5c0e", "scanner": "scanner-primary", "fingerprint": "1c485c7042df5c7f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-595ba07c1b21e6fa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generateStockPriceCentroids.ts:167"}, "properties": {"repobilityId": "3570c32668d9593d", "scanner": "scanner-primary", "fingerprint": "595ba07c1b21e6fa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d8c31ad2d02d0602", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/compare-app-gen-runs.ts:71"}, "properties": {"repobilityId": "2830c3ef793d92f1", "scanner": "scanner-primary", "fingerprint": "d8c31ad2d02d0602", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5c3f57d717764c5c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generateCryptoPriceCentroids.ts:190"}, "properties": {"repobilityId": "56d12d47e2f79392", "scanner": "scanner-primary", "fingerprint": "5c3f57d717764c5c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-55b76a9f54ba3165", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/precompute-bench-entities.ts:78"}, "properties": {"repobilityId": "85f75c0b6d497f71", "scanner": "scanner-primary", "fingerprint": "55b76a9f54ba3165", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a65809d6d330a0d6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/bench-recall-latency.ts:80"}, "properties": {"repobilityId": "5d5e539bcb409edd", "scanner": "scanner-primary", "fingerprint": "a65809d6d330a0d6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-43977f6f7b279bcf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generateWeatherCentroids.ts:137"}, "properties": {"repobilityId": "698525905bd3a7fe", "scanner": "scanner-primary", "fingerprint": "43977f6f7b279bcf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-828c86025d4b3bc6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/index.ts:47"}, "properties": {"repobilityId": "867f5b4f120dafeb", "scanner": "scanner-primary", "fingerprint": "828c86025d4b3bc6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-533e2fdfae2c33a5", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/clientCompat.ts:25"}, "properties": {"repobilityId": "31aa7a42cb202fef", "scanner": "scanner-primary", "fingerprint": "533e2fdfae2c33a5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-47368b415252e784", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/tools/appBuilderPrompt.ts:64"}, "properties": {"repobilityId": "1a2fcb1d788e8f55", "scanner": "scanner-primary", "fingerprint": "47368b415252e784", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-c4c5c513d49de338", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/react/useEncryption.ts:621"}, "properties": {"repobilityId": "d2e5e3f71e30a631", "scanner": "scanner-primary", "fingerprint": "c4c5c513d49de338", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ace93c9d0e89e639", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/react/chart.tsx:69"}, "properties": {"repobilityId": "bca90b7c21553c04", "scanner": "scanner-primary", "fingerprint": "ace93c9d0e89e639", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-418d37ebb166b3c9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/react/useDropboxBackup.ts:82"}, "properties": {"repobilityId": "cea76c1e453b0280", "scanner": "scanner-primary", "fingerprint": "418d37ebb166b3c9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-22983a43c7160860", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/react/useChatStorage.ts:856"}, "properties": {"repobilityId": "b1baa10ec5f0f672", "scanner": "scanner-primary", "fingerprint": "22983a43c7160860", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5632da030bc5e55d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/react/useChat.ts:122"}, "properties": {"repobilityId": "d5b2db29082e0672", "scanner": "scanner-primary", "fingerprint": "5632da030bc5e55d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-55a3fb66cc6688d0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/react/useProjects.ts:114"}, "properties": {"repobilityId": "9bcfb330955abd8e", "scanner": "scanner-primary", "fingerprint": "55a3fb66cc6688d0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6f7a0708fb8ed5cb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/react/useICloudBackup.ts:86"}, "properties": {"repobilityId": "b6fb4a9a683295ed", "scanner": "scanner-primary", "fingerprint": "6f7a0708fb8ed5cb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b05a9075a1823c14", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/react/useGoogleDriveBackup.ts:85"}, "properties": {"repobilityId": "d01bb702c88c7b43", "scanner": "scanner-primary", "fingerprint": "b05a9075a1823c14", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ef7737f6248ebe2a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/lib/chat/toolLoop.ts:1308"}, "properties": {"repobilityId": "30cba09e1ccb1048", "scanner": "scanner-primary", "fingerprint": "ef7737f6248ebe2a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-da5ac0cec5a8d3fd", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/lib/chat/useChat/strategies/completions.ts:658"}, "properties": {"repobilityId": "9c0251a882c0dd59", "scanner": "scanner-primary", "fingerprint": "da5ac0cec5a8d3fd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-1352925c08b0151b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/polyfills/index.ts:72"}, "properties": {"repobilityId": "217598fe23d722c6", "scanner": "scanner-primary", "fingerprint": "1352925c08b0151b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-742cc2e6e4bb8839", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/expo/index.ts:65"}, "properties": {"repobilityId": "e667f0b3da79c759", "scanner": "scanner-primary", "fingerprint": "742cc2e6e4bb8839", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c4a964f8c79d720a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/expo/useChat.ts:108"}, "properties": {"repobilityId": "143876636e1b0dd9", "scanner": "scanner-primary", "fingerprint": "c4a964f8c79d720a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e129a37847b2f1a1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/classifier/promptRouting.ts:762"}, "properties": {"repobilityId": "234e91431bb10193", "scanner": "scanner-primary", "fingerprint": "e129a37847b2f1a1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-97e97ea0889044dc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/classifier/webSearchClassifier.ts:300"}, "properties": {"repobilityId": "fb8f240485fd1a74", "scanner": "scanner-primary", "fingerprint": "97e97ea0889044dc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b9bfa048e54d5b97", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/memory/longmemeval.ts:138"}, "properties": {"repobilityId": "40a6a459aac3d609", "scanner": "scanner-primary", "fingerprint": "b9bfa048e54d5b97", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-641a1d568346a24e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/memory/src/vault/benchmark.test.ts:452"}, "properties": {"repobilityId": "d35abdfa5f4d8e71", "scanner": "scanner-primary", "fingerprint": "641a1d568346a24e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8ce7dee2585b22d5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/memory/src/longmemeval/ensembleStrategy.ts:64"}, "properties": {"repobilityId": "7a6fd055a48e6178", "scanner": "scanner-primary", "fingerprint": "8ce7dee2585b22d5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e5c16cbc29d5fd81", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/memory/src/longmemeval/reporter.ts:42"}, "properties": {"repobilityId": "13bf38c4d6f34d6c", "scanner": "scanner-primary", "fingerprint": "e5c16cbc29d5fd81", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-97961c1fb96926a6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/memory/src/longmemeval/recallStrategy.ts:94"}, "properties": {"repobilityId": "02b7f48d26dc1a85", "scanner": "scanner-primary", "fingerprint": "97961c1fb96926a6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f9a996d8ab9ebb9b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/memory/src/longmemeval/dataset.ts:58"}, "properties": {"repobilityId": "af5b3e759a1219a1", "scanner": "scanner-primary", "fingerprint": "f9a996d8ab9ebb9b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bb0eaf6c4cbe1fb8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/memory/src/longmemeval/memoryEngineStrategy.ts:47"}, "properties": {"repobilityId": "1dc67a368c816161", "scanner": "scanner-primary", "fingerprint": "bb0eaf6c4cbe1fb8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2e5c807047f72178", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/memory/src/longmemeval/memoryVaultStrategy.ts:82"}, "properties": {"repobilityId": "143fe1ac0065f543", "scanner": "scanner-primary", "fingerprint": "2e5c807047f72178", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cc21f23ce4dae9d3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/memory/src/longmemeval/suite.ts:76"}, "properties": {"repobilityId": "8b5659a836ab466d", "scanner": "scanner-primary", "fingerprint": "cc21f23ce4dae9d3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3f4cab8bd8e4aad2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/index.ts:42"}, "properties": {"repobilityId": "feabee66d3cbe970", "scanner": "scanner-primary", "fingerprint": "3f4cab8bd8e4aad2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ce9e1373623a715a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/setup.ts:47"}, "properties": {"repobilityId": "903d2825b06b13cb", "scanner": "scanner-primary", "fingerprint": "ce9e1373623a715a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6b3ae7df7f83031b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/requestProbe.ts:100"}, "properties": {"repobilityId": "b6e7ba45a1a04908", "scanner": "scanner-primary", "fingerprint": "6b3ae7df7f83031b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5ed2a619398af0ec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/recorder.ts:33"}, "properties": {"repobilityId": "8b9d54fde2ae5147", "scanner": "scanner-primary", "fingerprint": "5ed2a619398af0ec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6ecd5fc488653b58", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/googleCalendar.ts:35"}, "properties": {"repobilityId": "34a081e7482af466", "scanner": "scanner-primary", "fingerprint": "6ecd5fc488653b58", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-27096d0ba65be20b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/googleDrive.ts:66"}, "properties": {"repobilityId": "2214d12266026b85", "scanner": "scanner-primary", "fingerprint": "27096d0ba65be20b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb9232ea7250987a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/toolSelection.ts:800"}, "properties": {"repobilityId": "8a05743c9be80711", "scanner": "scanner-primary", "fingerprint": "cb9232ea7250987a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c5cb028a79d2e8e5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/slide-generation.test.ts:186"}, "properties": {"repobilityId": "4297887771f0e69f", "scanner": "scanner-primary", "fingerprint": "c5cb028a79d2e8e5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c5e1894a0aa4f581", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/setup.ts:83"}, "properties": {"repobilityId": "2e910f6ed5e892fd", "scanner": "scanner-primary", "fingerprint": "c5e1894a0aa4f581", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6aae1bbaf68e78a6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/compositionLayouts.test.ts:139"}, "properties": {"repobilityId": "8d439dc3fa927110", "scanner": "scanner-primary", "fingerprint": "6aae1bbaf68e78a6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-116a2de9f6894b78", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/prompts.test.ts:105"}, "properties": {"repobilityId": "ee5462c5acca4408", "scanner": "scanner-primary", "fingerprint": "116a2de9f6894b78", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c150eda73f5ea4fd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/rerenderDecks.ts:46"}, "properties": {"repobilityId": "2b6f200a2a42a651", "scanner": "scanner-primary", "fingerprint": "c150eda73f5ea4fd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-27e8756ff0d3be99", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/probeAccent.ts:71"}, "properties": {"repobilityId": "1669264e0561cdea", "scanner": "scanner-primary", "fingerprint": "27e8756ff0d3be99", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aa9bd417a3881176", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/editProbe.test.ts:136"}, "properties": {"repobilityId": "1674c85dc1534892", "scanner": "scanner-primary", "fingerprint": "aa9bd417a3881176", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb7cf7c194ad8ccd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/dumpCatalog.ts:66"}, "properties": {"repobilityId": "2afe53a94e1e40d0", "scanner": "scanner-primary", "fingerprint": "cb7cf7c194ad8ccd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-623f2e330f55d4d7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/deckEditingTimings.test.ts:122"}, "properties": {"repobilityId": "b32b3ca4ede13ca9", "scanner": "scanner-primary", "fingerprint": "623f2e330f55d4d7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-003a0a54a9ee3bfc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/runModelComparison.ts:98"}, "properties": {"repobilityId": "73f3316a18098441", "scanner": "scanner-primary", "fingerprint": "003a0a54a9ee3bfc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-41ea19ba7df33f57", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/dumpDesignSystem.ts:161"}, "properties": {"repobilityId": "ddc17a30124cf99f", "scanner": "scanner-primary", "fingerprint": "41ea19ba7df33f57", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b9471a6a364e7bcf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/models.ts:17"}, "properties": {"repobilityId": "af220bcd8ba4eb40", "scanner": "scanner-primary", "fingerprint": "b9471a6a364e7bcf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-26248e6dfba42522", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/slide-generation/requestProbe.test.ts:99"}, "properties": {"repobilityId": "ef56e51781649481", "scanner": "scanner-primary", "fingerprint": "26248e6dfba42522", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4713600d200c93ec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/app-generation/setup.ts:71"}, "properties": {"repobilityId": "a791787b30c66a31", "scanner": "scanner-primary", "fingerprint": "4713600d200c93ec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7b2d6856d2fc6608", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/app-generation/precision-updates.test.ts:176"}, "properties": {"repobilityId": "862299c1f03820d6", "scanner": "scanner-primary", "fingerprint": "7b2d6856d2fc6608", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5d318e39d5d152f1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/app-generation/app-generation.test.ts:162"}, "properties": {"repobilityId": "6679d59463bac7a9", "scanner": "scanner-primary", "fingerprint": "5d318e39d5d152f1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7ece71800702b4b4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/app-generation/flashcards-ai.test.ts:167"}, "properties": {"repobilityId": "30c8e23b06e8e213", "scanner": "scanner-primary", "fingerprint": "7ece71800702b4b4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8738bbbb5820b974", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/app-generation/kanban.test.ts:196"}, "properties": {"repobilityId": "264eb87fee137c93", "scanner": "scanner-primary", "fingerprint": "8738bbbb5820b974", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-febc9cbba3ea6fd9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/app-generation/sequential-changes.test.ts:186"}, "properties": {"repobilityId": "19bad215b1f4bdfe", "scanner": "scanner-primary", "fingerprint": "febc9cbba3ea6fd9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a961bdeb2fc22e6e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/tools/app-generation/photo-gallery.test.ts:169"}, "properties": {"repobilityId": "ff260998245d1f39", "scanner": "scanner-primary", "fingerprint": "a961bdeb2fc22e6e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-40f2ecb4fb0cac8d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/import-impact.mjs:17"}, "properties": {"repobilityId": "89bc7195217a25e7", "scanner": "scanner-primary", "fingerprint": "40f2ecb4fb0cac8d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/import-impact.mjs"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-93b927f93668d575", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/audit.mjs:1"}, "properties": {"repobilityId": "849c2f2d597c3e69", "scanner": "scanner-primary", "fingerprint": "93b927f93668d575", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/audit.mjs"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1c678f03c7cceefd", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in src/tools/appCompleteBridge.browser.test.ts:64"}, "properties": {"repobilityId": "f7b269ca74a3052f", "scanner": "scanner-primary", "fingerprint": "1c678f03c7cceefd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/tools/appCompleteBridge.browser.test.ts"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-ca0be750252fb44f", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in src/tools/appCompleteBridge.test.ts:353"}, "properties": {"repobilityId": "34e77ba3fb49779e", "scanner": "scanner-primary", "fingerprint": "ca0be750252fb44f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/tools/appCompleteBridge.test.ts"}, "region": {"startLine": 353}}}]}, {"ruleId": "scanner-888adb2110638bf1", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/tools/appBuilderPrompt.ts:64"}, "properties": {"repobilityId": "1c9b9ba1f86c6dd4", "scanner": "scanner-primary", "fingerprint": "888adb2110638bf1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/tools/appBuilderPrompt.ts"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-d07301f13e94c974", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in src/tools/appCompleteBridge.ts:495"}, "properties": {"repobilityId": "5e60e8d41e29b556", "scanner": "scanner-primary", "fingerprint": "d07301f13e94c974", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/tools/appCompleteBridge.ts"}, "region": {"startLine": 495}}}]}, {"ruleId": "scanner-5260c90ac08b4446", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in src/tools/appCompleteBridge.ts:234"}, "properties": {"repobilityId": "c466b0ef8db3d407", "scanner": "scanner-primary", "fingerprint": "5260c90ac08b4446", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/tools/appCompleteBridge.ts"}, "region": {"startLine": 234}}}]}, {"ruleId": "scanner-89c9757f17fc0cce", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/react/chart.tsx:69"}, "properties": {"repobilityId": "858abb8f0edd0001", "scanner": "scanner-primary", "fingerprint": "89c9757f17fc0cce", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/react/chart.tsx"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-7a8f8e5e1bb644a1", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in src/lib/auth/notion.test.ts:77"}, "properties": {"repobilityId": "12574ce8281f0bc8", "scanner": "scanner-primary", "fingerprint": "7a8f8e5e1bb644a1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/auth/notion.test.ts"}, "region": {"startLine": 77}}}]}, {"ruleId": "scanner-755cb1df8cc0e217", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "19e2273ae0843bf0", "scanner": "scanner-primary", "fingerprint": "755cb1df8cc0e217", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/api-report.yml"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-755cb1df8cc0e217", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2c021277948eb48b", "scanner": "scanner-primary", "fingerprint": "755cb1df8cc0e217", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/api-report.yml"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-749156c4dcc8bd03", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "994471aebbfcfae5", "scanner": "scanner-primary", "fingerprint": "749156c4dcc8bd03", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/coverage.yml"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-0d6e356bd662a918", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "df85bebea016e7c4", "scanner": "scanner-primary", "fingerprint": "0d6e356bd662a918", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/import-impact.yml"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-acd831e1c457094a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2867ac07eb3ad6d4", "scanner": "scanner-primary", "fingerprint": "acd831e1c457094a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/knip.yml"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-acd831e1c457094a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7228246369139aac", "scanner": "scanner-primary", "fingerprint": "acd831e1c457094a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/knip.yml"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-24ca27bcd07f1b88", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "26a7ed446cf61f4e", "scanner": "scanner-primary", "fingerprint": "24ca27bcd07f1b88", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/longmemeval.yml"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-24ca27bcd07f1b88", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bb2c8bb4669db576", "scanner": "scanner-primary", "fingerprint": "24ca27bcd07f1b88", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/longmemeval.yml"}, "region": {"startLine": 268}}}]}, {"ruleId": "scanner-266162aa2c525a31", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0804dfb44932a56a", "scanner": "scanner-primary", "fingerprint": "266162aa2c525a31", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/lint.yml"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-266162aa2c525a31", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1ae122469e2b1fde", "scanner": "scanner-primary", "fingerprint": "266162aa2c525a31", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/lint.yml"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-266162aa2c525a31", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0804dfb44932a56a", "scanner": "scanner-primary", "fingerprint": "266162aa2c525a31", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/lint.yml"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-266162aa2c525a31", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1ae122469e2b1fde", "scanner": "scanner-primary", "fingerprint": "266162aa2c525a31", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/lint.yml"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-266162aa2c525a31", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0804dfb44932a56a", "scanner": "scanner-primary", "fingerprint": "266162aa2c525a31", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/lint.yml"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-266162aa2c525a31", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1ae122469e2b1fde", "scanner": "scanner-primary", "fingerprint": "266162aa2c525a31", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/lint.yml"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-522e7fdf89cea0b1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "46d50e2c24954031", "scanner": "scanner-primary", "fingerprint": "522e7fdf89cea0b1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/integration-check.yml"}, "region": {"startLine": 77}}}]}, {"ruleId": "scanner-522e7fdf89cea0b1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "684a924ddd24692a", "scanner": "scanner-primary", "fingerprint": "522e7fdf89cea0b1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/integration-check.yml"}, "region": {"startLine": 146}}}]}, {"ruleId": "scanner-522e7fdf89cea0b1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1a629d3cdd04524c", "scanner": "scanner-primary", "fingerprint": "522e7fdf89cea0b1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/integration-check.yml"}, "region": {"startLine": 158}}}]}, {"ruleId": "scanner-6ba9bfab5f283202", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1bf0fd1430c42e23", "scanner": "scanner-primary", "fingerprint": "6ba9bfab5f283202", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build.yml"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-6ba9bfab5f283202", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "467d52ae1d8548b6", "scanner": "scanner-primary", "fingerprint": "6ba9bfab5f283202", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build.yml"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-317f4782582be217", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4af831aca91b92e5", "scanner": "scanner-primary", "fingerprint": "317f4782582be217", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/generated.yml"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-547ba2c19ec60c9b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a7f567bbd8c104bc", "scanner": "scanner-primary", "fingerprint": "547ba2c19ec60c9b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-exports.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-547ba2c19ec60c9b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a216724d8993f9c7", "scanner": "scanner-primary", "fingerprint": "547ba2c19ec60c9b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-exports.yml"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-911551c42373a331", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "caa3060099ef84f2", "scanner": "scanner-primary", "fingerprint": "911551c42373a331", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-portal-client.yml"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-77667a3681fcbc30", "level": "note", "message": {"text": "Very large file: src/tools/appGeneration.test.ts (1400 lines)"}, "properties": {"repobilityId": "89a462e54f4da291", "scanner": "scanner-primary", "fingerprint": "77667a3681fcbc30", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-456280820c1d6ba7", "level": "note", "message": {"text": "Very large file: src/tools/appGeneration.ts (1587 lines)"}, "properties": {"repobilityId": "b849a19ad105eb45", "scanner": "scanner-primary", "fingerprint": "456280820c1d6ba7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9b9d32da348c3c34", "level": "note", "message": {"text": "Very large file: src/tools/slides/index.ts (2059 lines)"}, "properties": {"repobilityId": "398de48dad5f54bc", "scanner": "scanner-primary", "fingerprint": "9b9d32da348c3c34", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1382717ae2103901", "level": "note", "message": {"text": "Very large file: src/tools/slides/tools.test.ts (1374 lines)"}, "properties": {"repobilityId": "b7ab6eea107ea307", "scanner": "scanner-primary", "fingerprint": "1382717ae2103901", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-437223e4d5976348", "level": "note", "message": {"text": "Very large file: src/tools/slides/layouts.ts (3504 lines)"}, "properties": {"repobilityId": "9be4c9d6b2f3c520", "scanner": "scanner-primary", "fingerprint": "437223e4d5976348", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a83e82838296e830", "level": "note", "message": {"text": "Very large file: src/tools/slides/designSystem.ts (5165 lines)"}, "properties": {"repobilityId": "c74746d006a5249c", "scanner": "scanner-primary", "fingerprint": "a83e82838296e830", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-456eccdb5b37692c", "level": "note", "message": {"text": "Very large file: src/react/useEncryption.ts (1503 lines)"}, "properties": {"repobilityId": "1e1ff709b6e02219", "scanner": "scanner-primary", "fingerprint": "456eccdb5b37692c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-04c46d54884083f4", "level": "note", "message": {"text": "Very large file: src/react/useChat.toolLoop.test.tsx (1581 lines)"}, "properties": {"repobilityId": "46ace489c02c8b95", "scanner": "scanner-primary", "fingerprint": "04c46d54884083f4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9efa60b3d72de322", "level": "note", "message": {"text": "Very large file: src/react/useChatStorage.ts (3140 lines)"}, "properties": {"repobilityId": "1f391619d29f1c37", "scanner": "scanner-primary", "fingerprint": "9efa60b3d72de322", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-19d6c791dfbc28d6", "level": "note", "message": {"text": "Very large file: src/client/types.gen.ts (9488 lines)"}, "properties": {"repobilityId": "e23255ccfc47462d", "scanner": "scanner-primary", "fingerprint": "19d6c791dfbc28d6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d6bff6f4e50b6945", "level": "note", "message": {"text": "Very large file: src/client/sdk.gen.ts (1905 lines)"}, "properties": {"repobilityId": "49739c69e86e0a97", "scanner": "scanner-primary", "fingerprint": "d6bff6f4e50b6945", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ba7d6b80828a0cfb", "level": "note", "message": {"text": "Very large file: src/lib/chat/toolLoop.ts (1968 lines)"}, "properties": {"repobilityId": "17a8a3d75b4740c0", "scanner": "scanner-primary", "fingerprint": "ba7d6b80828a0cfb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4642f8e04424453b", "level": "note", "message": {"text": "Very large file: src/lib/memoryVault/searchTool.ts (1523 lines)"}, "properties": {"repobilityId": "52a84a8ede59e6ae", "scanner": "scanner-primary", "fingerprint": "4642f8e04424453b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-db92ae4cf689d386", "level": "note", "message": {"text": "Very large file: src/expo/useChatStorage.ts (1621 lines)"}, "properties": {"repobilityId": "55fe28f79eb7bef8", "scanner": "scanner-primary", "fingerprint": "db92ae4cf689d386", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-44676e8939c7fb37", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/agents/sentinel/package.json"}, "properties": {"repobilityId": "7b295fb639907d50", "scanner": "scanner-primary", "fingerprint": "44676e8939c7fb37", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/agents/sentinel/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-da7ddd320125046d", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/agents/runtime/package.json"}, "properties": {"repobilityId": "ef8b6f267e6560e2", "scanner": "scanner-primary", "fingerprint": "da7ddd320125046d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/agents/runtime/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d57e038b9bd976ba", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/agents/registry/package.json"}, "properties": {"repobilityId": "f42ede7c6aa6fe01", "scanner": "scanner-primary", "fingerprint": "d57e038b9bd976ba", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/agents/registry/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-913e4e4fa7cea9b8", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/agents/haven/package.json"}, "properties": {"repobilityId": "7fa542b157f254e3", "scanner": "scanner-primary", "fingerprint": "913e4e4fa7cea9b8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/agents/haven/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "d570836231b14cac", "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": "78392756ae78de2c", "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": "05d5301549e08306", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "af860123f7f26eca", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-619c19b0f5e3f50a", "level": "note", "message": {"text": "Legacy-named symbol `__anuma_connector_error_v1` in packages/agents/runtime/src/runAgentRequest.ts:9"}, "properties": {"repobilityId": "95bea114ad077d9e", "scanner": "scanner-primary", "fingerprint": "619c19b0f5e3f50a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5d3ff6616a5d7248", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/agents/runtime/src/runAgentRequest.ts:190"}, "properties": {"repobilityId": "f38d31ddd78e06b7", "scanner": "scanner-primary", "fingerprint": "5d3ff6616a5d7248", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a06b35f4c1f97ecf", "level": "note", "message": {"text": "Legacy-named symbol `haven_v1` in packages/agents/runtime/src/types.ts:18"}, "properties": {"repobilityId": "b2ccd97e1906eac2", "scanner": "scanner-primary", "fingerprint": "a06b35f4c1f97ecf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-973750fd3fcfaabd", "level": "note", "message": {"text": "Legacy-named symbol `haven_v1` in packages/agents/runtime/test/fixtures.ts:20"}, "properties": {"repobilityId": "116a96cab8331b72", "scanner": "scanner-primary", "fingerprint": "973750fd3fcfaabd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-07611906cd48dfe8", "level": "note", "message": {"text": "Legacy-named symbol `__anuma_connector_error_v1` in packages/agents/runtime/test/e2e.test.ts:157"}, "properties": {"repobilityId": "9078a9b68d784c2d", "scanner": "scanner-primary", "fingerprint": "07611906cd48dfe8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5dcc40c42da69036", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/aggregate-longmem-transcripts.ts:54"}, "properties": {"repobilityId": "0c5237d470c480f4", "scanner": "scanner-primary", "fingerprint": "5dcc40c42da69036", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d46d31af07d3f571", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/patch-generated-client.mjs:28"}, "properties": {"repobilityId": "0bd5eec28110e853", "scanner": "scanner-primary", "fingerprint": "d46d31af07d3f571", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-79783dc1ac3d55c7", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/generateSearchCentroids.ts:237"}, "properties": {"repobilityId": "70ac3b334f5d9b84", "scanner": "scanner-primary", "fingerprint": "79783dc1ac3d55c7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1070cea1b8c44e29", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/generateCryptoPriceCentroids.ts:65"}, "properties": {"repobilityId": "3b28bfad0cb63f1e", "scanner": "scanner-primary", "fingerprint": "1070cea1b8c44e29", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-314b34408f4ebed8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/precompute-bench-entities.ts:43"}, "properties": {"repobilityId": "536350f46f3cb96a", "scanner": "scanner-primary", "fingerprint": "314b34408f4ebed8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4888aca7b0acd136", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/audit.mjs:42"}, "properties": {"repobilityId": "430a607bc328358b", "scanner": "scanner-primary", "fingerprint": "4888aca7b0acd136", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2c401ba0f2742bad", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/index.ts:92"}, "properties": {"repobilityId": "26a02e17c6443821", "scanner": "scanner-primary", "fingerprint": "2c401ba0f2742bad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4eefc4f7525978b0", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/clientCompat.ts:1"}, "properties": {"repobilityId": "ad9c8eef081a076d", "scanner": "scanner-primary", "fingerprint": "4eefc4f7525978b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4101394cae082b18", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/tools/appGeneration.test.ts:183"}, "properties": {"repobilityId": "26bad2d439ddbed4", "scanner": "scanner-primary", "fingerprint": "4101394cae082b18", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6271bbf9fcac29de", "level": "note", "message": {"text": "Legacy-named symbol `__anuma_connector_error_v1` in src/tools/gmail.test.ts:79"}, "properties": {"repobilityId": "255a55a1fce5d358", "scanner": "scanner-primary", "fingerprint": "6271bbf9fcac29de", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-251d3bcd668edfc9", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/tools/appAudit.ts:349"}, "properties": {"repobilityId": "ee80ef0ec6e0cf4f", "scanner": "scanner-primary", "fingerprint": "251d3bcd668edfc9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-05076a57e7d89394", "level": "note", "message": {"text": "Legacy-named symbol `__anuma_connector_error_v1` in src/tools/gmail.ts:19"}, "properties": {"repobilityId": "200444b98943f56f", "scanner": "scanner-primary", "fingerprint": "05076a57e7d89394", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-baf7d3739bf2460c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/tools/googleDrive.ts:329"}, "properties": {"repobilityId": "6df69ac87509c6e1", "scanner": "scanner-primary", "fingerprint": "baf7d3739bf2460c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-88df00d2dadcd0fa", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/tools/appCompleteBridge.test.ts:34"}, "properties": {"repobilityId": "2413adc13de39032", "scanner": "scanner-primary", "fingerprint": "88df00d2dadcd0fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-495106a77fcbec06", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/tools/appExport.ts:235"}, "properties": {"repobilityId": "1fd772f59481617b", "scanner": "scanner-primary", "fingerprint": "495106a77fcbec06", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c19057f27ae29a8c", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/tools/appAudit.test.ts:265"}, "properties": {"repobilityId": "a8873a4588689e38", "scanner": "scanner-primary", "fingerprint": "c19057f27ae29a8c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-46b9e084bd602464", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/tools/appGeneration.ts:909"}, "properties": {"repobilityId": "9bc9d45c9c18ef00", "scanner": "scanner-primary", "fingerprint": "46b9e084bd602464", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cd352c6d1822b50b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/tools/notion.ts:159"}, "properties": {"repobilityId": "17fe01b797bed418", "scanner": "scanner-primary", "fingerprint": "cd352c6d1822b50b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ac37fdeb0d2d6797", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/tools/appCompleteBridge.ts:156"}, "properties": {"repobilityId": "f027578bd6e2a5f1", "scanner": "scanner-primary", "fingerprint": "ac37fdeb0d2d6797", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-964bb5470d290ab8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/tools/appCompleteBridge.ts:52"}, "properties": {"repobilityId": "14b89a899449bcac", "scanner": "scanner-primary", "fingerprint": "964bb5470d290ab8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-57bad2aa7eb91da3", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/tools/appExport.browser.test.ts:201"}, "properties": {"repobilityId": "d01e1af97785cab0", "scanner": "scanner-primary", "fingerprint": "57bad2aa7eb91da3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4eabf59bc8256c87", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/tools/appExport.test.ts:82"}, "properties": {"repobilityId": "f4374e4ee9426326", "scanner": "scanner-primary", "fingerprint": "4eabf59bc8256c87", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-db8b41023d258268", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/tools/slides/index.ts:747"}, "properties": {"repobilityId": "ec6238f61cd29189", "scanner": "scanner-primary", "fingerprint": "db8b41023d258268", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7a6f9ce21d33849b", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/tools/slides/tools.test.ts:500"}, "properties": {"repobilityId": "69a7cd7e93d82352", "scanner": "scanner-primary", "fingerprint": "7a6f9ce21d33849b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ca1202755799e399", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/tools/slides/layouts.ts:11"}, "properties": {"repobilityId": "9e409dd22f59d778", "scanner": "scanner-primary", "fingerprint": "ca1202755799e399", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e86205aa95788b1", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/tools/slides/designSystem.test.ts:146"}, "properties": {"repobilityId": "af630411c3e81566", "scanner": "scanner-primary", "fingerprint": "2e86205aa95788b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6cf98ffe60ae0d15", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/tools/slides/jsx.ts:554"}, "properties": {"repobilityId": "f8be445885948d8a", "scanner": "scanner-primary", "fingerprint": "6cf98ffe60ae0d15", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b126175f5a7ba78f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/tools/slides/fonts.test.ts:35"}, "properties": {"repobilityId": "225e13fd609c75c7", "scanner": "scanner-primary", "fingerprint": "b126175f5a7ba78f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-acb4561418e81dd6", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/tools/slides/designSystem.ts:640"}, "properties": {"repobilityId": "d82184c2687c1bf4", "scanner": "scanner-primary", "fingerprint": "acb4561418e81dd6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-04a3ae1ae2f6bc20", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/react/useEncryption.ts:651"}, "properties": {"repobilityId": "289aef825295002f", "scanner": "scanner-primary", "fingerprint": "04a3ae1ae2f6bc20", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-426cf844e3f8b749", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/react/useChat.toolLoop.test.tsx:1470"}, "properties": {"repobilityId": "801a89f5a5c7a224", "scanner": "scanner-primary", "fingerprint": "426cf844e3f8b749", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d5de4f57dc7f4215", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/react/useChatStorage.ts:219"}, "properties": {"repobilityId": "304d00aa94896e39", "scanner": "scanner-primary", "fingerprint": "d5de4f57dc7f4215", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9a353872db698672", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/react/anumaRuntime.tsx:182"}, "properties": {"repobilityId": "b52a59e718e0ab67", "scanner": "scanner-primary", "fingerprint": "9a353872db698672", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-301594a9ea92b5ee", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/react/useProjects.ts:162"}, "properties": {"repobilityId": "f7614b33c9dafd2a", "scanner": "scanner-primary", "fingerprint": "301594a9ea92b5ee", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ba5f0b9ddf4b699f", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/react/useChat.test.tsx:254"}, "properties": {"repobilityId": "c48438e738724ea1", "scanner": "scanner-primary", "fingerprint": "ba5f0b9ddf4b699f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-edb92d212afa7529", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/design/useCanvasGestures.ts:156"}, "properties": {"repobilityId": "a4e90e5bab241c59", "scanner": "scanner-primary", "fingerprint": "edb92d212afa7529", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-88d5d94ee1342944", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/lib/memory/mmr.ts:42"}, "properties": {"repobilityId": "9b4cd192d7bb8e75", "scanner": "scanner-primary", "fingerprint": "88d5d94ee1342944", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e2088120b8f62b4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/memory/reflect.ts:58"}, "properties": {"repobilityId": "d9c39093e7b1b818", "scanner": "scanner-primary", "fingerprint": "3e2088120b8f62b4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7f88029b7d877fbd", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/memory/queryEntities.ts:96"}, "properties": {"repobilityId": "dba1907085777157", "scanner": "scanner-primary", "fingerprint": "7f88029b7d877fbd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c32d36754ea9595a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/memory/portalLlm.ts:109"}, "properties": {"repobilityId": "f2d064ab3a57982e", "scanner": "scanner-primary", "fingerprint": "c32d36754ea9595a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d58c1323d603575d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/memory/portalLlm.ts:51"}, "properties": {"repobilityId": "f2f9531edebcec3c", "scanner": "scanner-primary", "fingerprint": "d58c1323d603575d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8b923adfbf5a4454", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/memory/recall.test.ts:240"}, "properties": {"repobilityId": "52df1a028fe2332c", "scanner": "scanner-primary", "fingerprint": "8b923adfbf5a4454", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff80af842a6932d0", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/memory/recallTool.ts:74"}, "properties": {"repobilityId": "8632c68cde2cf070", "scanner": "scanner-primary", "fingerprint": "ff80af842a6932d0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30057fe895a858e0", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/memory/types.ts:126"}, "properties": {"repobilityId": "8b89638e9c216272", "scanner": "scanner-primary", "fingerprint": "30057fe895a858e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9e1d578298a4efd1", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/memory/recall.ts:231"}, "properties": {"repobilityId": "9b2d1e832a42d01b", "scanner": "scanner-primary", "fingerprint": "9e1d578298a4efd1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d73610de61dac428", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/memory/consolidate.ts:145"}, "properties": {"repobilityId": "0d43ac0d558f7741", "scanner": "scanner-primary", "fingerprint": "d73610de61dac428", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4ff2c4162f3b3a38", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/memory/consolidate.ts:104"}, "properties": {"repobilityId": "eef6771c5d6dca28", "scanner": "scanner-primary", "fingerprint": "4ff2c4162f3b3a38", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d3de7bd6157f4ab3", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/tools/serverTools.ts:851"}, "properties": {"repobilityId": "c8e6b071b7d5180f", "scanner": "scanner-primary", "fingerprint": "d3de7bd6157f4ab3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-551cdddec3924a1a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/tools/serverTools.ts:339"}, "properties": {"repobilityId": "72cc50cfd389f06e", "scanner": "scanner-primary", "fingerprint": "551cdddec3924a1a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9167fe4313da2faa", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/chat/xhrTransport.ts:111"}, "properties": {"repobilityId": "94b5e50c4278f044", "scanner": "scanner-primary", "fingerprint": "9167fe4313da2faa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d86a44f3b45d8c62", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/chat/summarize.ts:508"}, "properties": {"repobilityId": "f8c8abc2ad9eef39", "scanner": "scanner-primary", "fingerprint": "d86a44f3b45d8c62", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d10bc781be9aa53", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/chat/summarize.ts:364"}, "properties": {"repobilityId": "31c07f7c48b5dfc6", "scanner": "scanner-primary", "fingerprint": "5d10bc781be9aa53", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-555cc959d32cd28a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/chat/summarize.test.ts:157"}, "properties": {"repobilityId": "044d76746004565c", "scanner": "scanner-primary", "fingerprint": "555cc959d32cd28a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-937243ef4aea300a", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/lib/chat/toolLoop.ts:180"}, "properties": {"repobilityId": "491e3758bc6b8cfc", "scanner": "scanner-primary", "fingerprint": "937243ef4aea300a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-95acd7b949c44803", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/chat/toolLoop.streamRetry.test.ts:130"}, "properties": {"repobilityId": "c15d97630bd4a207", "scanner": "scanner-primary", "fingerprint": "95acd7b949c44803", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-912a5e16e5c655ab", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/lib/chat/useChat/strategies/responses.ts:216"}, "properties": {"repobilityId": "a8074c740c7f13ae", "scanner": "scanner-primary", "fingerprint": "912a5e16e5c655ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5b71be92ce4d400a", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/chat/useChat/strategies/portalShape.test.ts:18"}, "properties": {"repobilityId": "2f856d9c2fa27b2c", "scanner": "scanner-primary", "fingerprint": "5b71be92ce4d400a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-59782151eeb94401", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/lib/chat/useChat/strategies/responses.test.ts:152"}, "properties": {"repobilityId": "a83b6553d23c5ad3", "scanner": "scanner-primary", "fingerprint": "59782151eeb94401", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4750e97ddd31b61c", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/chat/useChat/strategies/completions.ts:290"}, "properties": {"repobilityId": "cc2c53cf96c6bd8e", "scanner": "scanner-primary", "fingerprint": "4750e97ddd31b61c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-faccb107f2b11ee8", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/chat/useChat/strategies/completions.test.ts:105"}, "properties": {"repobilityId": "9f0529ca8d6331c3", "scanner": "scanner-primary", "fingerprint": "faccb107f2b11ee8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fbe829e658218923", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/memoryVault/searchTool.ts:471"}, "properties": {"repobilityId": "230199f8a88dd93a", "scanner": "scanner-primary", "fingerprint": "fbe829e658218923", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e448d0253695d102", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/memoryVault/decomposeQuery.ts:74"}, "properties": {"repobilityId": "a46a4af4a2846c6c", "scanner": "scanner-primary", "fingerprint": "e448d0253695d102", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-61d8b3e845327030", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/backup/google/api.ts:40"}, "properties": {"repobilityId": "e4d79c6339a9f604", "scanner": "scanner-primary", "fingerprint": "61d8b3e845327030", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-31977668ecdbdae4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/backup/google/backup.ts:111"}, "properties": {"repobilityId": "7d4432d570cb8ada", "scanner": "scanner-primary", "fingerprint": "31977668ecdbdae4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2e51b3ad7a697133", "level": "note", "message": {"text": "Legacy-named symbol `create_folder_v2` in src/lib/backup/dropbox/api.ts:67"}, "properties": {"repobilityId": "ac2e69248adb7589", "scanner": "scanner-primary", "fingerprint": "2e51b3ad7a697133", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a92e9af4ea7e46d8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/backup/dropbox/api.ts:97"}, "properties": {"repobilityId": "51704e9a74fdb850", "scanner": "scanner-primary", "fingerprint": "a92e9af4ea7e46d8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-342c13fb6fefaf9b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/backup/dropbox/backup.ts:76"}, "properties": {"repobilityId": "4a1a8f208a3a9ee6", "scanner": "scanner-primary", "fingerprint": "342c13fb6fefaf9b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bc56b00c13c0301f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/backup/icloud/api.ts:434"}, "properties": {"repobilityId": "7fc120da7881a4f3", "scanner": "scanner-primary", "fingerprint": "bc56b00c13c0301f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c7ca4b6476583403", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/backup/icloud/backup.ts:76"}, "properties": {"repobilityId": "0e05fbd58f78af0f", "scanner": "scanner-primary", "fingerprint": "c7ca4b6476583403", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b0e5bb875d0582db", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/sse/keepalive.ts:131"}, "properties": {"repobilityId": "33a3d415dc56808a", "scanner": "scanner-primary", "fingerprint": "b0e5bb875d0582db", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-71971063de24fb65", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/auth/notion-primitives.ts:185"}, "properties": {"repobilityId": "79e358b775c1dedc", "scanner": "scanner-primary", "fingerprint": "71971063de24fb65", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7759a76f429339b5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/auth/notion.ts:392"}, "properties": {"repobilityId": "b2a3df7468b5b38a", "scanner": "scanner-primary", "fingerprint": "7759a76f429339b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1f7f5108072e8097", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/auth/notion.ts:160"}, "properties": {"repobilityId": "02cad3aa1e004bf5", "scanner": "scanner-primary", "fingerprint": "1f7f5108072e8097", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-30ffb97eef516e9a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/processors/encoding.ts:22"}, "properties": {"repobilityId": "b671877ee02fc5d3", "scanner": "scanner-primary", "fingerprint": "30ffb97eef516e9a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f1517d7b1d089a5a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/db/schema.ts:730"}, "properties": {"repobilityId": "bae8c42e9fae187a", "scanner": "scanner-primary", "fingerprint": "f1517d7b1d089a5a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8a6eabcb12f23635", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/project/operations.ts:63"}, "properties": {"repobilityId": "fe32dd5784c007d2", "scanner": "scanner-primary", "fingerprint": "8a6eabcb12f23635", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dd749348f9cf45a0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/media/operations.ts:195"}, "properties": {"repobilityId": "3f86993ca2f706cf", "scanner": "scanner-primary", "fingerprint": "dd749348f9cf45a0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7936739d3b965163", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/media/operations.relink.test.ts:59"}, "properties": {"repobilityId": "a9808bcca9b93fe0", "scanner": "scanner-primary", "fingerprint": "7936739d3b965163", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7318cf49a803764d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/db/chat/lazyDecrypt.ts:181"}, "properties": {"repobilityId": "854c710e4ccbcdd1", "scanner": "scanner-primary", "fingerprint": "7318cf49a803764d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4df27268b5117b5f", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/lib/db/chat/operations.ts:813"}, "properties": {"repobilityId": "087502b9fc521441", "scanner": "scanner-primary", "fingerprint": "4df27268b5117b5f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5b2a5a71a1290a96", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/chat/operations.ts:200"}, "properties": {"repobilityId": "de4e11363727cbd8", "scanner": "scanner-primary", "fingerprint": "5b2a5a71a1290a96", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-22257f1b2b9f41bb", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/db/chat/lazyDecrypt.test.ts:170"}, "properties": {"repobilityId": "fefa7be9a2c44299", "scanner": "scanner-primary", "fingerprint": "22257f1b2b9f41bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c0252cf3220981c9", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/db/chat/encryption.ts:120"}, "properties": {"repobilityId": "e19d5c532f4b5c56", "scanner": "scanner-primary", "fingerprint": "c0252cf3220981c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4bce653272f4e0c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/chat/operations.pinned.test.ts:52"}, "properties": {"repobilityId": "fc5bd4e2238d35a0", "scanner": "scanner-primary", "fingerprint": "d4bce653272f4e0c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8d9cb8a7dcf3f027", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/chat/summaryOperations.ts:43"}, "properties": {"repobilityId": "e6adf1a2ae79a780", "scanner": "scanner-primary", "fingerprint": "8d9cb8a7dcf3f027", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-12d3f32876d5c517", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/lib/db/memoryVault/operations.ts:169"}, "properties": {"repobilityId": "d081c82b033290d5", "scanner": "scanner-primary", "fingerprint": "12d3f32876d5c517", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bf12657c76b81476", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/memoryVault/operations.ts:187"}, "properties": {"repobilityId": "c41dcf70f48bde1a", "scanner": "scanner-primary", "fingerprint": "bf12657c76b81476", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-805b6cbc79f27114", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/appFiles/operations.ts:42"}, "properties": {"repobilityId": "b180f8160b3313eb", "scanner": "scanner-primary", "fingerprint": "805b6cbc79f27114", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-029e46d495d78772", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/entities/operations.ts:56"}, "properties": {"repobilityId": "e67e1c62557e09ba", "scanner": "scanner-primary", "fingerprint": "029e46d495d78772", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0a98dc0b2c628b1d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/settings/operations.ts:26"}, "properties": {"repobilityId": "1c7310f8928180fa", "scanner": "scanner-primary", "fingerprint": "0a98dc0b2c628b1d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-10475525d5511309", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/vaultFolders/operations.ts:91"}, "properties": {"repobilityId": "93f4e7af215928f7", "scanner": "scanner-primary", "fingerprint": "10475525d5511309", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f3536f8bf517ef71", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/db/userPreferences/operations.ts:49"}, "properties": {"repobilityId": "8275ac4912e836f7", "scanner": "scanner-primary", "fingerprint": "f3536f8bf517ef71", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-266fbd3eb50e1c03", "level": "note", "message": {"text": "Legacy-named symbol `__anuma_connector_error_v1` in src/lib/connectors/index.ts:8"}, "properties": {"repobilityId": "86faa1a5ca0d11e0", "scanner": "scanner-primary", "fingerprint": "266fbd3eb50e1c03", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8e224bbb415ad419", "level": "note", "message": {"text": "Legacy-named symbol `__anuma_connector_error_v1` in src/lib/connectors/errors.ts:8"}, "properties": {"repobilityId": "dd1f200074d8ee0b", "scanner": "scanner-primary", "fingerprint": "8e224bbb415ad419", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-86b9ccddf6a21d0d", "level": "note", "message": {"text": "Legacy-named symbol `__anuma_connector_error_v1` in src/lib/connectors/client.ts:18"}, "properties": {"repobilityId": "e2a4ea53f9fca2d8", "scanner": "scanner-primary", "fingerprint": "86b9ccddf6a21d0d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c26ce826c243e159", "level": "note", "message": {"text": "Legacy-named symbol `__anuma_connector_error_v1` in src/lib/connectors/errors.test.ts:14"}, "properties": {"repobilityId": "8e85edcd337639d1", "scanner": "scanner-primary", "fingerprint": "c26ce826c243e159", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5df687e414a22bae", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/storage/WatermelonChatStorageAdapter.ts:197"}, "properties": {"repobilityId": "9cb461a362a1dd8d", "scanner": "scanner-primary", "fingerprint": "5df687e414a22bae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9f392fdf15695444", "level": "none", "message": {"text": "Commented-code block (5 lines) in test/classifier/promptRouting.ts:117"}, "properties": {"repobilityId": "50f8244257b238e7", "scanner": "scanner-primary", "fingerprint": "9f392fdf15695444", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5169cdad8c5b93a0", "level": "none", "message": {"text": "Commented-code block (5 lines) in test/memory/src/vault/benchmark.test.ts:103"}, "properties": {"repobilityId": "b238f11fefadc6a8", "scanner": "scanner-primary", "fingerprint": "5169cdad8c5b93a0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b08f946d5200571c", "level": "none", "message": {"text": "Commented-code block (7 lines) in test/memory/src/longmemeval/recallStrategy.ts:143"}, "properties": {"repobilityId": "397b591849f50743", "scanner": "scanner-primary", "fingerprint": "b08f946d5200571c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-61ccb6657608ee36", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 test/memory/src/longmemeval/dataset.ts:61"}, "properties": {"repobilityId": "1e845e82eff890b1", "scanner": "scanner-primary", "fingerprint": "61ccb6657608ee36", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cedeb0f1e4f043b6", "level": "none", "message": {"text": "Commented-code block (5 lines) in test/memory/src/longmemeval/memoryVaultStrategy.ts:196"}, "properties": {"repobilityId": "dff356cee94b4755", "scanner": "scanner-primary", "fingerprint": "cedeb0f1e4f043b6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9cabfe875e055618", "level": "none", "message": {"text": "Commented-code block (5 lines) in test/memory/src/longmemeval/suite.ts:344"}, "properties": {"repobilityId": "f10593f65d594e23", "scanner": "scanner-primary", "fingerprint": "9cabfe875e055618", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4fa83e5c390e904", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 test/memory/src/longmemeval/suite.ts:375"}, "properties": {"repobilityId": "829ffd7ba648daa8", "scanner": "scanner-primary", "fingerprint": "d4fa83e5c390e904", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a34140434d8c9ff1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 test/tools/googleAuth.ts:40"}, "properties": {"repobilityId": "e75d5f7c215ffd56", "scanner": "scanner-primary", "fingerprint": "a34140434d8c9ff1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d5e4783b8d3f5429", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 test/tools/memoryVault.ts:99"}, "properties": {"repobilityId": "ac926aefbab95fa3", "scanner": "scanner-primary", "fingerprint": "d5e4783b8d3f5429", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-84edf1800770dec0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 test/tools/googleDrive.ts:48"}, "properties": {"repobilityId": "fc3107ca0ca314d3", "scanner": "scanner-primary", "fingerprint": "84edf1800770dec0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7f11a349fc52fe2c", "level": "none", "message": {"text": "Commented-code block (6 lines) in test/tools/toolSelection.ts:227"}, "properties": {"repobilityId": "6107f7c3edfa3d61", "scanner": "scanner-primary", "fingerprint": "7f11a349fc52fe2c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-770b30b333cef6e1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 test/tools/slide-generation/setup.ts:58"}, "properties": {"repobilityId": "d2663110a47b622b", "scanner": "scanner-primary", "fingerprint": "770b30b333cef6e1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eb78c604bf8e387f", "level": "none", "message": {"text": "Commented-code block (5 lines) in test/tools/slide-generation/compositionLayouts.test.ts:271"}, "properties": {"repobilityId": "352ad9154ff73427", "scanner": "scanner-primary", "fingerprint": "eb78c604bf8e387f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be8f1c61d75b6573", "level": "none", "message": {"text": "Commented-code block (6 lines) in test/tools/slide-generation/requestProbe.test.ts:83"}, "properties": {"repobilityId": "a089d9151540d0c3", "scanner": "scanner-primary", "fingerprint": "be8f1c61d75b6573", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7391761d07b2f6ba", "level": "none", "message": {"text": "Commented-code block (7 lines) in test/tools/app-generation/kanban.test.ts:163"}, "properties": {"repobilityId": "99e939bccc380ce3", "scanner": "scanner-primary", "fingerprint": "7391761d07b2f6ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f623573f99a7fc33", "level": "none", "message": {"text": "Commented-code block (5 lines) in test/tools/app-generation/chat-app-debug.test.ts:69"}, "properties": {"repobilityId": "9227286e55f8b49a", "scanner": "scanner-primary", "fingerprint": "f623573f99a7fc33", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-51dbf90b6ad9e4e9", "level": "note", "message": {"text": "28 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "b01aa43f6ad2a3c8", "scanner": "scanner-primary", "fingerprint": "51dbf90b6ad9e4e9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}