{"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-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b59a26285e27dce5", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-access-token.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-access-token.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-7c4ebcf55585b357", "name": "Stray `console.log` in TS/JS \u2014 scripts/eval/suite.scale.eval.ts:103", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/eval/suite.scale.eval.ts:103"}, "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-58998076f9990505", "name": "Stray `console.log` in TS/JS \u2014 scripts/eval/suite.eval.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/eval/suite.eval.ts:32"}, "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-2986a5b67c3c689a", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:43", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:43"}, "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-d6f53a7fb019b4ab", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/agents/[id]/page.tsx:133", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/agents/[id]/page.tsx:133"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c24e08849748eb9a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/user-avatar.tsx:63", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/user-avatar.tsx:63"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f9374b2adfa664d1", "name": "React Flow <MiniMap> without dark background \u2014 src/components/graph-canvas.tsx:32", "shortDescription": {"text": "React Flow <MiniMap> without dark background \u2014 src/components/graph-canvas.tsx:32"}, "fullDescription": {"text": "A bare <MiniMap> renders with the vendor's white default in dark themes. Wrap the canvas in a class that overrides `.react-flow__minimap` background, or pass an explicit `style`/`maskColor`/`bgColor`.\n\nWhy: P1 in CHECKLIST.md \u2014 vendor defaults bleed light through.\nRule id: fq.minimap.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d44be545d54994f1", "name": "React Flow <Controls> without dark theming \u2014 src/components/graph-canvas.tsx:31", "shortDescription": {"text": "React Flow <Controls> without dark theming \u2014 src/components/graph-canvas.tsx:31"}, "fullDescription": {"text": "`<Controls>` ships with white buttons. Override `.react-flow__controls` and `.react-flow__controls-button` in your stylesheet or pass a styled wrapper.\n\nWhy: P1 in CHECKLIST.md \u2014 vendor defaults bleed light through.\nRule id: fq.controls.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e618175e2ec2e323", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/notification-bell.tsx:193", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/notification-bell.tsx:193"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-05972340715a2b66", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/agents/ToolWaterfall.tsx:103", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/agents/ToolWaterfall.tsx:103"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bb5f9d1a0e5fd414", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/agents/SubAgentList.tsx:31", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/agents/SubAgentList.tsx:31"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8e86008866d7cfb7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/agents/AgentDrawer.tsx:93", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/agents/AgentDrawer.tsx:93"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-31402c8d50d29f98", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/monitoring/MonitoringClient.tsx:161", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/monitoring/MonitoringClient.tsx:161"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-13522e0953399d86", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/chat/ChatClient.tsx:783", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/chat/ChatClient.tsx:783"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d12162bffdd9dc61", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/chat/AttachmentChips.tsx:42", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/chat/AttachmentChips.tsx:42"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-78903392fa3c232c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/chat/ProactiveCard.tsx:42", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/chat/ProactiveCard.tsx:42"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-68a31e8aca3f3472", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/chat/Composer.tsx:276", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/chat/Composer.tsx:276"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3ee2726685fded59", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/search/SearchClient.tsx:33", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/search/SearchClient.tsx:33"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7264b42458b3f2f9", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/settings/SettingsRow.tsx:32", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/settings/SettingsRow.tsx:32"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8214adb10ddfe45a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/settings/UserKeysPanel.tsx:186", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/settings/UserKeysPanel.tsx:186"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3c5f5189b8e686db", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/settings/CustomAgentsClient.tsx:185", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/settings/CustomAgentsClient.tsx:185"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eb82481e095b9fcd", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/settings/SettingsMenu.tsx:37", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/settings/SettingsMenu.tsx:37"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-26848244b05b8fa3", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/connectors/ConnectorsClient.tsx:236", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/connectors/ConnectorsClient.tsx:236"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-031c38a96f23e64d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/connectors/McpServersSection.tsx:102", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/connectors/McpServersSection.tsx:102"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e96b85ada66c689f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/workflows/editor/NodesLibraryPanel.tsx:105", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/workflows/editor/NodesLibraryPanel.tsx:105"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-09baafabcb6e16b2", "name": "React Flow <MiniMap> without dark background \u2014 src/components/workflows/editor/WorkflowEditor.tsx:1083", "shortDescription": {"text": "React Flow <MiniMap> without dark background \u2014 src/components/workflows/editor/WorkflowEditor.tsx:1083"}, "fullDescription": {"text": "A bare <MiniMap> renders with the vendor's white default in dark themes. Wrap the canvas in a class that overrides `.react-flow__minimap` background, or pass an explicit `style`/`maskColor`/`bgColor`.\n\nWhy: P1 in CHECKLIST.md \u2014 vendor defaults bleed light through.\nRule id: fq.minimap.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2a8816a7406f03d9", "name": "React Flow <Controls> without dark theming \u2014 src/components/workflows/editor/WorkflowEditor.tsx:1082", "shortDescription": {"text": "React Flow <Controls> without dark theming \u2014 src/components/workflows/editor/WorkflowEditor.tsx:1082"}, "fullDescription": {"text": "`<Controls>` ships with white buttons. Override `.react-flow__controls` and `.react-flow__controls-button` in your stylesheet or pass a styled wrapper.\n\nWhy: P1 in CHECKLIST.md \u2014 vendor defaults bleed light through.\nRule id: fq.controls.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a59dbfb08a482e28", "name": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 src/lib/workflow/validate.ts:62", "shortDescription": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 src/lib/workflow/validate.ts:62"}, "fullDescription": {"text": "React Flow edge labels render with a white rectangle behind the text by default, which scatters bright boxes across a dark canvas. Either drop the label, or override `.react-flow__edge-textbg` and `.react-flow__edge-text` in your stylesheet.\n\nWhy: P-H in CHECKLIST.md \u2014 vendor edge labels bleed white through a dark canvas.\nRule id: fq.edge-label.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3fad4f283eec7d6b", "name": "Docker base image is tag-pinned but not digest-pinned: node:24-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:24-alpine"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a147a88414c56b9f", "name": "Insecure pattern 'eval_used' in scripts/eval/suite.eval.ts:18", "shortDescription": {"text": "Insecure pattern 'eval_used' in scripts/eval/suite.eval.ts:18"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eb8fb105176c54fc", "name": "Insecure pattern 'node_child_process' in scripts/eval/suite.eval.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/eval/suite.eval.ts:2"}, "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-06fe04cab3b2822a", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:43", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:43"}, "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-b35063942cf5da05", "name": "Insecure pattern 'node_child_process' in src/app/api/ocr/route.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/app/api/ocr/route.ts: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-22930f0a70e87d60", "name": "Insecure pattern 'node_child_process' in src/lib/chat/docx-server.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/lib/chat/docx-server.ts: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-b7266f3399bc3192", "name": "Insecure pattern 'node_child_process' in src/lib/chat/pdf-server.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/lib/chat/pdf-server.ts: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-7005d683b23d08d4", "name": "Insecure pattern 'node_child_process' in host-agent/laam-host-metrics.mjs:13", "shortDescription": {"text": "Insecure pattern 'node_child_process' in host-agent/laam-host-metrics.mjs:13"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-19c3ba6c4bad8419", "name": "Insecure pattern 'cors_wildcard' in host-agent/laam-host-metrics.mjs:94", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in host-agent/laam-host-metrics.mjs:94"}, "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-561f9a13768b511b", "name": "Very large file: src/app/api/chat/route.ts (1098 lines)", "shortDescription": {"text": "Very large file: src/app/api/chat/route.ts (1098 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-a5cc1c23b6da6476", "name": "Very large file: src/components/workflows/editor/WorkflowEditor.tsx (1292 lines)", "shortDescription": {"text": "Very large file: src/components/workflows/editor/WorkflowEditor.tsx (1292 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 8 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 63 placeholder/mock markers across 31 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "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 license, ci. 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-194d337d5387d6ef", "name": "Commented-code block (7 lines) in next.config.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in next.config.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2eb0a7212f16b4aa", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/eval/ollama.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/eval/ollama.ts:13"}, "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-8bcfdffdbd1a00eb", "name": "Commented-code block (8 lines) in src/auth.config.ts:4", "shortDescription": {"text": "Commented-code block (8 lines) in src/auth.config.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c297d9ff245dc27b", "name": "Commented-code block (7 lines) in src/app/globals-contrast.test.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/globals-contrast.test.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-91cd77e16633a23f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/route/route.ts:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/route/route.ts:28"}, "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-dc624ad738c554d2", "name": "Commented-code block (5 lines) in src/app/api/pdf/route.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/pdf/route.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ff490f218215116b", "name": "Commented-code block (5 lines) in src/app/api/chat/route.ts:102", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/chat/route.ts:102"}, "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-ed1cff570e8d96be", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/chat/route.ts:551", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/chat/route.ts:551"}, "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-1ae2984cd15caa9c", "name": "Commented-code block (6 lines) in src/app/api/chat/route.test.ts:340", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/chat/route.test.ts:340"}, "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-67088a9f7870cc21", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/chat/route.test.ts:440", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/chat/route.test.ts:440"}, "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-ba73887e3fe25fbc", "name": "Commented-code block (8 lines) in src/app/api/users/[id]/route.ts:9", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/api/users/[id]/route.ts:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2f5fa241e26abe5f", "name": "Commented-code block (5 lines) in src/app/api/access-tokens/route.ts:18", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/access-tokens/route.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-f85b2057978d1634", "name": "Commented-code block (6 lines) in src/app/api/access-tokens/[id]/route.ts:7", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/access-tokens/[id]/route.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-32cdf431d89c95dc", "name": "Commented-code block (6 lines) in src/app/api/ingest/route.ts:12", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/ingest/route.ts:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7e46bcb8a4d1cfad", "name": "Legacy-named symbol `laam_legacy` in src/app/api/ingest/route.test.ts:79", "shortDescription": {"text": "Legacy-named symbol `laam_legacy` in src/app/api/ingest/route.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-540e4c4c1f936cab", "name": "Commented-code block (5 lines) in src/app/api/ingest/route.test.ts:95", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/ingest/route.test.ts:95"}, "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-9292128721aebe18", "name": "Commented-code block (5 lines) in src/app/api/connectors/[id]/[action]/route.ts:102", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/connectors/[id]/[action]/route.ts:102"}, "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-6df179a8707a780f", "name": "Commented-code block (5 lines) in src/app/api/register/route.test.ts:138", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/register/route.test.ts:138"}, "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-c37e0cdb0293e621", "name": "Commented-code block (6 lines) in src/app/api/notifications/[id]/route.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/notifications/[id]/route.ts:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c32315d304efbe5d", "name": "Commented-code block (6 lines) in src/app/api/mcp/route.ts:8", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/mcp/route.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2aa759edbd598a67", "name": "Commented-code block (5 lines) in src/app/api/workflows/runs/[id]/route.ts:29", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/workflows/runs/[id]/route.ts:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c7781c0f81db2b37", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/geocode/route.ts:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/geocode/route.ts:28"}, "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-75b0d8b1b4c82b07", "name": "Commented-code block (5 lines) in src/app/api/events/route.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/events/route.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-19ea0bde2e064862", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/nearby/route.ts:68", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/nearby/route.ts:68"}, "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-03ee5e35744d3b75", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/reverse/route.ts:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/reverse/route.ts:28"}, "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-f75f8d281140e7ef", "name": "Commented-code block (5 lines) in src/app/monitoring/page.tsx:8", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/monitoring/page.tsx:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ae47fdf06bbe43de", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/register/page.tsx:21", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/register/page.tsx:21"}, "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-221351932a72faba", "name": "Commented-code block (5 lines) in src/components/bottom-nav.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/bottom-nav.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-308c2d7b56bda80e", "name": "Commented-code block (6 lines) in src/components/no-zoom.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/no-zoom.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fcc8687f506898a8", "name": "Commented-code block (5 lines) in src/components/notification-bell.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/notification-bell.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7df66c72d399ead7", "name": "Commented-code block (5 lines) in src/components/agents/AgentsClient.tsx:38", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/agents/AgentsClient.tsx:38"}, "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-d5b2f766abd0f4e3", "name": "Commented-code block (5 lines) in src/components/landing/features.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/landing/features.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-b5b44b286d01f944", "name": "Commented-code block (5 lines) in src/components/landing/HudPanel.tsx:9", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/landing/HudPanel.tsx:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f0e02920eeb73186", "name": "Commented-code block (8 lines) in src/components/monitoring/MonitoringClient.tsx:3", "shortDescription": {"text": "Commented-code block (8 lines) in src/components/monitoring/MonitoringClient.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-61643b2be2512a8d", "name": "Commented-code block (5 lines) in src/components/chat/ChatClient.test.tsx:90", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/chat/ChatClient.test.tsx:90"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-30011e24e27ec5a9", "name": "Commented-code block (5 lines) in src/components/chat/ChatClient.tsx:692", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/chat/ChatClient.tsx:692"}, "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-bc855a90edc10ec7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/chat/ChatClient.tsx:217", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/chat/ChatClient.tsx:217"}, "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-2d6a565db5cd0aa1", "name": "Commented-code block (5 lines) in src/components/chat/imageCap.test.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/chat/imageCap.test.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c11174486d450a36", "name": "Commented-code block (6 lines) in src/components/chat/ConversationSidebar.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/chat/ConversationSidebar.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-aa57beec40d635f4", "name": "Commented-code block (6 lines) in src/components/chat/imageCap.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/chat/imageCap.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-71b06dd07c996021", "name": "Commented-code block (5 lines) in src/components/chat/MessageItem.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/chat/MessageItem.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f1c04e5240b5ae36", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/settings/UserKeysPanel.tsx:48", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/settings/UserKeysPanel.tsx: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-64e89658f08ff1b9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/settings/CustomAgentsClient.tsx:71", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/settings/CustomAgentsClient.tsx:71"}, "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-b70048de17055d9b", "name": "Commented-code block (8 lines) in src/components/connectors/ConnectorsClient.tsx:3", "shortDescription": {"text": "Commented-code block (8 lines) in src/components/connectors/ConnectorsClient.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bb7711df0d5d0080", "name": "Commented-code block (5 lines) in src/components/connectors/TrelloCaptureClient.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/connectors/TrelloCaptureClient.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bf102176ccbda4d6", "name": "Commented-code block (7 lines) in src/components/connectors/McpServersSection.tsx:3", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/connectors/McpServersSection.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-14686bd02f395992", "name": "Commented-code block (7 lines) in src/components/workflows/WorkflowDetailClient.tsx:3", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/workflows/WorkflowDetailClient.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d6b95457deb82345", "name": "Commented-code block (7 lines) in src/components/workflows/WorkflowsClient.tsx:3", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/workflows/WorkflowsClient.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ace51455a2e1a27b", "name": "Commented-code block (5 lines) in src/components/workflows/RecurrencePicker.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/workflows/RecurrencePicker.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c569b43e8ee9d2a7", "name": "Commented-code block (6 lines) in src/components/workflows/editor/NodesLibraryPanel.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/workflows/editor/NodesLibraryPanel.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d4bc687e86a7313a", "name": "Commented-code block (5 lines) in src/components/workflows/editor/WorkflowEditor.tsx:690", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/workflows/editor/WorkflowEditor.tsx:690"}, "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-ccdf23558e61ff47", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/workflows/editor/WorkflowEditor.tsx:299", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/workflows/editor/WorkflowEditor.tsx:299"}, "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-a6f9e9ef88ff10b2", "name": "Commented-code block (5 lines) in src/components/workflows/editor/nodeStatus.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/workflows/editor/nodeStatus.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d45e77bf93ecea93", "name": "Commented-code block (5 lines) in src/components/workflows/editor/NodeConfigPanel.tsx:469", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/workflows/editor/NodeConfigPanel.tsx:469"}, "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-67fc6fbd5f4d07f9", "name": "Commented-code block (6 lines) in src/components/render/ChatMarkdown.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/render/ChatMarkdown.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e3da47002ec00b17", "name": "Commented-code block (8 lines) in src/components/render/StreamdownView.tsx:3", "shortDescription": {"text": "Commented-code block (8 lines) in src/components/render/StreamdownView.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-49a1e72f0c2f4f57", "name": "Commented-code block (6 lines) in src/components/render/StreamdownView.test.tsx:5", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/render/StreamdownView.test.tsx:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3554869eceb4693b", "name": "Commented-code block (5 lines) in src/components/render/MarkdownView.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/render/MarkdownView.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-99530dc6eeb6dc46", "name": "Commented-code block (5 lines) in src/components/ui/matte-card.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/ui/matte-card.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-420a86fa2acd807e", "name": "Commented-code block (5 lines) in src/components/ui/bloom.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/ui/bloom.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-63899b59cb867b91", "name": "Commented-code block (5 lines) in src/db/schema.ts:100", "shortDescription": {"text": "Commented-code block (5 lines) in src/db/schema.ts:100"}, "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-d5d0511213995106", "name": "Commented-code block (5 lines) in src/i18n/dictionaries/connectors.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/i18n/dictionaries/connectors.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-7948ab75b19bb3eb", "name": "Commented-code block (5 lines) in src/lib/sync.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/sync.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-83949a58e66b5e61", "name": "Commented-code block (5 lines) in src/lib/search.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/search.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-74e7c7cb8e355dfc", "name": "Commented-code block (5 lines) in src/lib/access-token.ts:52", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/access-token.ts:52"}, "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-868b95e279c3e7db", "name": "Commented-code block (6 lines) in src/lib/workflow/recipient.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/workflow/recipient.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-35eaec7a7f08c525", "name": "Commented-code block (7 lines) in src/lib/workflow/run.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/workflow/run.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-3dfaf5a8768291e8", "name": "Commented-code block (5 lines) in src/lib/workflow/recurrence.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/workflow/recurrence.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-f811b36f5b84249a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/workflow/ollama.ts:11", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/workflow/ollama.ts:11"}, "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-6e270154f397ec48", "name": "Commented-code block (5 lines) in src/lib/workflow/cron.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/workflow/cron.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-f4646f6cf4d8266b", "name": "Commented-code block (5 lines) in src/lib/workflow/schedule.test.ts:197", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/workflow/schedule.test.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-872dfa87d937865b", "name": "Commented-code block (5 lines) in src/lib/workflow/resume.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/workflow/resume.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-9d149bf213674f90", "name": "Commented-code block (8 lines) in src/lib/workflow/schedule.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in src/lib/workflow/schedule.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f73d08f299ae2a48", "name": "Commented-code block (5 lines) in src/lib/workflow/resume-context.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/workflow/resume-context.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-bfa56d29359f7cf6", "name": "Commented-code block (8 lines) in src/lib/workflow/tick-auth.ts:5", "shortDescription": {"text": "Commented-code block (8 lines) in src/lib/workflow/tick-auth.ts:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-52306b350dc82074", "name": "Commented-code block (5 lines) in src/lib/workflow/engine.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/workflow/engine.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-6cda20740b2bc9bd", "name": "Commented-code block (5 lines) in src/lib/workflow/runtime.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/workflow/runtime.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-a1cdeeacaa077074", "name": "Commented-code block (7 lines) in src/lib/workflow/idempotency.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/workflow/idempotency.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-05661b3da98524de", "name": "Commented-code block (6 lines) in src/lib/workflow/templates.ts:141", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/workflow/templates.ts:141"}, "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-98c6d8940d39c970", "name": "Commented-code block (9 lines) in src/lib/workflow/orphan-sweep.ts:1", "shortDescription": {"text": "Commented-code block (9 lines) in src/lib/workflow/orphan-sweep.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-98c4405067041b12", "name": "Commented-code block (5 lines) in src/lib/llm/claude.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/llm/claude.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-bfdf59b1703325d7", "name": "Commented-code block (5 lines) in src/lib/monitoring/parser.test.ts:421", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/monitoring/parser.test.ts:421"}, "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-5a9ca968f969d15d", "name": "Commented-code block (5 lines) in src/lib/monitoring/parser.js:235", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/monitoring/parser.js: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-a81862a6e1677490", "name": "Commented-code block (6 lines) in src/lib/monitoring/pricing.js:7", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/monitoring/pricing.js:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f8c699e1e721a4d3", "name": "Commented-code block (5 lines) in src/lib/monitoring/read-model.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/monitoring/read-model.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-d6779f29d0229bf7", "name": "Commented-code block (6 lines) in src/lib/agent/context.ts:13", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/agent/context.ts:13"}, "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-354a22faf1227a80", "name": "Commented-code block (8 lines) in src/lib/agent/tools/laam/query-audit.ts:32", "shortDescription": {"text": "Commented-code block (8 lines) in src/lib/agent/tools/laam/query-audit.ts:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-36cd0b9d240800a4", "name": "Commented-code block (7 lines) in src/lib/agent/safety/write-claim-guard.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/agent/safety/write-claim-guard.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-4288a65bc679d4ba", "name": "Commented-code block (6 lines) in src/lib/agent/safety/write-claim-guard.test.ts:9", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/agent/safety/write-claim-guard.test.ts:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-98854070caf28c70", "name": "Commented-code block (6 lines) in src/lib/agent/safety/resume.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/agent/safety/resume.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-2e055ec3ae3deeab", "name": "Commented-code block (6 lines) in src/lib/agent/safety/gate.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/agent/safety/gate.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-dea42db211da1a07", "name": "Commented-code block (7 lines) in src/lib/agent/safety/policy.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/agent/safety/policy.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-fb8ef1655fb3f7f6", "name": "Commented-code block (5 lines) in src/lib/chat/geo-resolve.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/chat/geo-resolve.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-f848bb8443a0e9d6", "name": "Commented-code block (7 lines) in src/lib/chat/pdf-tiers.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/chat/pdf-tiers.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-d83dd733d9d2bcdc", "name": "Commented-code block (6 lines) in src/lib/chat/title.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/chat/title.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-ffb13479cbae80e9", "name": "Commented-code block (6 lines) in src/lib/chat/pdf-server.ts:8", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/chat/pdf-server.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fcfce1e6d515f63f", "name": "Commented-code block (5 lines) in src/lib/chat/docx.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/chat/docx.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-45f361aa6146b89a", "name": "Commented-code block (7 lines) in src/lib/connectors/index.ts:11", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/connectors/index.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-c125ffc7863e4cb7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/connectors/gmail.test.ts:148", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/connectors/gmail.test.ts:148"}, "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-c238c4dced9021ae", "name": "Commented-code block (6 lines) in src/lib/connectors/recipients.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/connectors/recipients.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-98b522ea6ffbbc97", "name": "Commented-code block (6 lines) in src/lib/connectors/trello.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/connectors/trello.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-63d8e26d99407b95", "name": "Commented-code block (5 lines) in src/lib/connectors/whatsapp.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/connectors/whatsapp.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-4abe9053aaab4d15", "name": "Commented-code block (5 lines) in src/lib/connectors/jira.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/connectors/jira.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-c0ab07eddf77b622", "name": "Commented-code block (5 lines) in src/lib/connectors/types.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/connectors/types.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2012c020f7dae087", "name": "Commented-code block (12 lines) in src/lib/connectors/oauth/trello.ts:1", "shortDescription": {"text": "Commented-code block (12 lines) in src/lib/connectors/oauth/trello.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-d5f51397a92cd82a", "name": "Commented-code block (5 lines) in src/lib/connectors/oauth/lock.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/connectors/oauth/lock.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-924def2d31737b76", "name": "Commented-code block (14 lines) in src/lib/connectors/oauth/slack.ts:1", "shortDescription": {"text": "Commented-code block (14 lines) in src/lib/connectors/oauth/slack.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-2406e4dab0fbde89", "name": "Commented-code block (12 lines) in src/lib/connectors/oauth/zalo.ts:1", "shortDescription": {"text": "Commented-code block (12 lines) in src/lib/connectors/oauth/zalo.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-b98d5161bbe3687d", "name": "Commented-code block (5 lines) in src/lib/connectors/oauth/types.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/connectors/oauth/types.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-ced83c3213314cf0", "name": "Commented-code block (10 lines) in src/lib/connectors/oauth/atlassian.ts:1", "shortDescription": {"text": "Commented-code block (10 lines) in src/lib/connectors/oauth/atlassian.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-0a2999478300b5b8", "name": "Commented-code block (6 lines) in src/lib/connectors/oauth/google.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/connectors/oauth/google.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-1f828c3006cb8fcb", "name": "Commented-code block (5 lines) in src/lib/connectors/mcp/discovery.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/connectors/mcp/discovery.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-d4b5c10fa81be4c5", "name": "Commented-code block (5 lines) in src/lib/connectors/mcp/store.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/connectors/mcp/store.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-0570eedee9bb81c0", "name": "Commented-code block (5 lines) in src/lib/connectors/mcp/ssrf.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/connectors/mcp/ssrf.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-b9a05aa60454dc72", "name": "Legacy-named symbol `pruneOld` in src/lib/notifications/index.ts:114", "shortDescription": {"text": "Legacy-named symbol `pruneOld` in src/lib/notifications/index.ts:114"}, "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-fa3b5f4cc8b5643b", "name": "Commented-code block (7 lines) in src/lib/notifications/index.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/notifications/index.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-221a64130511fe5b", "name": "Legacy-named symbol `pruneOld` in src/lib/notifications/index.test.ts:12", "shortDescription": {"text": "Legacy-named symbol `pruneOld` in src/lib/notifications/index.test.ts:12"}, "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-62cce6eefaad0287", "name": "Commented-code block (5 lines) in src/lib/mcp-server/tools.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/mcp-server/tools.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-fac8639eedea42f5", "name": "Commented-code block (5 lines) in src/lib/web/readable.ts:43", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/web/readable.ts:43"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a260e355ea7d9f89", "name": "32 env vars used in code but missing from .env.example", "shortDescription": {"text": "32 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ANTHROPIC_API_KEY`, `ATLASSIAN_OAUTH_CLIENT_ID`, `ATLASSIAN_OAUTH_CLIENT_SECRET`, `CONNECTOR_KEY`, `EVAL_K`, `EVAL_LABEL`, `EVAL_TEMPERATURE`, `GOOGLE_OAUTH_CLIENT_ID` + 24 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/25232"}, "properties": {"repository": "danny-exnodes/LAAM", "repoUrl": "https://github.com/danny-exnodes/LAAM", "branch": "main"}, "results": [{"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-b59a26285e27dce5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-access-token.ts:46"}, "properties": {"repobilityId": "5445dfd082f26675", "scanner": "scanner-primary", "fingerprint": "b59a26285e27dce5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7c4ebcf55585b357", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/eval/suite.scale.eval.ts:103"}, "properties": {"repobilityId": "f4ee59fee2e81f2c", "scanner": "scanner-primary", "fingerprint": "7c4ebcf55585b357", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-58998076f9990505", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/eval/suite.eval.ts:32"}, "properties": {"repobilityId": "c3fdb9601f00fc5c", "scanner": "scanner-primary", "fingerprint": "58998076f9990505", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2986a5b67c3c689a", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:43"}, "properties": {"repobilityId": "0d72350965068f5b", "scanner": "scanner-primary", "fingerprint": "2986a5b67c3c689a", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-d6f53a7fb019b4ab", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/agents/[id]/page.tsx:133"}, "properties": {"repobilityId": "6cf50bf7658d5d5d", "scanner": "scanner-primary", "fingerprint": "d6f53a7fb019b4ab", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c24e08849748eb9a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/user-avatar.tsx:63"}, "properties": {"repobilityId": "d6ff6b609d4e6b57", "scanner": "scanner-primary", "fingerprint": "c24e08849748eb9a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f9374b2adfa664d1", "level": "note", "message": {"text": "React Flow <MiniMap> without dark background \u2014 src/components/graph-canvas.tsx:32"}, "properties": {"repobilityId": "10981ed9e9c8ef23", "scanner": "scanner-primary", "fingerprint": "f9374b2adfa664d1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.minimap.no-bg"]}}, {"ruleId": "scanner-d44be545d54994f1", "level": "note", "message": {"text": "React Flow <Controls> without dark theming \u2014 src/components/graph-canvas.tsx:31"}, "properties": {"repobilityId": "c8a653f6cdfe4d31", "scanner": "scanner-primary", "fingerprint": "d44be545d54994f1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.controls.no-bg"]}}, {"ruleId": "scanner-e618175e2ec2e323", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/notification-bell.tsx:193"}, "properties": {"repobilityId": "a04981867e40f69b", "scanner": "scanner-primary", "fingerprint": "e618175e2ec2e323", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-05972340715a2b66", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/agents/ToolWaterfall.tsx:103"}, "properties": {"repobilityId": "20e9cac345bc1f2d", "scanner": "scanner-primary", "fingerprint": "05972340715a2b66", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bb5f9d1a0e5fd414", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/agents/SubAgentList.tsx:31"}, "properties": {"repobilityId": "3aedc9cffe0f2e30", "scanner": "scanner-primary", "fingerprint": "bb5f9d1a0e5fd414", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8e86008866d7cfb7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/agents/AgentDrawer.tsx:93"}, "properties": {"repobilityId": "401d5e18d8d36530", "scanner": "scanner-primary", "fingerprint": "8e86008866d7cfb7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-31402c8d50d29f98", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/monitoring/MonitoringClient.tsx:161"}, "properties": {"repobilityId": "5043863f112a0933", "scanner": "scanner-primary", "fingerprint": "31402c8d50d29f98", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-13522e0953399d86", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/chat/ChatClient.tsx:783"}, "properties": {"repobilityId": "85610ec069627d78", "scanner": "scanner-primary", "fingerprint": "13522e0953399d86", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d12162bffdd9dc61", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/chat/AttachmentChips.tsx:42"}, "properties": {"repobilityId": "08e0f8975a480d8f", "scanner": "scanner-primary", "fingerprint": "d12162bffdd9dc61", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-78903392fa3c232c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/chat/ProactiveCard.tsx:42"}, "properties": {"repobilityId": "3be6baee06ed0d3c", "scanner": "scanner-primary", "fingerprint": "78903392fa3c232c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-68a31e8aca3f3472", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/chat/Composer.tsx:276"}, "properties": {"repobilityId": "c5145c47eaf69369", "scanner": "scanner-primary", "fingerprint": "68a31e8aca3f3472", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3ee2726685fded59", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/search/SearchClient.tsx:33"}, "properties": {"repobilityId": "3d073d49e9e33a82", "scanner": "scanner-primary", "fingerprint": "3ee2726685fded59", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7264b42458b3f2f9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/settings/SettingsRow.tsx:32"}, "properties": {"repobilityId": "147eb7fdd7c9fdec", "scanner": "scanner-primary", "fingerprint": "7264b42458b3f2f9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8214adb10ddfe45a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/settings/UserKeysPanel.tsx:186"}, "properties": {"repobilityId": "5b68706266dd9684", "scanner": "scanner-primary", "fingerprint": "8214adb10ddfe45a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3c5f5189b8e686db", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/settings/CustomAgentsClient.tsx:185"}, "properties": {"repobilityId": "eae4703d22b7a3d5", "scanner": "scanner-primary", "fingerprint": "3c5f5189b8e686db", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-eb82481e095b9fcd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/settings/SettingsMenu.tsx:37"}, "properties": {"repobilityId": "c6516dfec77154d8", "scanner": "scanner-primary", "fingerprint": "eb82481e095b9fcd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-26848244b05b8fa3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/connectors/ConnectorsClient.tsx:236"}, "properties": {"repobilityId": "a64f5b24643ba9fa", "scanner": "scanner-primary", "fingerprint": "26848244b05b8fa3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-031c38a96f23e64d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/connectors/McpServersSection.tsx:102"}, "properties": {"repobilityId": "acc6f8d85acf79c4", "scanner": "scanner-primary", "fingerprint": "031c38a96f23e64d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e96b85ada66c689f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/workflows/editor/NodesLibraryPanel.tsx:105"}, "properties": {"repobilityId": "55c839f0f851291c", "scanner": "scanner-primary", "fingerprint": "e96b85ada66c689f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-09baafabcb6e16b2", "level": "note", "message": {"text": "React Flow <MiniMap> without dark background \u2014 src/components/workflows/editor/WorkflowEditor.tsx:1083"}, "properties": {"repobilityId": "2e36d65b5692799d", "scanner": "scanner-primary", "fingerprint": "09baafabcb6e16b2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.minimap.no-bg"]}}, {"ruleId": "scanner-2a8816a7406f03d9", "level": "note", "message": {"text": "React Flow <Controls> without dark theming \u2014 src/components/workflows/editor/WorkflowEditor.tsx:1082"}, "properties": {"repobilityId": "2d2eda4f4c66c8e4", "scanner": "scanner-primary", "fingerprint": "2a8816a7406f03d9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.controls.no-bg"]}}, {"ruleId": "scanner-a59dbfb08a482e28", "level": "note", "message": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 src/lib/workflow/validate.ts:62"}, "properties": {"repobilityId": "69202e88aab9b6c1", "scanner": "scanner-primary", "fingerprint": "a59dbfb08a482e28", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.edge-label.no-bg"]}}, {"ruleId": "scanner-3fad4f283eec7d6b", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:24-alpine"}, "properties": {"repobilityId": "b2532252155f0e0a", "scanner": "scanner-primary", "fingerprint": "3fad4f283eec7d6b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-3fad4f283eec7d6b", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:24-alpine"}, "properties": {"repobilityId": "f0f9b750cb26cfb8", "scanner": "scanner-primary", "fingerprint": "3fad4f283eec7d6b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-3fad4f283eec7d6b", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:24-alpine"}, "properties": {"repobilityId": "4bc4941af065f3c6", "scanner": "scanner-primary", "fingerprint": "3fad4f283eec7d6b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-a147a88414c56b9f", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in scripts/eval/suite.eval.ts:18"}, "properties": {"repobilityId": "0ca1209b4f4ef653", "scanner": "scanner-primary", "fingerprint": "a147a88414c56b9f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/eval/suite.eval.ts"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-eb8fb105176c54fc", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/eval/suite.eval.ts:2"}, "properties": {"repobilityId": "9fe768784c0fec88", "scanner": "scanner-primary", "fingerprint": "eb8fb105176c54fc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/eval/suite.eval.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-06fe04cab3b2822a", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:43"}, "properties": {"repobilityId": "0bca654fa2052eb0", "scanner": "scanner-primary", "fingerprint": "06fe04cab3b2822a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/layout.tsx"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-b35063942cf5da05", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/app/api/ocr/route.ts:1"}, "properties": {"repobilityId": "4d23da3de5dae044", "scanner": "scanner-primary", "fingerprint": "b35063942cf5da05", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/api/ocr/route.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-22930f0a70e87d60", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/lib/chat/docx-server.ts:1"}, "properties": {"repobilityId": "2f077254e9223421", "scanner": "scanner-primary", "fingerprint": "22930f0a70e87d60", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/chat/docx-server.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b7266f3399bc3192", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/lib/chat/pdf-server.ts:1"}, "properties": {"repobilityId": "68f14b1fe71b309f", "scanner": "scanner-primary", "fingerprint": "b7266f3399bc3192", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/chat/pdf-server.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7005d683b23d08d4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in host-agent/laam-host-metrics.mjs:13"}, "properties": {"repobilityId": "eeaa4cc821d2aaae", "scanner": "scanner-primary", "fingerprint": "7005d683b23d08d4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "host-agent/laam-host-metrics.mjs"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-19c3ba6c4bad8419", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in host-agent/laam-host-metrics.mjs:94"}, "properties": {"repobilityId": "a83b9b2c96396cd9", "scanner": "scanner-primary", "fingerprint": "19c3ba6c4bad8419", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "host-agent/laam-host-metrics.mjs"}, "region": {"startLine": 94}}}]}, {"ruleId": "scanner-561f9a13768b511b", "level": "note", "message": {"text": "Very large file: src/app/api/chat/route.ts (1098 lines)"}, "properties": {"repobilityId": "4ee221e182430701", "scanner": "scanner-primary", "fingerprint": "561f9a13768b511b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a5cc1c23b6da6476", "level": "note", "message": {"text": "Very large file: src/components/workflows/editor/WorkflowEditor.tsx (1292 lines)"}, "properties": {"repobilityId": "b78bab2e1f0ae2bf", "scanner": "scanner-primary", "fingerprint": "a5cc1c23b6da6476", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "f68660dd9d80af42", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "7d85eb7a1e512634", "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": "1a4c9ce9b070433d", "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": "47ecc94c2452128a", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "d411fd2ff5a2120b", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "1880fb5f16d407c1", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-194d337d5387d6ef", "level": "none", "message": {"text": "Commented-code block (7 lines) in next.config.ts:4"}, "properties": {"repobilityId": "cf0211ac051d4b04", "scanner": "scanner-primary", "fingerprint": "194d337d5387d6ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2eb0a7212f16b4aa", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/eval/ollama.ts:13"}, "properties": {"repobilityId": "5ea7afe579506a62", "scanner": "scanner-primary", "fingerprint": "2eb0a7212f16b4aa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8bcfdffdbd1a00eb", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/auth.config.ts:4"}, "properties": {"repobilityId": "af5cdb5062b637da", "scanner": "scanner-primary", "fingerprint": "8bcfdffdbd1a00eb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c297d9ff245dc27b", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/globals-contrast.test.ts:1"}, "properties": {"repobilityId": "f5991360516d52f2", "scanner": "scanner-primary", "fingerprint": "c297d9ff245dc27b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-91cd77e16633a23f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/route/route.ts:28"}, "properties": {"repobilityId": "6fc1e6691649463d", "scanner": "scanner-primary", "fingerprint": "91cd77e16633a23f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dc624ad738c554d2", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/pdf/route.ts:4"}, "properties": {"repobilityId": "86ee9c67ac22e42a", "scanner": "scanner-primary", "fingerprint": "dc624ad738c554d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff490f218215116b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/chat/route.ts:102"}, "properties": {"repobilityId": "7222ab5ae3b686ef", "scanner": "scanner-primary", "fingerprint": "ff490f218215116b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed1cff570e8d96be", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/chat/route.ts:551"}, "properties": {"repobilityId": "adafd86563029113", "scanner": "scanner-primary", "fingerprint": "ed1cff570e8d96be", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1ae2984cd15caa9c", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/chat/route.test.ts:340"}, "properties": {"repobilityId": "557ce3667c45d47e", "scanner": "scanner-primary", "fingerprint": "1ae2984cd15caa9c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-67088a9f7870cc21", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/chat/route.test.ts:440"}, "properties": {"repobilityId": "cfc146305404e170", "scanner": "scanner-primary", "fingerprint": "67088a9f7870cc21", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ba73887e3fe25fbc", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/api/users/[id]/route.ts:9"}, "properties": {"repobilityId": "418542240dc9f3e6", "scanner": "scanner-primary", "fingerprint": "ba73887e3fe25fbc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f5fa241e26abe5f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/access-tokens/route.ts:18"}, "properties": {"repobilityId": "170ed966a9009c0a", "scanner": "scanner-primary", "fingerprint": "2f5fa241e26abe5f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f85b2057978d1634", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/access-tokens/[id]/route.ts:7"}, "properties": {"repobilityId": "557a145baec377cf", "scanner": "scanner-primary", "fingerprint": "f85b2057978d1634", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-32cdf431d89c95dc", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/ingest/route.ts:12"}, "properties": {"repobilityId": "7b20b17dfe7c4f70", "scanner": "scanner-primary", "fingerprint": "32cdf431d89c95dc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7e46bcb8a4d1cfad", "level": "note", "message": {"text": "Legacy-named symbol `laam_legacy` in src/app/api/ingest/route.test.ts:79"}, "properties": {"repobilityId": "f6f699cc8a1a5afc", "scanner": "scanner-primary", "fingerprint": "7e46bcb8a4d1cfad", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-540e4c4c1f936cab", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/ingest/route.test.ts:95"}, "properties": {"repobilityId": "005e19ba625aec20", "scanner": "scanner-primary", "fingerprint": "540e4c4c1f936cab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9292128721aebe18", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/connectors/[id]/[action]/route.ts:102"}, "properties": {"repobilityId": "fe86a02984788f75", "scanner": "scanner-primary", "fingerprint": "9292128721aebe18", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6df179a8707a780f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/register/route.test.ts:138"}, "properties": {"repobilityId": "ca78382342a5c15c", "scanner": "scanner-primary", "fingerprint": "6df179a8707a780f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c37e0cdb0293e621", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/notifications/[id]/route.ts:5"}, "properties": {"repobilityId": "237b70ed86643a52", "scanner": "scanner-primary", "fingerprint": "c37e0cdb0293e621", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c32315d304efbe5d", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/mcp/route.ts:8"}, "properties": {"repobilityId": "2775e5054b6baa08", "scanner": "scanner-primary", "fingerprint": "c32315d304efbe5d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2aa759edbd598a67", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/workflows/runs/[id]/route.ts:29"}, "properties": {"repobilityId": "204cc80129039dbc", "scanner": "scanner-primary", "fingerprint": "2aa759edbd598a67", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c7781c0f81db2b37", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/geocode/route.ts:28"}, "properties": {"repobilityId": "8ff9ffca2203246d", "scanner": "scanner-primary", "fingerprint": "c7781c0f81db2b37", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-75b0d8b1b4c82b07", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/events/route.ts:3"}, "properties": {"repobilityId": "493d0b90dd31df2c", "scanner": "scanner-primary", "fingerprint": "75b0d8b1b4c82b07", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-19ea0bde2e064862", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/nearby/route.ts:68"}, "properties": {"repobilityId": "6297932413950cb4", "scanner": "scanner-primary", "fingerprint": "19ea0bde2e064862", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-03ee5e35744d3b75", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/reverse/route.ts:28"}, "properties": {"repobilityId": "b685eed8ee3b057f", "scanner": "scanner-primary", "fingerprint": "03ee5e35744d3b75", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f75f8d281140e7ef", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/monitoring/page.tsx:8"}, "properties": {"repobilityId": "b8bebc22c10ad68d", "scanner": "scanner-primary", "fingerprint": "f75f8d281140e7ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ae47fdf06bbe43de", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/register/page.tsx:21"}, "properties": {"repobilityId": "4f544f406bdb865f", "scanner": "scanner-primary", "fingerprint": "ae47fdf06bbe43de", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-221351932a72faba", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/bottom-nav.tsx:3"}, "properties": {"repobilityId": "7d76fc8ccf5d5761", "scanner": "scanner-primary", "fingerprint": "221351932a72faba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-308c2d7b56bda80e", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/no-zoom.tsx:3"}, "properties": {"repobilityId": "07e11d97c147b375", "scanner": "scanner-primary", "fingerprint": "308c2d7b56bda80e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fcc8687f506898a8", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/notification-bell.tsx:3"}, "properties": {"repobilityId": "1aaf8e64672ec854", "scanner": "scanner-primary", "fingerprint": "fcc8687f506898a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7df66c72d399ead7", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/agents/AgentsClient.tsx:38"}, "properties": {"repobilityId": "02a2633d7c31bf24", "scanner": "scanner-primary", "fingerprint": "7df66c72d399ead7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d5b2f766abd0f4e3", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/landing/features.ts:1"}, "properties": {"repobilityId": "c7dab6842b550955", "scanner": "scanner-primary", "fingerprint": "d5b2f766abd0f4e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b5b44b286d01f944", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/landing/HudPanel.tsx:9"}, "properties": {"repobilityId": "e869efb712fda6c2", "scanner": "scanner-primary", "fingerprint": "b5b44b286d01f944", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f0e02920eeb73186", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/components/monitoring/MonitoringClient.tsx:3"}, "properties": {"repobilityId": "bf483f1d67b89e73", "scanner": "scanner-primary", "fingerprint": "f0e02920eeb73186", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-61643b2be2512a8d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/chat/ChatClient.test.tsx:90"}, "properties": {"repobilityId": "5c726bde4c0d8e00", "scanner": "scanner-primary", "fingerprint": "61643b2be2512a8d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30011e24e27ec5a9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/chat/ChatClient.tsx:692"}, "properties": {"repobilityId": "01c339b6bb21893a", "scanner": "scanner-primary", "fingerprint": "30011e24e27ec5a9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc855a90edc10ec7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/chat/ChatClient.tsx:217"}, "properties": {"repobilityId": "25da42cfbda71cdc", "scanner": "scanner-primary", "fingerprint": "bc855a90edc10ec7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2d6a565db5cd0aa1", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/chat/imageCap.test.ts:4"}, "properties": {"repobilityId": "89d88b01688416e8", "scanner": "scanner-primary", "fingerprint": "2d6a565db5cd0aa1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c11174486d450a36", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/chat/ConversationSidebar.tsx:3"}, "properties": {"repobilityId": "d4f29e439f2de21c", "scanner": "scanner-primary", "fingerprint": "c11174486d450a36", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aa57beec40d635f4", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/chat/imageCap.ts:1"}, "properties": {"repobilityId": "574daf2fda7095af", "scanner": "scanner-primary", "fingerprint": "aa57beec40d635f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-71b06dd07c996021", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/chat/MessageItem.tsx:3"}, "properties": {"repobilityId": "b364f688154b8fdc", "scanner": "scanner-primary", "fingerprint": "71b06dd07c996021", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f1c04e5240b5ae36", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/settings/UserKeysPanel.tsx:48"}, "properties": {"repobilityId": "0e9d677b99df9e62", "scanner": "scanner-primary", "fingerprint": "f1c04e5240b5ae36", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-64e89658f08ff1b9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/settings/CustomAgentsClient.tsx:71"}, "properties": {"repobilityId": "6e54b8308487adfa", "scanner": "scanner-primary", "fingerprint": "64e89658f08ff1b9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b70048de17055d9b", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/components/connectors/ConnectorsClient.tsx:3"}, "properties": {"repobilityId": "4461371118de923e", "scanner": "scanner-primary", "fingerprint": "b70048de17055d9b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bb7711df0d5d0080", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/connectors/TrelloCaptureClient.tsx:3"}, "properties": {"repobilityId": "c284c0df415714a6", "scanner": "scanner-primary", "fingerprint": "bb7711df0d5d0080", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bf102176ccbda4d6", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/connectors/McpServersSection.tsx:3"}, "properties": {"repobilityId": "fb06cac9fa5f9f14", "scanner": "scanner-primary", "fingerprint": "bf102176ccbda4d6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-14686bd02f395992", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/workflows/WorkflowDetailClient.tsx:3"}, "properties": {"repobilityId": "413a9e7b7fdf7b70", "scanner": "scanner-primary", "fingerprint": "14686bd02f395992", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d6b95457deb82345", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/workflows/WorkflowsClient.tsx:3"}, "properties": {"repobilityId": "e93c4d8d84b54a13", "scanner": "scanner-primary", "fingerprint": "d6b95457deb82345", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ace51455a2e1a27b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/workflows/RecurrencePicker.tsx:3"}, "properties": {"repobilityId": "c7d6237149ff3932", "scanner": "scanner-primary", "fingerprint": "ace51455a2e1a27b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c569b43e8ee9d2a7", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/workflows/editor/NodesLibraryPanel.tsx:3"}, "properties": {"repobilityId": "960d9985c5d95108", "scanner": "scanner-primary", "fingerprint": "c569b43e8ee9d2a7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4bc687e86a7313a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/workflows/editor/WorkflowEditor.tsx:690"}, "properties": {"repobilityId": "7d7004b3077cb040", "scanner": "scanner-primary", "fingerprint": "d4bc687e86a7313a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ccdf23558e61ff47", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/workflows/editor/WorkflowEditor.tsx:299"}, "properties": {"repobilityId": "74eb8d66ed1dac7a", "scanner": "scanner-primary", "fingerprint": "ccdf23558e61ff47", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a6f9e9ef88ff10b2", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/workflows/editor/nodeStatus.ts:3"}, "properties": {"repobilityId": "1408d1a07e33e950", "scanner": "scanner-primary", "fingerprint": "a6f9e9ef88ff10b2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d45e77bf93ecea93", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/workflows/editor/NodeConfigPanel.tsx:469"}, "properties": {"repobilityId": "35f1a28a20f1c58d", "scanner": "scanner-primary", "fingerprint": "d45e77bf93ecea93", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-67fc6fbd5f4d07f9", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/render/ChatMarkdown.tsx:3"}, "properties": {"repobilityId": "3973f929a0c0c5c5", "scanner": "scanner-primary", "fingerprint": "67fc6fbd5f4d07f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3da47002ec00b17", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/components/render/StreamdownView.tsx:3"}, "properties": {"repobilityId": "03f74bcca5cc9e1d", "scanner": "scanner-primary", "fingerprint": "e3da47002ec00b17", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-49a1e72f0c2f4f57", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/render/StreamdownView.test.tsx:5"}, "properties": {"repobilityId": "b2ec9017ed93117d", "scanner": "scanner-primary", "fingerprint": "49a1e72f0c2f4f57", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3554869eceb4693b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/render/MarkdownView.tsx:3"}, "properties": {"repobilityId": "9b9c285487b3c6be", "scanner": "scanner-primary", "fingerprint": "3554869eceb4693b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-99530dc6eeb6dc46", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/ui/matte-card.tsx:3"}, "properties": {"repobilityId": "fa02d8d18e96643e", "scanner": "scanner-primary", "fingerprint": "99530dc6eeb6dc46", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-420a86fa2acd807e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/ui/bloom.tsx:3"}, "properties": {"repobilityId": "b2117267d2a95db8", "scanner": "scanner-primary", "fingerprint": "420a86fa2acd807e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-63899b59cb867b91", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/db/schema.ts:100"}, "properties": {"repobilityId": "7d7ac6677a95c66f", "scanner": "scanner-primary", "fingerprint": "63899b59cb867b91", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d5d0511213995106", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/i18n/dictionaries/connectors.ts:1"}, "properties": {"repobilityId": "efa77e450571020d", "scanner": "scanner-primary", "fingerprint": "d5d0511213995106", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7948ab75b19bb3eb", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/sync.ts:1"}, "properties": {"repobilityId": "165e6e5c7dfdca9f", "scanner": "scanner-primary", "fingerprint": "7948ab75b19bb3eb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-83949a58e66b5e61", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/search.ts:3"}, "properties": {"repobilityId": "89523b24cc7eefdd", "scanner": "scanner-primary", "fingerprint": "83949a58e66b5e61", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-74e7c7cb8e355dfc", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/access-token.ts:52"}, "properties": {"repobilityId": "2ceceb3b7e6d2c3b", "scanner": "scanner-primary", "fingerprint": "74e7c7cb8e355dfc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-868b95e279c3e7db", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/workflow/recipient.ts:1"}, "properties": {"repobilityId": "0a2e0766a569d932", "scanner": "scanner-primary", "fingerprint": "868b95e279c3e7db", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-35eaec7a7f08c525", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/workflow/run.ts:1"}, "properties": {"repobilityId": "9e1f33f5668c86f2", "scanner": "scanner-primary", "fingerprint": "35eaec7a7f08c525", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3dfaf5a8768291e8", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/workflow/recurrence.ts:1"}, "properties": {"repobilityId": "aab47161ac51fe7b", "scanner": "scanner-primary", "fingerprint": "3dfaf5a8768291e8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f811b36f5b84249a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/workflow/ollama.ts:11"}, "properties": {"repobilityId": "446ff72078ef7bab", "scanner": "scanner-primary", "fingerprint": "f811b36f5b84249a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6e270154f397ec48", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/workflow/cron.ts:1"}, "properties": {"repobilityId": "a91f8bafad683bd1", "scanner": "scanner-primary", "fingerprint": "6e270154f397ec48", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f4646f6cf4d8266b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/workflow/schedule.test.ts:197"}, "properties": {"repobilityId": "a51febbbc7c07d50", "scanner": "scanner-primary", "fingerprint": "f4646f6cf4d8266b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-872dfa87d937865b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/workflow/resume.ts:1"}, "properties": {"repobilityId": "ca52a1526dfa55c0", "scanner": "scanner-primary", "fingerprint": "872dfa87d937865b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9d149bf213674f90", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/lib/workflow/schedule.ts:3"}, "properties": {"repobilityId": "7317d4a1724bafae", "scanner": "scanner-primary", "fingerprint": "9d149bf213674f90", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f73d08f299ae2a48", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/workflow/resume-context.ts:1"}, "properties": {"repobilityId": "be70459cb0bbd5c4", "scanner": "scanner-primary", "fingerprint": "f73d08f299ae2a48", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bfa56d29359f7cf6", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/lib/workflow/tick-auth.ts:5"}, "properties": {"repobilityId": "c19d478b6463ba4f", "scanner": "scanner-primary", "fingerprint": "bfa56d29359f7cf6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52306b350dc82074", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/workflow/engine.ts:1"}, "properties": {"repobilityId": "6c8310b2b41cc5c6", "scanner": "scanner-primary", "fingerprint": "52306b350dc82074", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6cda20740b2bc9bd", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/workflow/runtime.ts:1"}, "properties": {"repobilityId": "e18993d93ae5200e", "scanner": "scanner-primary", "fingerprint": "6cda20740b2bc9bd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a1cdeeacaa077074", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/workflow/idempotency.ts:1"}, "properties": {"repobilityId": "14202c54b1472f55", "scanner": "scanner-primary", "fingerprint": "a1cdeeacaa077074", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-05661b3da98524de", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/workflow/templates.ts:141"}, "properties": {"repobilityId": "c2bb0ea77e283916", "scanner": "scanner-primary", "fingerprint": "05661b3da98524de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-98c6d8940d39c970", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/lib/workflow/orphan-sweep.ts:1"}, "properties": {"repobilityId": "9dacfb21b39498a5", "scanner": "scanner-primary", "fingerprint": "98c6d8940d39c970", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-98c4405067041b12", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/llm/claude.ts:1"}, "properties": {"repobilityId": "a798ed80e7ffd843", "scanner": "scanner-primary", "fingerprint": "98c4405067041b12", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bfdf59b1703325d7", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/monitoring/parser.test.ts:421"}, "properties": {"repobilityId": "157ba49e53fc399b", "scanner": "scanner-primary", "fingerprint": "bfdf59b1703325d7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5a9ca968f969d15d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/monitoring/parser.js:235"}, "properties": {"repobilityId": "297cac1a4f772b02", "scanner": "scanner-primary", "fingerprint": "5a9ca968f969d15d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a81862a6e1677490", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/monitoring/pricing.js:7"}, "properties": {"repobilityId": "17b14f6234d2864d", "scanner": "scanner-primary", "fingerprint": "a81862a6e1677490", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f8c699e1e721a4d3", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/monitoring/read-model.ts:1"}, "properties": {"repobilityId": "7c706f36145cf079", "scanner": "scanner-primary", "fingerprint": "f8c699e1e721a4d3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d6779f29d0229bf7", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/agent/context.ts:13"}, "properties": {"repobilityId": "805dce298e6017b7", "scanner": "scanner-primary", "fingerprint": "d6779f29d0229bf7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-354a22faf1227a80", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/lib/agent/tools/laam/query-audit.ts:32"}, "properties": {"repobilityId": "82e015f8847559ea", "scanner": "scanner-primary", "fingerprint": "354a22faf1227a80", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-36cd0b9d240800a4", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/agent/safety/write-claim-guard.ts:1"}, "properties": {"repobilityId": "44012489cd1da171", "scanner": "scanner-primary", "fingerprint": "36cd0b9d240800a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4288a65bc679d4ba", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/agent/safety/write-claim-guard.test.ts:9"}, "properties": {"repobilityId": "62366deedca5753e", "scanner": "scanner-primary", "fingerprint": "4288a65bc679d4ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-98854070caf28c70", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/agent/safety/resume.ts:1"}, "properties": {"repobilityId": "893e379ffb4b79e6", "scanner": "scanner-primary", "fingerprint": "98854070caf28c70", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e055ec3ae3deeab", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/agent/safety/gate.ts:1"}, "properties": {"repobilityId": "a810087ac21c6127", "scanner": "scanner-primary", "fingerprint": "2e055ec3ae3deeab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dea42db211da1a07", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/agent/safety/policy.ts:1"}, "properties": {"repobilityId": "317c36a7cec34ff9", "scanner": "scanner-primary", "fingerprint": "dea42db211da1a07", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb8ef1655fb3f7f6", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/chat/geo-resolve.ts:1"}, "properties": {"repobilityId": "d4eb7cbe855dde99", "scanner": "scanner-primary", "fingerprint": "fb8ef1655fb3f7f6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f848bb8443a0e9d6", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/chat/pdf-tiers.ts:1"}, "properties": {"repobilityId": "cd802f3f044153e7", "scanner": "scanner-primary", "fingerprint": "f848bb8443a0e9d6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d83dd733d9d2bcdc", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/chat/title.ts:1"}, "properties": {"repobilityId": "26e4785506a8cfae", "scanner": "scanner-primary", "fingerprint": "d83dd733d9d2bcdc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ffb13479cbae80e9", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/chat/pdf-server.ts:8"}, "properties": {"repobilityId": "fcb1820e107ec966", "scanner": "scanner-primary", "fingerprint": "ffb13479cbae80e9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fcfce1e6d515f63f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/chat/docx.ts:1"}, "properties": {"repobilityId": "d627fa4b76128a2a", "scanner": "scanner-primary", "fingerprint": "fcfce1e6d515f63f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-45f361aa6146b89a", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/connectors/index.ts:11"}, "properties": {"repobilityId": "8a2068147c8ef9bb", "scanner": "scanner-primary", "fingerprint": "45f361aa6146b89a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c125ffc7863e4cb7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/connectors/gmail.test.ts:148"}, "properties": {"repobilityId": "98d38348caac675b", "scanner": "scanner-primary", "fingerprint": "c125ffc7863e4cb7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c238c4dced9021ae", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/connectors/recipients.ts:1"}, "properties": {"repobilityId": "3e14008f84008407", "scanner": "scanner-primary", "fingerprint": "c238c4dced9021ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-98b522ea6ffbbc97", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/connectors/trello.ts:1"}, "properties": {"repobilityId": "17a2ecaa39830241", "scanner": "scanner-primary", "fingerprint": "98b522ea6ffbbc97", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-63d8e26d99407b95", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/connectors/whatsapp.ts:1"}, "properties": {"repobilityId": "7aafda628b7c5a80", "scanner": "scanner-primary", "fingerprint": "63d8e26d99407b95", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4abe9053aaab4d15", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/connectors/jira.ts:1"}, "properties": {"repobilityId": "23cb4736debde2e6", "scanner": "scanner-primary", "fingerprint": "4abe9053aaab4d15", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c0ab07eddf77b622", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/connectors/types.ts:3"}, "properties": {"repobilityId": "3abf2964499b23ac", "scanner": "scanner-primary", "fingerprint": "c0ab07eddf77b622", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2012c020f7dae087", "level": "none", "message": {"text": "Commented-code block (12 lines) in src/lib/connectors/oauth/trello.ts:1"}, "properties": {"repobilityId": "9977c062d25b400f", "scanner": "scanner-primary", "fingerprint": "2012c020f7dae087", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d5f51397a92cd82a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/connectors/oauth/lock.ts:1"}, "properties": {"repobilityId": "db88fe92804d846e", "scanner": "scanner-primary", "fingerprint": "d5f51397a92cd82a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-924def2d31737b76", "level": "none", "message": {"text": "Commented-code block (14 lines) in src/lib/connectors/oauth/slack.ts:1"}, "properties": {"repobilityId": "9b74392fcab3ab3f", "scanner": "scanner-primary", "fingerprint": "924def2d31737b76", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2406e4dab0fbde89", "level": "none", "message": {"text": "Commented-code block (12 lines) in src/lib/connectors/oauth/zalo.ts:1"}, "properties": {"repobilityId": "f0361d82720969fe", "scanner": "scanner-primary", "fingerprint": "2406e4dab0fbde89", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b98d5161bbe3687d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/connectors/oauth/types.ts:1"}, "properties": {"repobilityId": "0bcda778fdc584fe", "scanner": "scanner-primary", "fingerprint": "b98d5161bbe3687d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ced83c3213314cf0", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/lib/connectors/oauth/atlassian.ts:1"}, "properties": {"repobilityId": "784df673a4a43b2e", "scanner": "scanner-primary", "fingerprint": "ced83c3213314cf0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0a2999478300b5b8", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/connectors/oauth/google.ts:1"}, "properties": {"repobilityId": "45c05863d65bf737", "scanner": "scanner-primary", "fingerprint": "0a2999478300b5b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1f828c3006cb8fcb", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/connectors/mcp/discovery.ts:1"}, "properties": {"repobilityId": "1a13e632adea6c33", "scanner": "scanner-primary", "fingerprint": "1f828c3006cb8fcb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4b5c10fa81be4c5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/connectors/mcp/store.ts:1"}, "properties": {"repobilityId": "1fdea0d9a043cc67", "scanner": "scanner-primary", "fingerprint": "d4b5c10fa81be4c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0570eedee9bb81c0", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/connectors/mcp/ssrf.ts:1"}, "properties": {"repobilityId": "3e21764b07ba55c9", "scanner": "scanner-primary", "fingerprint": "0570eedee9bb81c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b9a05aa60454dc72", "level": "note", "message": {"text": "Legacy-named symbol `pruneOld` in src/lib/notifications/index.ts:114"}, "properties": {"repobilityId": "48065a3b56357ccf", "scanner": "scanner-primary", "fingerprint": "b9a05aa60454dc72", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fa3b5f4cc8b5643b", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/notifications/index.ts:3"}, "properties": {"repobilityId": "f1a195db1ac00f05", "scanner": "scanner-primary", "fingerprint": "fa3b5f4cc8b5643b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-221a64130511fe5b", "level": "note", "message": {"text": "Legacy-named symbol `pruneOld` in src/lib/notifications/index.test.ts:12"}, "properties": {"repobilityId": "7f0d68cdc48a9837", "scanner": "scanner-primary", "fingerprint": "221a64130511fe5b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-62cce6eefaad0287", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/mcp-server/tools.ts:1"}, "properties": {"repobilityId": "3908aaefa97370e9", "scanner": "scanner-primary", "fingerprint": "62cce6eefaad0287", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fac8639eedea42f5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/web/readable.ts:43"}, "properties": {"repobilityId": "a7aa2ec585e68c2c", "scanner": "scanner-primary", "fingerprint": "fac8639eedea42f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a260e355ea7d9f89", "level": "note", "message": {"text": "32 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "e735cee6f43259c2", "scanner": "scanner-primary", "fingerprint": "a260e355ea7d9f89", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}