{"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-9c4a57162a8545e6", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/scripts/gen-skill-content.js:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/scripts/gen-skill-content.js:66"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d1d2d139f0a1e6b4", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/scripts/find_tools.js:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/scripts/find_tools.js:14"}, "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-293668eece0323a2", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/scripts/pre_build.js:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/scripts/pre_build.js:24"}, "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-8e1fed4c32a4881f", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/scripts/setup_openblas.js:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/scripts/setup_openblas.js:45"}, "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-acc2c0562df4344c", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/model-download-tracker.tsx:120", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/model-download-tracker.tsx:120"}, "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-8aa9e177e5c9587b", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/file-preview-sidebar.tsx:76", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/file-preview-sidebar.tsx:76"}, "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-a394058b81fe2c46", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/speaker-assign-popover.tsx:294", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/speaker-assign-popover.tsx:294"}, "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-0f05d5189c58e2b1", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/deeplink-handler.tsx:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/deeplink-handler.tsx:63"}, "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-ba8bd4f1ca2e93da", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/conversation-bubble.tsx:310", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/conversation-bubble.tsx:310"}, "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-4fb7387fb8785a68", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/browser-sidebar.tsx:925", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/browser-sidebar.tsx:925"}, "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-ec5f4589cf45e9a2", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/update-banner.tsx:234", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/update-banner.tsx:234"}, "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-d1755b450bb99532", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/recording-status.tsx:217", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/recording-status.tsx:217"}, "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-6a1aa877452d1e32", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/chat-sidebar.tsx:1099", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/chat-sidebar.tsx:1099"}, "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-493fd2398f5471b2", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/pipe-store.tsx:1059", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/pipe-store.tsx:1059"}, "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-c1409e262f1bbb90", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/notification-handler.tsx:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/notification-handler.tsx:65"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-71a13cda1ab97dda", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/speaker-badge.tsx:37", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/speaker-badge.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-c70714076fc6ea82", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/standalone-chat.tsx:1120", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/standalone-chat.tsx:1120"}, "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-1963c4c60e548544", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/standalone-chat.tsx:3706", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/standalone-chat.tsx:3706"}, "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-d23e5e90ac3d577f", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/notification-bell.tsx:268", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/notification-bell.tsx:268"}, "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-37b88447d1590ba2", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/archive-settings.tsx:", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/archive-settings.tsx:393"}, "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-7146ece4b84ef001", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/google-calendar-card.", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/google-calendar-card.tsx:297"}, "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-fc2fd39bc0648f0b", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/speakers-section.tsx:", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/speakers-section.tsx:340"}, "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-0ca5772911e94de2", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/storage-section.tsx:1", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/storage-section.tsx:160"}, "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-b0ab88914abfb8fb", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/recording-settings.ts", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/recording-settings.tsx:894"}, "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-fedab97a313d2dbf", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/settings/recording-settings.tsx:2074", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/settings/recording-settings.tsx:2074"}, "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-8a2ec6d88cf7b032", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/ics-calendar-card.tsx", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/ics-calendar-card.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-7001800b176b9a28", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/connections-section.t", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/connections-section.tsx:866"}, "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-41ea2ff6875ca3b8", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/skills-card.tsx:146", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/skills-card.tsx:146"}, "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-50c86224515c8ed7", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/settings/shortcut-row.tsx:122", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/settings/shortcut-row.tsx:122"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-19398780f54830d4", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/cloud-pipes-tab.tsx:1", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/cloud-pipes-tab.tsx:147"}, "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-09fc56fbd2682d3a", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/disk-usage-section.ts", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/disk-usage-section.tsx:149"}, "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-f9193348808c5a6a", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/ai-presets.tsx:238", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/ai-presets.tsx:238"}, "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-018c4936b66b5110", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/settings/ai-presets.tsx:1036", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/settings/ai-presets.tsx:1036"}, "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-0ba4243b1fa29062", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/apple-calendar-card.t", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/apple-calendar-card.tsx:267"}, "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-643c51486e44db8e", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/apply-restart-bar.tsx", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/apply-restart-bar.tsx:62"}, "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-fc428a9ce66cbf41", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/brain-section.tsx:857", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/brain-section.tsx:857"}, "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-d4ff1fe7ea158e70", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/gmail-card.tsx:131", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/gmail-card.tsx:131"}, "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-fa9652030cf24fa3", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/schedule-settings.tsx", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/schedule-settings.tsx:325"}, "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-dfcc4068d3a1dc4d", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/google-docs-card.tsx:", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/google-docs-card.tsx:180"}, "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-eebb86d93aa6bce5", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/custom-mcp-card.tsx:3", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/custom-mcp-card.tsx:392"}, "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-6f065be737b8bad4", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/usage-section.tsx:455", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/usage-section.tsx:455"}, "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-1d4cfe2bf199aa5c", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/pipes-section.tsx:523", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/pipes-section.tsx:523"}, "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-2545e7cc8acbc49a", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/settings/pipes-section.tsx:1369", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/settings/pipes-section.tsx:1369"}, "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-2ca3d494b728046b", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/settings/account-section.tsx:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/settings/account-section.tsx:82"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0b231f2d67b73f72", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/settings-search.tsx:5", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/settings-search.tsx:525"}, "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-43ae0ef80bd101b5", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/settings/sync-settings.tsx:775", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/settings/sync-settings.tsx:775"}, "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-22d1898b5dadfc3e", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/google-sheets-card.ts", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/google-sheets-card.tsx:130"}, "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-c77a83216a950d49", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/meeting-apps-picker.t", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/meeting-apps-picker.tsx:111"}, "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-bddc90f65c3f8fde", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/window-picker.tsx:203", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/window-picker.tsx:203"}, "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-44308272097edf8f", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/__tests__/url-detection-benchmark.test.ts:98", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/__tests__/url-detection-benchmark.test.ts:98"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2fbe13d47f282d90", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/meeting-notes/note-view.tsx:14", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/meeting-notes/note-view.tsx:1432"}, "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-15997ea3dcaaea21", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/meeting-notes/list-view.tsx:33", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/meeting-notes/list-view.tsx:336"}, "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-da172773db4e32ec", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/meeting-notes/editor-menus.tsx", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/meeting-notes/editor-menus.tsx:294"}, "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-a96cc5e2078ccec6", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/meeting-notes/past-meetings.ts", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/meeting-notes/past-meetings.tsx:262"}, "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-743bb2d9805efad8", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/meeting-notes/receipts.tsx:66", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/meeting-notes/receipts.tsx:66"}, "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-a9f25d3fd23a2df2", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/meeting-notes/coming-up.tsx:36", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/meeting-notes/coming-up.tsx:366"}, "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-05c618f40db03916", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/ui/multi-select.tsx:459", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/ui/multi-select.tsx:459"}, "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-688d6071669be13b", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/chat/recent-chat-switcher.tsx:", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/chat/recent-chat-switcher.tsx:116"}, "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-1cd578c96bb4a903", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/chat/source-citation-footer.ts", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/chat/source-citation-footer.tsx:123"}, "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-748cb3e08a059ade", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/chat/pipe-context-banner.tsx:6", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/chat/pipe-context-banner.tsx:60"}, "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-1c2757db1069371e", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/onboarding/connect-apps.tsx:42", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/onboarding/connect-apps.tsx:429"}, "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-35b4737e6e9797a1", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/onboarding/connect-apps.tsx:142", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/onboarding/connect-apps.tsx:142"}, "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-b4183c9f3c51c5dc", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/rewind/search-modal.tsx:358", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/rewind/search-modal.tsx:358"}, "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-d0725c5de074cd19", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/rewind/timeline.tsx:1261", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/rewind/timeline.tsx:1261"}, "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-ba4725b99a0856c1", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/rewind/ai-presets-selector.tsx", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/rewind/ai-presets-selector.tsx:1460"}, "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-f98bb5344f98a144", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/screenpipe-app-tauri/components/rewind/mermaid-diagram.tsx:19", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/screenpipe-app-tauri/components/rewind/mermaid-diagram.tsx:192"}, "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-696dcc8b48be5a91", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/rewind/current-frame-timeline.", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/rewind/current-frame-timeline.tsx:377"}, "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-bbfbb1d88c853531", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/rewind/timeline/timeline-tag-t", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/rewind/timeline/timeline-tag-toolbar.tsx:288"}, "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-ac7293213509ef7b", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/rewind/timeline/audio-transcri", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/rewind/timeline/audio-transcript.tsx:661"}, "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-a536a7bd270dadbc", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/rewind/timeline/timeline.tsx:1", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/rewind/timeline/timeline.tsx:1906"}, "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-7f22a1863fac0bd5", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/rewind/timeline/timeline-controls.tsx:185", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/rewind/timeline/timeline-controls.tsx:185"}, "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-7dbc3a16372db7e1", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/rewind/timeline/app-context-po", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/rewind/timeline/app-context-popover.tsx:251"}, "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-123c46c5a199fff7", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/rewind/hooks/use-live-text.ts:100", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/rewind/hooks/use-live-text.ts:100"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-db239f060b99201a", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/rewind/hooks/use-frame-loading.ts:202", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/rewind/hooks/use-frame-loading.ts:202"}, "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-e3a7934cb64a1d2a", "name": "TODO/FIXME marker in shipping code \u2014 apps/screenpipe-app-tauri/app/layout.tsx:17", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 apps/screenpipe-app-tauri/app/layout.tsx:17"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-aba766c14f7bfa20", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/app/layout.tsx:217", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/app/layout.tsx:217"}, "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-92f9111380754174", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/screenpipe-app-tauri/app/layout.tsx:336", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/screenpipe-app-tauri/app/layout.tsx:336"}, "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-7ea29fccb9fb3286", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/app/viewer/page.tsx:169", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/app/viewer/page.tsx:169"}, "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-1dbfcf6d80d5aa65", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/app/shortcut-reminder/page.tsx:300", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/app/shortcut-reminder/page.tsx:300"}, "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-11feebd3164fa8fe", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/app/home/page.tsx:1083", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/app/home/page.tsx:1083"}, "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-767d66ac1cc82e0a", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/app/overlay/page.tsx:234", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/app/overlay/page.tsx:234"}, "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-cd33e102bdca1d19", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/notifications.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/notifications.ts:24"}, "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-eaa825f53685f278", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/chat-storage.ts:599", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/chat-storage.ts:599"}, "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-9f1a370df5bc321c", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/use-is-enterprise-build.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/use-is-enterprise-build.ts:20"}, "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-b812d0e242636bdd", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/use-enterprise-pipes.ts:109", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/use-enterprise-pipes.ts:109"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-89801bd36b4214ce", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/use-audio-playback.tsx:236", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/use-audio-playback.tsx:236"}, "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-be89f5e9d77e95ef", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/use-health-check.tsx:217", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/use-health-check.tsx:217"}, "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-336e6831a588ed2c", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/use-permission-monitor.tsx:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/use-permission-monitor.tsx:45"}, "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-e98b2db8ec1ad403", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/use-settings.tsx:1350", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/use-settings.tsx:1350"}, "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-6b60701c10e361c4", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/use-enterprise-policy.ts:247", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/use-enterprise-policy.ts:247"}, "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-509a1c6962b79e0d", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/__tests__/timeline-store-logic.test.ts:194", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/__tests__/timeline-store-logic.test.ts:194"}, "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-7beba406a302f6a7", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/__tests__/server-push-old-frames.test.ts:113", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/__tests__/server-push-old-frames.test.ts:113"}, "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-04f8673f756f8e5d", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/__tests__/server-poll-logic.test.ts:190", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/__tests__/server-poll-logic.test.ts:190"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-300ea9e0da56a9e5", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/actions/has-frames-date.ts:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/actions/has-frames-date.ts:64"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1000c27676c12f97", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/wdio.conf.ts:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/wdio.conf.ts:63"}, "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-ef50364a2a8ace53", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/tests/search-api.js:124", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/tests/search-api.js:124"}, "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-81e867bfefc80c46", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/tests/window-overlay.js:78", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/tests/window-overlay.js:78"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6c78f2e3050306da", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/tests/onboarding-flow.js:113", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/tests/onboarding-flow.js:113"}, "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-6b5baee0af565963", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/tests/timeline-performance.js:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/tests/timeline-performance.js:40"}, "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-209ab5a5f736d567", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/tests/timeline-navigation.js:114", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/tests/timeline-navigation.js:114"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d6c2c6a59860cc70", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/tests/websocket-performance.js:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/tests/websocket-performance.js:41"}, "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-d780da38c780fffe", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/tests/settings-persistence.js:179", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/tests/settings-persistence.js:179"}, "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-da6cdc344d25e053", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/tests/mcp-integration.js:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/tests/mcp-integration.js:65"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ad4f8bf546d22983", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/tests/app-lifecycle.js:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/tests/app-lifecycle.js:38"}, "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-a5e1d0733ee744a3", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/scripts/generate-coverage-report.ts:840", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/scripts/generate-coverage-report.ts:840"}, "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-f7d4ec58dae452a3", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/helpers/screenshot-utils.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/helpers/screenshot-utils.ts:22"}, "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-a3ff3002cfe8ff11", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/helpers/test-recorder.ts:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/helpers/test-recorder.ts:41"}, "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-fd956ad38aca442d", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/mock-updates/updater-harness.ts:193", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/mock-updates/updater-harness.ts:193"}, "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-c391782f13fa3cd7", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/specs/chat-streaming-performance.spec.ts:512", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/specs/chat-streaming-performance.spec.ts:512"}, "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-1e1be53160c92522", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/specs/meeting-note-bottom-click.spec.ts:110", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/specs/meeting-note-bottom-click.spec.ts:110"}, "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-c2c0b82959115868", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/specs/pipes.spec.ts:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/specs/pipes.spec.ts:67"}, "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-f2f3844984d8cd67", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/specs/zz-owned-browser-background-nav.spec.ts:560", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/specs/zz-owned-browser-background-nav.spec.ts:560"}, "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-8c6be1fb57a76fea", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/specs/macos-ui-performance.spec.ts:159", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/specs/macos-ui-performance.spec.ts:159"}, "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-ebe0fc8d449f9434", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/specs/chat-newchat-duplicate.spec.ts:222", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/specs/chat-newchat-duplicate.spec.ts:222"}, "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-0770ce63ef02650a", "name": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/specs/chat-within-session-context-loss.spec.ts:206", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/specs/chat-within-session-context-loss.spec.ts:206"}, "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-974263c71823b214", "name": "Stray `console.log` in TS/JS \u2014 packages/cli/screenpipe/scripts/postinstall.js:96", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/cli/screenpipe/scripts/postinstall.js:96"}, "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-0f7c7a595936f715", "name": "Stray `console.log` in TS/JS \u2014 packages/cli/npm-e2e/cli.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/cli/npm-e2e/cli.ts:13"}, "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-dd975db2941f0699", "name": "Stray `console.log` in TS/JS \u2014 packages/cli/npm-e2e/setup.ts:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/cli/npm-e2e/setup.ts:43"}, "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-1cceed59083cea2c", "name": "Stray `console.log` in TS/JS \u2014 packages/cli/npm-e2e/runner.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/cli/npm-e2e/runner.ts:18"}, "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-a6198966b6a0b7f1", "name": "Stray `console.log` in TS/JS \u2014 packages/cli/npm-e2e/lib/stage.ts:195", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/cli/npm-e2e/lib/stage.ts:195"}, "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-efbc4c4eb8ba90e0", "name": "Stray `console.log` in TS/JS \u2014 packages/browser-extension/src/worker.ts:133", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/browser-extension/src/worker.ts:133"}, "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-1f20fc69373cbcc4", "name": "TODO/FIXME marker in shipping code \u2014 packages/ai-gateway/src/index.ts:368", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/ai-gateway/src/index.ts:368"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-26cae4e99b6e9b82", "name": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/index.ts:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/index.ts:43"}, "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-80f92c28b3687f1b", "name": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/test/vertex-proxy.test.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/test/vertex-proxy.test.ts:25"}, "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-b140d2e1a8ce014d", "name": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/utils/auth.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/utils/auth.ts:15"}, "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-f2b81d1651d92a0d", "name": "TODO/FIXME marker in shipping code \u2014 packages/ai-gateway/src/utils/subscription.ts:103", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/ai-gateway/src/utils/subscription.ts:103"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bc12fe01b74b127a", "name": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/utils/subscription.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/utils/subscription.ts:65"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-85e8f396b7452ece", "name": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/utils/voice-utils.ts:141", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/utils/voice-utils.ts:141"}, "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-cb0c2985557cdfd6", "name": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/providers/anthropic-proxy.ts:136", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/providers/anthropic-proxy.ts:136"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-669284929e428fe6", "name": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/providers/index.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/providers/index.ts:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6498afd2548551b6", "name": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/providers/gemini.ts:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/providers/gemini.ts:91"}, "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-39b6c6f28afc2a8f", "name": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/providers/vertex.ts:620", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/providers/vertex.ts:620"}, "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-e345447e882fedeb", "name": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/services/usage-tracker.ts:362", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/services/usage-tracker.ts:362"}, "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-932048c83d642cc8", "name": "TODO/FIXME marker in shipping code \u2014 packages/ai-gateway/src/handlers/voice-ws.ts:1", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/ai-gateway/src/handlers/voice-ws.ts:1"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-329ed1725cae7930", "name": "Stray `console.log` in TS/JS \u2014 packages/screenpipe-mcp/src/http-server.ts:384", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/screenpipe-mcp/src/http-server.ts:384"}, "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-b9afbd70218756b3", "name": "Stray `console.log` in TS/JS \u2014 packages/e2e/local/tests.ts:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/e2e/local/tests.ts:41"}, "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-ba06a0147a077cb6", "name": "Stray `console.log` in TS/JS \u2014 packages/e2e/local/cli.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/e2e/local/cli.ts:51"}, "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-f689682828571b5c", "name": "Stray `console.log` in TS/JS \u2014 packages/e2e/local/tart.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/e2e/local/tart.ts:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d5856781f0b18085", "name": "Stray `console.log` in TS/JS \u2014 packages/e2e/src/runner.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/e2e/src/runner.ts:57"}, "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-6785bd7789fe7d19", "name": "Stray `console.log` in TS/JS \u2014 packages/e2e/src/suites/api.ts:147", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/e2e/src/suites/api.ts:147"}, "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-42104205717d56ad", "name": "Stray `console.log` in TS/JS \u2014 packages/e2e/src/suites/cli.ts:126", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/e2e/src/suites/cli.ts:126"}, "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-fbe789dc5d7acb45", "name": "Stray `console.log` in TS/JS \u2014 packages/e2e/src/suites/models.ts:83", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/e2e/src/suites/models.ts:83"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-90cf2b111537073a", "name": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/test-app-launch.ts:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/test-app-launch.ts:76"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-586ad3083d90193b", "name": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/test-lifecycle.ts:87", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/test-lifecycle.ts:87"}, "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-e0d3f8301cf3688c", "name": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/run-all.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/run-all.ts:52"}, "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-979a1b60ed58582a", "name": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/test-main-window.ts:88", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/test-main-window.ts:88"}, "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-2560fbfff40f9127", "name": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/lib.ts:144", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/lib.ts:144"}, "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-3b290f294430e559", "name": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/test-windows.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/test-windows.ts:17"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a6f7c1c9e1a0cc7f", "name": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/test-recording.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/test-recording.ts:22"}, "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-062b4f4dbdbe1f22", "name": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/test-tray.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/test-tray.ts:34"}, "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-b1c8e048c79558da", "name": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/test-capture-fidelity.ts:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/test-capture-fidelity.ts:61"}, "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-eafd1bb43b541cda", "name": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/test-permissions.ts:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/test-permissions.ts:58"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-04f48b2366a90e92", "name": "Stray `console.log` in TS/JS \u2014 coverage/scripts/generate-core-engine-coverage-report.ts:941", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 coverage/scripts/generate-core-engine-coverage-report.ts:941"}, "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-845a6cc043442acb", "name": "Stray `console.log` in TS/JS \u2014 coverage/scripts/generate-unified-coverage-report.ts:153", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 coverage/scripts/generate-unified-coverage-report.ts:153"}, "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-0155d0bc9e838e31", "name": "Stray `console.log` in TS/JS \u2014 ee/sdk/examples/electron-app/main.js:154", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 ee/sdk/examples/electron-app/main.js:154"}, "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-fdce9c108bbbe4bf", "name": "Dockerfile runs as root: docker/linux-test/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: docker/linux-test/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bd6369c43c8f48c5", "name": "Docker base image is tag-pinned but not digest-pinned: ubuntu:24.04", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: ubuntu:24.04"}, "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-fdb1dd2d129eb36f", "name": "Docker base image is tag-pinned but not digest-pinned: mcr.microsoft.com/devcontainers/base:ubuntu-22.04", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: mcr.microsoft.com/devcontainers/base:ubuntu-22.04"}, "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-42222223b4a3450e", "name": "Dockerfile pipes a remote installer into a shell", "shortDescription": {"text": "Dockerfile pipes a remote installer into a shell"}, "fullDescription": {"text": "Executing downloaded code during image build gives the remote endpoint build-time code execution. Prefer pinned packages or verify downloaded installers by checksum/signature."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d153031f96d3e8bc", "name": "Insecure pattern 'dangerous_innerhtml' in apps/screenpipe-app-tauri/components/rewind/mermaid-diagram.tsx:192", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/screenpipe-app-tauri/components/rewind/mermaid-diagram.tsx:192"}, "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-56324d32747343a6", "name": "Insecure pattern 'dangerous_innerhtml' in apps/screenpipe-app-tauri/app/layout.tsx:336", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/screenpipe-app-tauri/app/layout.tsx:336"}, "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-93d00a8906323311", "name": "Insecure pattern 'local_storage_auth_token' in apps/screenpipe-app-tauri/lib/api.ts:44", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in apps/screenpipe-app-tauri/lib/api.ts:44"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5b5a9953fc0585e5", "name": "Possible secret in apps/screenpipe-app-tauri/src-tauri/src/main.rs", "shortDescription": {"text": "Possible secret in apps/screenpipe-app-tauri/src-tauri/src/main.rs"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-81d14d71e5b285e9", "name": "Insecure pattern 'node_child_process' in apps/screenpipe-app-tauri/e2e/helpers/test-recorder.ts:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in apps/screenpipe-app-tauri/e2e/helpers/test-recorder.ts:5"}, "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-8477edad2b059b0f", "name": "Insecure pattern 'node_child_process' in apps/screenpipe-app-tauri/e2e/helpers/app-launcher.ts:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in apps/screenpipe-app-tauri/e2e/helpers/app-launcher.ts:5"}, "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-b4a1dbe3fba88383", "name": "Insecure pattern 'node_child_process' in apps/screenpipe-app-tauri/e2e/helpers/seed-capture-activity.ts:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in apps/screenpipe-app-tauri/e2e/helpers/seed-capture-activity.ts:5"}, "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-c92704d6cbeea348", "name": "Possible secret in apps/screenpipe-app-tauri/e2e/mock-updates/updater-harness.ts", "shortDescription": {"text": "Possible secret in apps/screenpipe-app-tauri/e2e/mock-updates/updater-harness.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-02094745b2948d8e", "name": "Insecure pattern 'cors_wildcard' in apps/screenpipe-app-tauri/e2e/mock-updates/updater-harness.ts:216", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in apps/screenpipe-app-tauri/e2e/mock-updates/updater-harness.ts:216"}, "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-a4b793e2628c4c70", "name": "Insecure pattern 'node_child_process' in apps/screenpipe-app-tauri/e2e/specs/windows-core-recording.spec.ts:21", "shortDescription": {"text": "Insecure pattern 'node_child_process' in apps/screenpipe-app-tauri/e2e/specs/windows-core-recording.spec.ts:21"}, "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-a55f3bb0c96d1ccd", "name": "Insecure pattern 'node_child_process' in apps/screenpipe-app-tauri/e2e/specs/chat-streaming-performance.spec.ts:16", "shortDescription": {"text": "Insecure pattern 'node_child_process' in apps/screenpipe-app-tauri/e2e/specs/chat-streaming-performance.spec.ts:16"}, "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-f5d772ba120ff371", "name": "Insecure pattern 'local_storage_auth_token' in apps/screenpipe-app-tauri/e2e/specs/app-lifecycle.spec.ts:91", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in apps/screenpipe-app-tauri/e2e/specs/app-lifecycle.spec.ts:91"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-84b93640997b218b", "name": "Insecure pattern 'node_child_process' in apps/screenpipe-app-tauri/e2e/specs/windows-system-integration.spec.ts:13", "shortDescription": {"text": "Insecure pattern 'node_child_process' in apps/screenpipe-app-tauri/e2e/specs/windows-system-integration.spec.ts: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-a7cfed6d4167a27b", "name": "Insecure pattern 'node_child_process' in crates/screenpipe-core/assets/extensions/sub-agent.ts:69", "shortDescription": {"text": "Insecure pattern 'node_child_process' in crates/screenpipe-core/assets/extensions/sub-agent.ts:69"}, "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-16d11ac97fbebdba", "name": "Possible secret in crates/screenpipe-core/src/pii_removal.rs", "shortDescription": {"text": "Possible secret in crates/screenpipe-core/src/pii_removal.rs"}, "fullDescription": {"text": "Detected pattern matching github_token. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-21476205c7a018d4", "name": "Possible secret in crates/screenpipe-core/src/sync/keys.rs", "shortDescription": {"text": "Possible secret in crates/screenpipe-core/src/sync/keys.rs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-db254ef01e345648", "name": "Possible secret in crates/screenpipe-redact/src/pipeline.rs", "shortDescription": {"text": "Possible secret in crates/screenpipe-redact/src/pipeline.rs"}, "fullDescription": {"text": "Detected pattern matching github_token. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-2b57be74218f0c28", "name": "Possible secret in packages/cli/screenpipe/scripts/postinstall.js", "shortDescription": {"text": "Possible secret in packages/cli/screenpipe/scripts/postinstall.js"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-64669f312919aea4", "name": "Insecure pattern 'node_child_process' in packages/cli/screenpipe/scripts/postinstall.js:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/cli/screenpipe/scripts/postinstall.js:6"}, "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-7902a28b9e4c7dc0", "name": "Possible secret in packages/cli/screenpipe/scripts/postinstall.sh", "shortDescription": {"text": "Possible secret in packages/cli/screenpipe/scripts/postinstall.sh"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-3fb8f07523ab8afb", "name": "Insecure pattern 'node_child_process' in packages/cli/screenpipe/lib/cli.js:11", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/cli/screenpipe/lib/cli.js:11"}, "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-3bf6161790482120", "name": "Insecure pattern 'node_child_process' in packages/cli/screenpipe/lib/index.js:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/cli/screenpipe/lib/index.js:5"}, "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-fbbb1ba86bb3fac3", "name": "Insecure pattern 'node_child_process' in packages/cli/npm-e2e/setup.ts:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/cli/npm-e2e/setup.ts:5"}, "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-dba819b6246d25e0", "name": "Possible secret in packages/cli/npm-e2e/lib/registry.ts", "shortDescription": {"text": "Possible secret in packages/cli/npm-e2e/lib/registry.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-e013c5e7322363b1", "name": "Insecure pattern 'node_child_process' in packages/cli/npm-e2e/lib/registry.ts:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/cli/npm-e2e/lib/registry.ts:5"}, "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-17d36140cb8ce7e7", "name": "Insecure pattern 'node_child_process' in packages/cli/npm-e2e/lib/utils.ts:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/cli/npm-e2e/lib/utils.ts:5"}, "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-4b77adce6f10c5cb", "name": "Insecure pattern 'node_child_process' in packages/cli/npm-e2e/lib/process.ts:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/cli/npm-e2e/lib/process.ts:5"}, "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-de639b94655dbab0", "name": "Insecure pattern 'cors_wildcard' in packages/ai-gateway/src/utils/cors.ts:7", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in packages/ai-gateway/src/utils/cors.ts:7"}, "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-59fb07693a977c66", "name": "Insecure pattern 'private_key_in_repo' in packages/ai-gateway/src/providers/vertex.ts:97", "shortDescription": {"text": "Insecure pattern 'private_key_in_repo' in packages/ai-gateway/src/providers/vertex.ts:97"}, "fullDescription": {"text": "Found a known-risky pattern (private_key_in_repo). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-cc753a63bd8452f3", "name": "Insecure pattern 'cors_wildcard' in packages/ai-gateway/src/handlers/tinfoil-proxy.ts:158", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in packages/ai-gateway/src/handlers/tinfoil-proxy.ts:158"}, "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-0169a724ea151083", "name": "Insecure pattern 'direct_innerhtml_assignment' in packages/screenpipe-mcp/ui/search.html:408", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in packages/screenpipe-mcp/ui/search.html:408"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6cf81921292593d3", "name": "Insecure pattern 'node_child_process' in packages/screenpipe-mcp/src/index.ts:61", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/screenpipe-mcp/src/index.ts:61"}, "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-8ce30e0f0024c5c9", "name": "Insecure pattern 'cors_wildcard' in packages/screenpipe-mcp/src/http-server.ts:303", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in packages/screenpipe-mcp/src/http-server.ts:303"}, "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-f2cda0d5447b44d1", "name": "Insecure pattern 'exec_used' in packages/e2e/src/suites/cli.ts:38", "shortDescription": {"text": "Insecure pattern 'exec_used' in packages/e2e/src/suites/cli.ts:38"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f4f3fecdd80f2948", "name": "Insecure pattern 'exec_used' in packages/e2e/src/suites/models.ts:90", "shortDescription": {"text": "Insecure pattern 'exec_used' in packages/e2e/src/suites/models.ts:90"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-340ecd6000724f58", "name": "Insecure pattern 'node_child_process' in ee/sdk/index.js:20", "shortDescription": {"text": "Insecure pattern 'node_child_process' in ee/sdk/index.js:20"}, "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-9f57eed3e2bd7044", "name": "Insecure pattern 'node_child_process' in ee/sdk/__test__/_helpers.mjs:16", "shortDescription": {"text": "Insecure pattern 'node_child_process' in ee/sdk/__test__/_helpers.mjs:16"}, "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-730e808d143b5aaa", "name": "Insecure pattern 'node_child_process' in ee/sdk/__test__/node_json_bridge.test.mjs:7", "shortDescription": {"text": "Insecure pattern 'node_child_process' in ee/sdk/__test__/node_json_bridge.test.mjs:7"}, "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-a5215bbfcbe57333", "name": "Insecure pattern 'node_child_process' in ee/sdk/__test__/bridge_telemetry_env.test.mjs:13", "shortDescription": {"text": "Insecure pattern 'node_child_process' in ee/sdk/__test__/bridge_telemetry_env.test.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-566870d5ebb8fcda", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/github-script@v7 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1f78ab7b0ff03379", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7ff1dffa3f6fdad8", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-67bfbcaf0a26c658", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/cache@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-96129953304c7070", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-568fa5bbd5d0538a", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "dtolnay/rust-toolchain@stable can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-49c82d38af0aedbe", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "dtolnay/rust-toolchain@stable can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-912a975f44e75ab6", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "oven-sh/setup-bun@v2 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-354b70e1d6b24e71", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-465455ca2e6355c1", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-node@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-07a50f6aa8e75256", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "oven-sh/setup-bun@v2 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-46e352293e8ce6a6", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b52cfa796d82597d", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7fc0694880fc8c4d", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions-rust-lang/setup-rust-toolchain@v1 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6262b70a2b56b05d", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d1b928f8f8d158f1", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2822b3151892b628", "name": "GitHub Action tracks a moving branch", "shortDescription": {"text": "GitHub Action tracks a moving branch"}, "fullDescription": {"text": "trufflesecurity/trufflehog@main can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "high", "confidence": 1.0}}, {"id": "scanner-470476e3e577494b", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "dtolnay/rust-toolchain@stable can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7af18d03849c9bce", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-461256c4f9cfd310", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-347b199f557032b0", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a0710e568e82f9ff", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions-rust-lang/setup-rust-toolchain@v1 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1b2df3c68acf7f2b", "name": "GitHub Action tracks a moving branch", "shortDescription": {"text": "GitHub Action tracks a moving branch"}, "fullDescription": {"text": "bnjbvr/cargo-machete@main can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6e737343dd91046d", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-177ddc64edd6332d", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "oven-sh/setup-bun@v2 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1f9e6d81946c603f", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-36ecda97f3951bd7", "name": "Very large file: apps/screenpipe-app-tauri/components/chat-sidebar.tsx (1785 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/components/chat-sidebar.tsx (1785 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-e0793f60a451829f", "name": "Very large file: apps/screenpipe-app-tauri/components/pipe-store.tsx (2023 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/components/pipe-store.tsx (2023 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-9f5d57f787d8b6e4", "name": "Very large file: apps/screenpipe-app-tauri/components/standalone-chat.tsx (9906 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/components/standalone-chat.tsx (9906 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-5dd1f1da76253c4f", "name": "Very large file: apps/screenpipe-app-tauri/components/settings/recording-settings.tsx (3797 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/components/settings/recording-settings.tsx (3797 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-ea477b8b99fe3a0c", "name": "Very large file: apps/screenpipe-app-tauri/components/settings/connections-section.tsx (3866 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/components/settings/connections-section.tsx (3866 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-db506c9b9e60999d", "name": "Very large file: apps/screenpipe-app-tauri/components/settings/ai-presets.tsx (2427 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/components/settings/ai-presets.tsx (2427 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-1ed5804a20405bc0", "name": "Very large file: apps/screenpipe-app-tauri/components/settings/brain-section.tsx (1331 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/components/settings/brain-section.tsx (1331 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-0335bb74fb9c4f91", "name": "Very large file: apps/screenpipe-app-tauri/components/settings/pipes-section.tsx (3378 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/components/settings/pipes-section.tsx (3378 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-2abe1130c78f8942", "name": "Very large file: apps/screenpipe-app-tauri/components/settings/privacy-section.tsx (1705 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/components/settings/privacy-section.tsx (1705 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-ace8667aec518166", "name": "Very large file: apps/screenpipe-app-tauri/components/meeting-notes/note-view.tsx (1984 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/components/meeting-notes/note-view.tsx (1984 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-4fbd74c49b8d35ce", "name": "Very large file: apps/screenpipe-app-tauri/components/hooks/use-chat-conversations.ts (1542 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/components/hooks/use-chat-conversations.ts (1542 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-91a6ccdd92c7a837", "name": "Very large file: apps/screenpipe-app-tauri/components/rewind/search-modal.tsx (2337 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/components/rewind/search-modal.tsx (2337 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-d7a3cf2f1903c7c3", "name": "Very large file: apps/screenpipe-app-tauri/components/rewind/timeline.tsx (1560 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/components/rewind/timeline.tsx (1560 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-a8e05afd9a071c31", "name": "Very large file: apps/screenpipe-app-tauri/components/rewind/ai-presets-selector.tsx (1743 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/components/rewind/ai-presets-selector.tsx (1743 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-b6000e8986b0e56d", "name": "Very large file: apps/screenpipe-app-tauri/components/rewind/timeline/timeline.tsx (1920 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/components/rewind/timeline/timeline.tsx (1920 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-378c8c85ab394493", "name": "Very large file: apps/screenpipe-app-tauri/app/home/page.tsx (1232 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/app/home/page.tsx (1232 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-a8448da87430ec3d", "name": "Very large file: apps/screenpipe-app-tauri/lib/utils/tauri.ts (3013 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/lib/utils/tauri.ts (3013 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-0c1b777d4203fc84", "name": "Very large file: apps/screenpipe-app-tauri/lib/hooks/use-settings.tsx (1417 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/lib/hooks/use-settings.tsx (1417 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-a1ae9b9a4bfc7349", "name": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/commands.rs (3503 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/commands.rs (3503 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-f3b4856f0aa42938", "name": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/store.rs (2308 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/store.rs (2308 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-1cf6e37dd4933b51", "name": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/pi.rs (3893 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/pi.rs (3893 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-5bf9ce048fd8ac95", "name": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/owned_browser_cookies.rs (1411 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/owned_browser_cookies.rs (1411 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-d960614a458e16f6", "name": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/suggestions.rs (1959 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/suggestions.rs (1959 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-4f8603a67c8795bb", "name": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/tray.rs (1548 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/tray.rs (1548 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-aea1bfd88524c80f", "name": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/owned_browser.rs (2035 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/owned_browser.rs (2035 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-d587e0ec4957278b", "name": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/main.rs (2021 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/main.rs (2021 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-85ef534ce73d4c70", "name": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/health.rs (1855 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/health.rs (1855 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-7b6c4a9cd8a272dc", "name": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/window/show.rs (1868 lines)", "shortDescription": {"text": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/window/show.rs (1868 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-867cfd3a726aaba4", "name": "Very large file: crates/screenpipe-a11y/src/platform/windows_uia.rs (1996 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-a11y/src/platform/windows_uia.rs (1996 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-c3daa7a761e82096", "name": "Very large file: crates/screenpipe-a11y/src/platform/windows.rs (1938 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-a11y/src/platform/windows.rs (1938 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-e62ef8f7f136b584", "name": "Very large file: crates/screenpipe-a11y/src/platform/macos.rs (2436 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-a11y/src/platform/macos.rs (2436 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-1ef88fe3381f1fc1", "name": "Very large file: crates/screenpipe-a11y/src/tree/macos.rs (2071 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-a11y/src/tree/macos.rs (2071 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-bf1fe8dc0caf3a31", "name": "Very large file: crates/screenpipe-connect/src/mcp_servers.rs (2798 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-connect/src/mcp_servers.rs (2798 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-6da711fa1cee8924", "name": "Very large file: crates/screenpipe-connect/src/oauth.rs (2120 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-connect/src/oauth.rs (2120 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-10ccd1fbf86067d7", "name": "Very large file: crates/screenpipe-core/src/pii_removal.rs (1351 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-core/src/pii_removal.rs (1351 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-630958fed63e9e71", "name": "Very large file: crates/screenpipe-core/src/agents/pi.rs (3461 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-core/src/agents/pi.rs (3461 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-cc6fa59e6b9f7537", "name": "Very large file: crates/screenpipe-core/src/pipes/mod.rs (6702 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-core/src/pipes/mod.rs (6702 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-c823d19276206e46", "name": "Very large file: crates/screenpipe-redact/src/adapters/regex.rs (2383 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-redact/src/adapters/regex.rs (2383 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-0927e5e7782b68af", "name": "Very large file: crates/screenpipe-redact/src/adapters/national_id.rs (2289 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-redact/src/adapters/national_id.rs (2289 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-c2f2616cfdf7bbb4", "name": "Very large file: crates/screenpipe-engine/src/event_driven_capture.rs (2775 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-engine/src/event_driven_capture.rs (2775 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-2f146449e3d8a4e6", "name": "Very large file: crates/screenpipe-engine/src/server.rs (1199 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-engine/src/server.rs (1199 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-fa489f0eb855d56f", "name": "Very large file: crates/screenpipe-engine/src/connections_api.rs (3840 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-engine/src/connections_api.rs (3840 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-8cd16ec8860a8911", "name": "Very large file: crates/screenpipe-engine/src/calendar_speaker_id.rs (1389 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-engine/src/calendar_speaker_id.rs (1389 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-39156ed7eb35cd79", "name": "Very large file: crates/screenpipe-engine/src/ui_recorder.rs (1790 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-engine/src/ui_recorder.rs (1790 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-0bd95420cc86321e", "name": "Very large file: crates/screenpipe-engine/src/sync_api.rs (1686 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-engine/src/sync_api.rs (1686 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-1f9e53a0faa03749", "name": "Very large file: crates/screenpipe-engine/src/meeting_detector.rs (6169 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-engine/src/meeting_detector.rs (6169 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-ede7c196bd8f29c7", "name": "Very large file: crates/screenpipe-engine/src/cli/mod.rs (2449 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-engine/src/cli/mod.rs (2449 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-b8740732a0467632", "name": "Very large file: crates/screenpipe-engine/src/routes/artifacts.rs (1467 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-engine/src/routes/artifacts.rs (1467 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-85ca326e0f1a376a", "name": "Very large file: crates/screenpipe-engine/src/routes/activity_summary.rs (1958 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-engine/src/routes/activity_summary.rs (1958 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-ab2cb4a7d2f35b77", "name": "Very large file: crates/screenpipe-engine/src/routes/health.rs (1447 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-engine/src/routes/health.rs (1447 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-98aef53a49bb7bc6", "name": "Very large file: crates/screenpipe-audio/src/audio_manager/manager.rs (1734 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-audio/src/audio_manager/manager.rs (1734 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-ca210d803b8bf816", "name": "Very large file: crates/screenpipe-audio/src/audio_manager/reconciliation.rs (1585 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-audio/src/audio_manager/reconciliation.rs (1585 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-f74267d94216ede5", "name": "Very large file: crates/screenpipe-audio/src/audio_manager/device_monitor.rs (2004 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-audio/src/audio_manager/device_monitor.rs (2004 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-f02c06557a00b871", "name": "Very large file: crates/screenpipe-screen/src/capture_screenshot_by_window.rs (1988 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-screen/src/capture_screenshot_by_window.rs (1988 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-e7ec74d47a117b32", "name": "Very large file: crates/screenpipe-screen/src/monitor.rs (1336 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-screen/src/monitor.rs (1336 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-83b4bbae358debb7", "name": "Very large file: crates/screenpipe-db/tests/db.rs (2548 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-db/tests/db.rs (2548 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-e6a6f8c667dca0d5", "name": "Very large file: crates/screenpipe-db/src/write_queue.rs (2606 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-db/src/write_queue.rs (2606 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-0a6e65294abc2817", "name": "Very large file: crates/screenpipe-db/src/db.rs (11640 lines)", "shortDescription": {"text": "Very large file: crates/screenpipe-db/src/db.rs (11640 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-dd02a23a5572e46b", "name": "Very large file: packages/screenpipe-mcp/src/index.ts (1838 lines)", "shortDescription": {"text": "Very large file: packages/screenpipe-mcp/src/index.ts (1838 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-fa1ae4c41b50965e", "name": "Very large file: ee/desktop-rust/enterprise_sync.rs (2704 lines)", "shortDescription": {"text": "Very large file: ee/desktop-rust/enterprise_sync.rs (2704 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-507be47faefa609a", "name": "Very large file: ee/sdk/recorder-core/src/platform/recorder.rs (1553 lines)", "shortDescription": {"text": "Very large file: ee/sdk/recorder-core/src/platform/recorder.rs (1553 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-ea3b5e389d8c9c0f", "name": "Low test-to-source ratio", "shortDescription": {"text": "Low test-to-source ratio"}, "fullDescription": {"text": "243 tests / 1043 src (ratio 0.23)."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-70f28da2087d7855", "name": "Node manifest has dependencies but no lockfile: packages/cli/screenpipe/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/cli/screenpipe/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea81981ac6b28a9e", "name": "Node manifest has dependencies but no lockfile: packages/e2e/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/e2e/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-91fd151918e01748", "name": "Node manifest has dependencies but no lockfile: ee/sdk/examples/electron-app/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: ee/sdk/examples/electron-app/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 526 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 391 placeholder/mock markers across 178 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-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing lockfile. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d70acde74853b547", "name": "Agent authority lacks a verifier contract: crates/screenpipe-core/assets/skills/screenpipe-api/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: crates/screenpipe-core/assets/skills/screenpipe-api/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4c89017a428cfd12", "name": "Agent authority lacks a verifier contract: crates/screenpipe-core/assets/skills/screenpipe-team/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: crates/screenpipe-core/assets/skills/screenpipe-team/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9f237b165423e342", "name": "Agent authority lacks a verifier contract: .claude/skills/screenpipe-api/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/screenpipe-api/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-983b546463a7bdc3", "name": "Agent authority lacks a verifier contract: .claude/skills/screenpipe-logs/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/screenpipe-logs/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fb1f4cd0cdb438d9", "name": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/vitest.config.ts:12", "shortDescription": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/vitest.config.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-c1d49161b53bbe8f", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/scripts/pre_build.js:213", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/scripts/pre_build.js:213"}, "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-3ac06257c835b8ad", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/scripts/pre_build.js:689", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/scripts/pre_build.js:689"}, "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-779bcb736f7efc13", "name": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/components/browser-sidebar.tsx:174", "shortDescription": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/components/browser-sidebar.tsx:174"}, "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-a7694b3644fc3983", "name": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/components/update-banner.tsx:305", "shortDescription": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/components/update-banner.tsx:305"}, "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-6d08a07fcec37619", "name": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/components/theme-provider.tsx:50", "shortDescription": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/components/theme-provider.tsx:50"}, "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-8cc2e131d096b1f1", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/chat-sidebar.tsx:214", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/chat-sidebar.tsx:214"}, "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-c97624506ca57e8c", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/notification-handler.tsx:223", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/notification-handler.tsx:223"}, "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-b5fec3fe27b5ae95", "name": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/components/app-entitlement-gate.tsx:30", "shortDescription": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/components/app-entitlement-gate.tsx:30"}, "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-28b851c74f693f11", "name": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/components/standalone-chat.tsx:48", "shortDescription": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/components/standalone-chat.tsx:48"}, "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-36547c7165aa5d04", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/components/notification-bell.tsx:51", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/components/notification-bell.tsx:51"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8d8569ba100a5bca", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/components/share-logs-button.tsx:241", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/components/share-logs-button.tsx:241"}, "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-a90e7be7b49e9c43", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/settings/recording-settings.tsx:1759", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/settings/recording-settings.tsx:1759"}, "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-53847b0efa7d198b", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/settings/connections-section.tsx:1336", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/settings/connections-section.tsx:1336"}, "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-a91a6e29ec1903e4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/components/settings/ai-presets.tsx:936", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/components/settings/ai-presets.tsx:936"}, "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-d94f8651ca05588c", "name": "Commented-code block (9 lines) in apps/screenpipe-app-tauri/components/settings/pipes-section.tsx:1183", "shortDescription": {"text": "Commented-code block (9 lines) in apps/screenpipe-app-tauri/components/settings/pipes-section.tsx:1183"}, "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-ed0edbedfe312ae3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/components/settings/pipes-section.tsx:1080", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/components/settings/pipes-section.tsx:1080"}, "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-2a015e5d94ef2371", "name": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/components/settings/input-monitoring-card.tsx:33", "shortDescription": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/components/settings/input-monitoring-card.tsx:33"}, "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-a9846cd0047d9f7c", "name": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/components/settings/account-section.tsx:172", "shortDescription": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/components/settings/account-section.tsx:172"}, "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-b7bab554e498dd8a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/components/settings/account-section.tsx:135", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/components/settings/account-section.tsx:135"}, "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-eead72e0f6aeea6a", "name": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/components/settings/settings-search.tsx:12", "shortDescription": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/components/settings/settings-search.tsx: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-fbebad3a61dfc39a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/components/settings/sync-settings.tsx:964", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/components/settings/sync-settings.tsx:964"}, "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-c2fea888f3330fc4", "name": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/components/settings/privacy-section.tsx:523", "shortDescription": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/components/settings/privacy-section.tsx:523"}, "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-f75283721c04152b", "name": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/components/settings/agent-card.tsx:35", "shortDescription": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/components/settings/agent-card.tsx:35"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b8bb5f83e0127a9b", "name": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/components/settings/__tests__/account-section.subscription-g", "shortDescription": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/components/settings/__tests__/account-section.subscription-gate.test.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-0d937a785b64f916", "name": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/components/__tests__/markdown-viewer-link.test.ts:5", "shortDescription": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/components/__tests__/markdown-viewer-link.test.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-6b693c860cc73cc5", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/__tests__/pipe-ndjson-to-chat.test.ts:544", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/__tests__/pipe-ndjson-to-chat.test.ts:544"}, "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-a626df74a3ee9b79", "name": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/components/meeting-notes/replay-strip.tsx:262", "shortDescription": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/components/meeting-notes/replay-strip.tsx:262"}, "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-178e81b6a212e244", "name": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/components/meeting-notes/note-view.tsx:196", "shortDescription": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/components/meeting-notes/note-view.tsx:196"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5eb00542f42b65f8", "name": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/components/meeting-notes/transcript-panel.tsx:465", "shortDescription": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/components/meeting-notes/transcript-panel.tsx:465"}, "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-08242a4e36307474", "name": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/components/meeting-notes/index.tsx:179", "shortDescription": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/components/meeting-notes/index.tsx:179"}, "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-f7decb35feef7b17", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/onboarding/engine-startup.tsx:460", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/onboarding/engine-startup.tsx:460"}, "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-83a5cce1577c8095", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/components/onboarding/engine-startup.tsx:768", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/components/onboarding/engine-startup.tsx:768"}, "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-577ea988a223d5c3", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/onboarding/connect-apps.tsx:293", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/onboarding/connect-apps.tsx:293"}, "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-2e9234142cac389b", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/hooks/use-chat-conversations.ts:101", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/hooks/use-chat-conversations.ts:101"}, "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-1fa4bd2d54f1bc8f", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/rewind/search-modal.tsx:383", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/rewind/search-modal.tsx:383"}, "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-2712eab831c7dbf0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/components/rewind/region-ocr-overlay.tsx:153", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/components/rewind/region-ocr-overlay.tsx:153"}, "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-346297d6f4a54e16", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/rewind/timeline.tsx:305", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/rewind/timeline.tsx:305"}, "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-1a23c4e9fba073a8", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/rewind/ai-presets-selector.tsx:341", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/rewind/ai-presets-selector.tsx:341"}, "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-ca975f5b715f374c", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/rewind/current-frame-timeline.tsx:265", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/rewind/current-frame-timeline.tsx:265"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-224b84c7c5dcb136", "name": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/components/rewind/__tests__/search-result-strip.test.tsx:13", "shortDescription": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/components/rewind/__tests__/search-result-strip.test.tsx: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-15da63d35909977f", "name": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/components/rewind/timeline/timeline.tsx:988", "shortDescription": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/components/rewind/timeline/timeline.tsx:988"}, "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-53f946565f9a1a8f", "name": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/components/rewind/hooks/use-live-text.ts:115", "shortDescription": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/components/rewind/hooks/use-live-text.ts:115"}, "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-bb6562700b9313ba", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/rewind/hooks/use-timeline-keyboard.ts:205", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/rewind/hooks/use-timeline-keyboard.ts:205"}, "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-62217b6e9f51e36c", "name": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/components/rewind/hooks/use-frame-loading.ts:280", "shortDescription": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/components/rewind/hooks/use-frame-loading.ts:280"}, "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-c54292f529cbdffc", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/app/page.tsx:9", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/app/page.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-b6ec64c17d9fe9d6", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/app/layout.tsx:142", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/app/layout.tsx:142"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4c2db577b5b9fb5f", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/app/error.tsx:31", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/app/error.tsx:31"}, "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-38fbd1cd8a951779", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/app/global-error.tsx:19", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/app/global-error.tsx:19"}, "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-b4a85d5981d9391a", "name": "Commented-code block (13 lines) in apps/screenpipe-app-tauri/app/providers.tsx:37", "shortDescription": {"text": "Commented-code block (13 lines) in apps/screenpipe-app-tauri/app/providers.tsx:37"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-00e19749172ec624", "name": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/app/shortcut-reminder/page.tsx:148", "shortDescription": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/app/shortcut-reminder/page.tsx:148"}, "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-5ca2dcc9eaf7315b", "name": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/app/home/page.tsx:343", "shortDescription": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/app/home/page.tsx:343"}, "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-d15c370200afde55", "name": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/app/notification-panel/page.tsx:172", "shortDescription": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/app/notification-panel/page.tsx:172"}, "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-2db4c89a83011388", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/app/overlay/page.tsx:282", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/app/overlay/page.tsx:282"}, "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-bb57053571804f1a", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/lib/api.ts:165", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/lib/api.ts:165"}, "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-0e836ad22a3d2b56", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/lib/api.ts:240", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/lib/api.ts:240"}, "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-9e9f2c89e5933b8f", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/lib/timeline-navigation.ts:9", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/lib/timeline-navigation.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-403aacec74aab43c", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/lib/saf.ts:7", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/lib/saf.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-a2be217cdb3b8a94", "name": "Commented-code block (10 lines) in apps/screenpipe-app-tauri/lib/app-entitlement.ts:177", "shortDescription": {"text": "Commented-code block (10 lines) in apps/screenpipe-app-tauri/lib/app-entitlement.ts:177"}, "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-23efbc09cbfd1510", "name": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/lib/source-citations.ts:88", "shortDescription": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/lib/source-citations.ts:88"}, "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-3debaa3c753a4c2e", "name": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/lib/pipe-ndjson-to-chat.ts:214", "shortDescription": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/lib/pipe-ndjson-to-chat.ts:214"}, "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-5e4ca4caa208f78e", "name": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/lib/chat-storage.ts:88", "shortDescription": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/lib/chat-storage.ts:88"}, "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-ba93c083f09d983c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/lib/__tests__/team-api-contract.test.ts:19", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/lib/__tests__/team-api-contract.test.ts:19"}, "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-a488cb9505734fe9", "name": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/lib/__tests__/chat-store.test.ts:81", "shortDescription": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/lib/__tests__/chat-store.test.ts:81"}, "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-302ab8146fd9b562", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/lib/__tests__/save-conversation-race.test.tsx:159", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/lib/__tests__/save-conversation-race.test.tsx:159"}, "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-c291860efe94f71b", "name": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/lib/pi/extract-document.ts:7", "shortDescription": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/lib/pi/extract-document.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-b52c2f27661e28ae", "name": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/lib/stores/pi-event-router.ts:179", "shortDescription": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/lib/stores/pi-event-router.ts:179"}, "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-6759934a9ce5f380", "name": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/lib/stores/chat-store.ts:50", "shortDescription": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/lib/stores/chat-store.ts:50"}, "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-37c85815caa98456", "name": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/lib/events/pipe-run-recorder.ts:165", "shortDescription": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/lib/events/pipe-run-recorder.ts:165"}, "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-d1723e7693cf3b6d", "name": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/lib/events/pipe-watch-writer.ts:291", "shortDescription": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/lib/events/pipe-watch-writer.ts:291"}, "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-7b32c0be7f1b76e5", "name": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/lib/utils/calendar.ts:267", "shortDescription": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/lib/utils/calendar.ts:267"}, "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-63932a7b6443d0eb", "name": "Legacy-named symbol `manualLegacy` in apps/screenpipe-app-tauri/lib/utils/meeting-state.test.ts:18", "shortDescription": {"text": "Legacy-named symbol `manualLegacy` in apps/screenpipe-app-tauri/lib/utils/meeting-state.test.ts:18"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5e25685987e04c9a", "name": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/lib/utils/connection-chip.ts:5", "shortDescription": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/lib/utils/connection-chip.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-619d29369cc14d5b", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/lib/hooks/use-team.ts:530", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/lib/hooks/use-team.ts:530"}, "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-1ef304fa7ddd4c09", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/lib/hooks/use-team.ts:280", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/lib/hooks/use-team.ts:280"}, "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-9cab4c9b151089c3", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/lib/hooks/use-pi-thinking-level.ts:59", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/lib/hooks/use-pi-thinking-level.ts:59"}, "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-d85f90395d6b3e0d", "name": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/lib/hooks/use-settings.tsx:440", "shortDescription": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/lib/hooks/use-settings.tsx:440"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e6153e30fd53b033", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/lib/hooks/use-sql-autocomplete.tsx:352", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/lib/hooks/use-sql-autocomplete.tsx:352"}, "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-89d867af193d5d86", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/lib/hooks/use-unified-artifacts.ts:81", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/lib/hooks/use-unified-artifacts.ts:81"}, "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-1983639a97944ea2", "name": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/lib/hooks/use-enterprise-policy.ts:50", "shortDescription": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/lib/hooks/use-enterprise-policy.ts:50"}, "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-445940469606df79", "name": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/lib/hooks/__tests__/server-push-old-frames.test.ts:245", "shortDescription": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/lib/hooks/__tests__/server-push-old-frames.test.ts:245"}, "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-481373d77487f2eb", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/lib/hooks/__tests__/server-poll-logic.test.ts:276", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/lib/hooks/__tests__/server-poll-logic.test.ts:276"}, "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-bb34fc9e15ae1042", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/lib/hooks/__tests__/server-poll-logic.test.ts:21", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/lib/hooks/__tests__/server-poll-logic.test.ts:211"}, "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-2eafcb55a8b3934c", "name": "Commented-code block (9 lines) in apps/screenpipe-app-tauri/lib/actions/has-frames-date.ts:34", "shortDescription": {"text": "Commented-code block (9 lines) in apps/screenpipe-app-tauri/lib/actions/has-frames-date.ts:34"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-76521c3c13fb6ea6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/src-tauri/assets/extensions/save-artifact.ts:96", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/src-tauri/assets/extensions/save-artifact.ts:96"}, "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-f4554a3e74ee2fe0", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/e2e/scripts/generate-coverage-report.ts:660", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/e2e/scripts/generate-coverage-report.ts:660"}, "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-a4162c78ece5f2cd", "name": "Commented-code block (10 lines) in apps/screenpipe-app-tauri/e2e/helpers/test-utils.ts:111", "shortDescription": {"text": "Commented-code block (10 lines) in apps/screenpipe-app-tauri/e2e/helpers/test-utils.ts:111"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7792ba2d5a6f3503", "name": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/e2e/helpers/app-launcher.ts:56", "shortDescription": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/e2e/helpers/app-launcher.ts:56"}, "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-bfd36077ede1ff6f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/e2e/mock-updates/updater-harness.ts:224", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/e2e/mock-updates/updater-harness.ts:224"}, "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-3ad204428b1d0332", "name": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/e2e/specs/zz-logout-resurrect.spec.ts:292", "shortDescription": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/e2e/specs/zz-logout-resurrect.spec.ts:292"}, "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-eef287047a5847ae", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/e2e/specs/chat-switch-context-loss.spec.ts:202", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/e2e/specs/chat-switch-context-loss.spec.ts:202"}, "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-d80c6db57e54df78", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/e2e/specs/api.spec.ts:48", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/e2e/specs/api.spec.ts:48"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c749c515b822a2ea", "name": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/e2e/specs/home-window.spec.ts:34", "shortDescription": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/e2e/specs/home-window.spec.ts:34"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7ecb80008b2376b4", "name": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/e2e/specs/chat-parallel-jobs-duplicate.spec.ts:151", "shortDescription": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/e2e/specs/chat-parallel-jobs-duplicate.spec.ts:151"}, "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-7c68cb859a706659", "name": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/e2e/specs/settings-sections.spec.ts:130", "shortDescription": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/e2e/specs/settings-sections.spec.ts:130"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7f0c519f681803fe", "name": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/e2e/specs/zz-app-entitlement-gate.spec.ts:7", "shortDescription": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/e2e/specs/zz-app-entitlement-gate.spec.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-6253c0bf015a9cac", "name": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/e2e/specs/help-discord-link.spec.ts:45", "shortDescription": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/e2e/specs/help-discord-link.spec.ts:45"}, "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-c472b601328476e3", "name": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/e2e/specs/onboarding-redirect.spec.ts:5", "shortDescription": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/e2e/specs/onboarding-redirect.spec.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-7d26f61322a7f375", "name": "Commented-code block (9 lines) in apps/screenpipe-app-tauri/e2e/specs/chat-composer-isolation.spec.ts:33", "shortDescription": {"text": "Commented-code block (9 lines) in apps/screenpipe-app-tauri/e2e/specs/chat-composer-isolation.spec.ts:33"}, "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-d4e7d7189a221b75", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/e2e/specs/audio-fallback.spec.ts:35", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/e2e/specs/audio-fallback.spec.ts:35"}, "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-b01c40db983aa356", "name": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/e2e/specs/notification-viewer-link.spec.ts:5", "shortDescription": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/e2e/specs/notification-viewer-link.spec.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-0f471a77f238de20", "name": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/e2e/specs/meeting-note-bottom-click.spec.ts:74", "shortDescription": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/e2e/specs/meeting-note-bottom-click.spec.ts:74"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ae121a8d184c8304", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/e2e/specs/meeting-note-bottom-click.spec.ts:133", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/e2e/specs/meeting-note-bottom-click.spec.ts:133"}, "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-774bde6fb4d34257", "name": "Commented-code block (13 lines) in apps/screenpipe-app-tauri/e2e/specs/windows-user-journey.spec.ts:740", "shortDescription": {"text": "Commented-code block (13 lines) in apps/screenpipe-app-tauri/e2e/specs/windows-user-journey.spec.ts:740"}, "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-b978f5bca21a8d9f", "name": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/e2e/specs/pipes.spec.ts:252", "shortDescription": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/e2e/specs/pipes.spec.ts:252"}, "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-88d1432bced13f2a", "name": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/e2e/specs/viewer-deeplink.spec.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/e2e/specs/viewer-deeplink.spec.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-bb5711804f85b3d4", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/e2e/specs/zz-account-stale-subscription.spec.ts:199", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/e2e/specs/zz-account-stale-subscription.spec.ts:199"}, "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-9dea7c5ed99cb68e", "name": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/e2e/specs/api-key-cold-spawn.spec.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/e2e/specs/api-key-cold-spawn.spec.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-9b34868b07437555", "name": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/e2e/specs/timeline.spec.ts:67", "shortDescription": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/e2e/specs/timeline.spec.ts:67"}, "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-8f8da53160b1f2e2", "name": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/e2e/specs/zz-owned-browser-background-nav.spec.ts:77", "shortDescription": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/e2e/specs/zz-owned-browser-background-nav.spec.ts:77"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-abc68a6cc3e5fe19", "name": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/e2e/specs/chat-window.spec.ts:52", "shortDescription": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/e2e/specs/chat-window.spec.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-afe88c13239804d4", "name": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/e2e/specs/chat-within-session-context-loss.spec.ts:221", "shortDescription": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/e2e/specs/chat-within-session-context-loss.spec.ts:221"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e9ec5e859e9026a3", "name": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/e2e/specs/tray-search.spec.ts:124", "shortDescription": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/e2e/specs/tray-search.spec.ts:124"}, "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-9a26348c1bceb8bf", "name": "Commented-code block (6 lines) in crates/screenpipe-connect/src/whatsapp/gateway.mjs:7", "shortDescription": {"text": "Commented-code block (6 lines) in crates/screenpipe-connect/src/whatsapp/gateway.mjs: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-75a581dc8386eaa8", "name": "Commented-code block (6 lines) in crates/screenpipe-core/assets/extensions/sub-agent.ts:11", "shortDescription": {"text": "Commented-code block (6 lines) in crates/screenpipe-core/assets/extensions/sub-agent.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-29e7c0901ef6aa59", "name": "Commented-code block (5 lines) in packages/cli/screenpipe/lib/cli.js:6", "shortDescription": {"text": "Commented-code block (5 lines) in packages/cli/screenpipe/lib/cli.js:6"}, "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-a7db1c980921d401", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/browser-extension/src/options.ts:186", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/browser-extension/src/options.ts:186"}, "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-5dbbf79236ef85ec", "name": "Commented-code block (5 lines) in packages/ai-gateway/src/index.ts:172", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ai-gateway/src/index.ts:172"}, "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-4f7a2af57f72526b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/index.ts:665", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/index.ts:665"}, "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-ddbd1c6140325c24", "name": "Commented-code block (5 lines) in packages/ai-gateway/src/types.ts:174", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ai-gateway/src/types.ts:174"}, "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-e3e29e4115e9dd62", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/test/vertex-proxy.test.ts:50", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/test/vertex-proxy.test.ts:50"}, "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-9c63275d53ea63a8", "name": "Commented-code block (5 lines) in packages/ai-gateway/src/test/vertex-maas.unit.test.ts:179", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ai-gateway/src/test/vertex-maas.unit.test.ts:179"}, "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-6f0c676797152d88", "name": "Commented-code block (5 lines) in packages/ai-gateway/src/test/openai-models.unit.test.ts:276", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ai-gateway/src/test/openai-models.unit.test.ts:276"}, "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-a6c512f00a3e309d", "name": "Commented-code block (5 lines) in packages/ai-gateway/src/test/flex-tier.unit.test.ts:28", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ai-gateway/src/test/flex-tier.unit.test.ts:28"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-89edb59a4566d677", "name": "Legacy-named symbol `validateAuthLegacy` in packages/ai-gateway/src/utils/auth.ts:163", "shortDescription": {"text": "Legacy-named symbol `validateAuthLegacy` in packages/ai-gateway/src/utils/auth.ts:163"}, "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-2fde515f164c3654", "name": "Commented-code block (6 lines) in packages/ai-gateway/src/utils/auth.ts:187", "shortDescription": {"text": "Commented-code block (6 lines) in packages/ai-gateway/src/utils/auth.ts:187"}, "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-25293c6de69aef27", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/utils/auth.ts:194", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/utils/auth.ts:194"}, "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-3ccaf4d9eb6a0720", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/utils/voice-utils.ts:196", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/utils/voice-utils.ts:196"}, "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-bb58bb3d0cd1a064", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/utils/rate-limiter.ts:19", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/utils/rate-limiter.ts:19"}, "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-fa1f45ba027bda48", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/providers/anthropic-proxy.ts:168", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/providers/anthropic-proxy.ts:168"}, "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-46ebc0d81408de54", "name": "Commented-code block (5 lines) in packages/ai-gateway/src/providers/index.ts:12", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ai-gateway/src/providers/index.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-9db4121ad21fd613", "name": "Commented-code block (5 lines) in packages/ai-gateway/src/providers/vertex-maas.ts:82", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ai-gateway/src/providers/vertex-maas.ts:82"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e48f7a8016941062", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/providers/vertex-maas.ts:68", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/providers/vertex-maas.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-59624145dff511be", "name": "Commented-code block (5 lines) in packages/ai-gateway/src/providers/gemini.ts:68", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ai-gateway/src/providers/gemini.ts:68"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0a13a13cb2bb7123", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/providers/gemini.ts:128", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/providers/gemini.ts:128"}, "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-3331ed0ef65b0e63", "name": "Commented-code block (7 lines) in packages/ai-gateway/src/providers/openai.ts:68", "shortDescription": {"text": "Commented-code block (7 lines) in packages/ai-gateway/src/providers/openai.ts:68"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e4cd0c92125466b2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/providers/vertex.ts:137", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/providers/vertex.ts:137"}, "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-2c6b482dcee1c29e", "name": "Commented-code block (5 lines) in packages/ai-gateway/src/providers/anthropic.ts:292", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ai-gateway/src/providers/anthropic.ts:292"}, "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-965aa3b2feb3c52b", "name": "Commented-code block (6 lines) in packages/ai-gateway/src/services/usage-tracker.ts:139", "shortDescription": {"text": "Commented-code block (6 lines) in packages/ai-gateway/src/services/usage-tracker.ts:139"}, "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-800e9a79c2acbb08", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/services/usage-tracker.ts:365", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/services/usage-tracker.ts:365"}, "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-b195788c28068494", "name": "Commented-code block (7 lines) in packages/ai-gateway/src/services/cost-tracker.ts:11", "shortDescription": {"text": "Commented-code block (7 lines) in packages/ai-gateway/src/services/cost-tracker.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-a1769e8abedc9182", "name": "Commented-code block (7 lines) in packages/ai-gateway/src/handlers/chat.ts:32", "shortDescription": {"text": "Commented-code block (7 lines) in packages/ai-gateway/src/handlers/chat.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-9e9a71c665845993", "name": "Commented-code block (5 lines) in packages/ai-gateway/src/handlers/models.ts:287", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ai-gateway/src/handlers/models.ts:287"}, "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-c899b9815a5f23e1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/handlers/transcription.ts:122", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/handlers/transcription.ts:122"}, "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-3fd1d9d8963f9712", "name": "Commented-code block (15 lines) in packages/screenpipe-mcp/src/index.ts:32", "shortDescription": {"text": "Commented-code block (15 lines) in packages/screenpipe-mcp/src/index.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-d91660faecfb76a0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/screenpipe-mcp/src/index.ts:230", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/screenpipe-mcp/src/index.ts:230"}, "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-d2523d2587ec8072", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/screenpipe-mcp/src/http-server.test.ts:226", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/screenpipe-mcp/src/http-server.test.ts:226"}, "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-7114dbc43e5bb845", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/screenpipe-mcp/src/http-server.ts:190", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/screenpipe-mcp/src/http-server.ts:190"}, "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-1e4997af109b1b4a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/screenpipe-mcp/src/export-video.test.ts:68", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/screenpipe-mcp/src/export-video.test.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-265b11da7dd2bc87", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/e2e/src/suites/api.ts:33", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/e2e/src/suites/api.ts:33"}, "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-9815038745ed794a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .github/scripts/e2e/test-lifecycle.ts:108", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .github/scripts/e2e/test-lifecycle.ts:108"}, "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-451c889e56208413", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .github/scripts/e2e/test-api.ts:11", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .github/scripts/e2e/test-api.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-f128a6dbfe636d59", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .github/scripts/e2e/lib.ts:319", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .github/scripts/e2e/lib.ts:319"}, "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-6ce96fba8bd7f8a6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .github/scripts/e2e/test-windows.ts:46", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .github/scripts/e2e/test-windows.ts:46"}, "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-506fbff6d5b5f0f3", "name": "Commented-code block (5 lines) in ee/sdk/electron/index.js:60", "shortDescription": {"text": "Commented-code block (5 lines) in ee/sdk/electron/index.js:60"}, "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-91c6ae8102464e06", "name": "Commented-code block (6 lines) in ee/sdk/bridges/node-json-session.mjs:81", "shortDescription": {"text": "Commented-code block (6 lines) in ee/sdk/bridges/node-json-session.mjs:81"}, "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-05083ca5c864ea93", "name": "Commented-code block (6 lines) in ee/sdk/Sources/Screenpipe/Resources/screenpipe-node-bridge.mjs:81", "shortDescription": {"text": "Commented-code block (6 lines) in ee/sdk/Sources/Screenpipe/Resources/screenpipe-node-bridge.mjs:81"}, "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-c669ba9e8bce923c", "name": "Commented-code block (7 lines) in ee/sdk/tauri/index.js:65", "shortDescription": {"text": "Commented-code block (7 lines) in ee/sdk/tauri/index.js:65"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6a18a160fc5750f9", "name": "Commented-code block (5 lines) in ee/sdk/__test__/_helpers.mjs:7", "shortDescription": {"text": "Commented-code block (5 lines) in ee/sdk/__test__/_helpers.mjs: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-87883eb4596f38fb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 ee/sdk/__test__/_helpers.mjs:94", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 ee/sdk/__test__/_helpers.mjs:94"}, "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-ce095ca9669ff55f", "name": "Commented-code block (5 lines) in ee/sdk/__test__/bridge_telemetry_env.test.mjs:5", "shortDescription": {"text": "Commented-code block (5 lines) in ee/sdk/__test__/bridge_telemetry_env.test.mjs: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-b35d1b3d9e2aa7ef", "name": "Commented-code block (6 lines) in ee/sdk/__test__/session_events.test.mjs:9", "shortDescription": {"text": "Commented-code block (6 lines) in ee/sdk/__test__/session_events.test.mjs: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-eb9339e4ca8ce566", "name": "Commented-code block (6 lines) in ee/sdk/__test__/recording.test.mjs:9", "shortDescription": {"text": "Commented-code block (6 lines) in ee/sdk/__test__/recording.test.mjs: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-5f206beef783db29", "name": "Commented-code block (5 lines) in ee/sdk/examples/record-with-paired-10s.mjs:5", "shortDescription": {"text": "Commented-code block (5 lines) in ee/sdk/examples/record-with-paired-10s.mjs: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-c6b2a44d03704ae7", "name": "Commented-code block (5 lines) in ee/sdk/examples/preflight-and-record.mjs:5", "shortDescription": {"text": "Commented-code block (5 lines) in ee/sdk/examples/preflight-and-record.mjs: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-f42f704406479f74", "name": "Commented-code block (6 lines) in ee/sdk/examples/record-with-privacy-filter.mjs:12", "shortDescription": {"text": "Commented-code block (6 lines) in ee/sdk/examples/record-with-privacy-filter.mjs: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-861625c304406873", "name": "Commented-code block (6 lines) in ee/sdk/examples/electron-app/main.js:76", "shortDescription": {"text": "Commented-code block (6 lines) in ee/sdk/examples/electron-app/main.js:76"}, "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-6dbc706eaecc3a02", "name": "Commented-code block (8 lines) in ee/sdk/examples/tauri-app/vite.config.js:7", "shortDescription": {"text": "Commented-code block (8 lines) in ee/sdk/examples/tauri-app/vite.config.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-9187f17d70e0ee5b", "name": "Commented-code block (5 lines) in ee/sdk/session/telemetry.js:7", "shortDescription": {"text": "Commented-code block (5 lines) in ee/sdk/session/telemetry.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-955b5fa3bf6ea8bf", "name": "Commented-code block (6 lines) in ee/sdk/session/telemetry-core.js:9", "shortDescription": {"text": "Commented-code block (6 lines) in ee/sdk/session/telemetry-core.js: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-5b609fe82290df4f", "name": "Commented-code block (5 lines) in ee/sdk/session/index.js:119", "shortDescription": {"text": "Commented-code block (5 lines) in ee/sdk/session/index.js:119"}, "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}}]}}, "automationDetails": {"id": "repobility/19144"}, "properties": {"repository": "screenpipe/screenpipe", "repoUrl": "https://github.com/screenpipe/screenpipe", "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-9c4a57162a8545e6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/scripts/gen-skill-content.js:66"}, "properties": {"repobilityId": "c5b5cd8b6c48e3e1", "scanner": "scanner-primary", "fingerprint": "9c4a57162a8545e6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d1d2d139f0a1e6b4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/scripts/find_tools.js:14"}, "properties": {"repobilityId": "9f551d080c417be3", "scanner": "scanner-primary", "fingerprint": "d1d2d139f0a1e6b4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-293668eece0323a2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/scripts/pre_build.js:24"}, "properties": {"repobilityId": "7692b0b68c852c3e", "scanner": "scanner-primary", "fingerprint": "293668eece0323a2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8e1fed4c32a4881f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/scripts/setup_openblas.js:45"}, "properties": {"repobilityId": "435e2be229f2c352", "scanner": "scanner-primary", "fingerprint": "8e1fed4c32a4881f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-acc2c0562df4344c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/model-download-tracker.tsx:120"}, "properties": {"repobilityId": "2e9a68790d347b6e", "scanner": "scanner-primary", "fingerprint": "acc2c0562df4344c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8aa9e177e5c9587b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/file-preview-sidebar.tsx:76"}, "properties": {"repobilityId": "bc3085ccf4e5bb87", "scanner": "scanner-primary", "fingerprint": "8aa9e177e5c9587b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a394058b81fe2c46", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/speaker-assign-popover.tsx:294"}, "properties": {"repobilityId": "2d83783439ca663a", "scanner": "scanner-primary", "fingerprint": "a394058b81fe2c46", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0f05d5189c58e2b1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/deeplink-handler.tsx:63"}, "properties": {"repobilityId": "09f0ae485b685816", "scanner": "scanner-primary", "fingerprint": "0f05d5189c58e2b1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ba8bd4f1ca2e93da", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/conversation-bubble.tsx:310"}, "properties": {"repobilityId": "ff3614c117932a16", "scanner": "scanner-primary", "fingerprint": "ba8bd4f1ca2e93da", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4fb7387fb8785a68", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/browser-sidebar.tsx:925"}, "properties": {"repobilityId": "e350853f9f940cb0", "scanner": "scanner-primary", "fingerprint": "4fb7387fb8785a68", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ec5f4589cf45e9a2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/update-banner.tsx:234"}, "properties": {"repobilityId": "f98bfb575f89c9bb", "scanner": "scanner-primary", "fingerprint": "ec5f4589cf45e9a2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d1755b450bb99532", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/recording-status.tsx:217"}, "properties": {"repobilityId": "63a35675b969926f", "scanner": "scanner-primary", "fingerprint": "d1755b450bb99532", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6a1aa877452d1e32", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/chat-sidebar.tsx:1099"}, "properties": {"repobilityId": "784dc27bee72131a", "scanner": "scanner-primary", "fingerprint": "6a1aa877452d1e32", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-493fd2398f5471b2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/pipe-store.tsx:1059"}, "properties": {"repobilityId": "184f4ce38e2fb408", "scanner": "scanner-primary", "fingerprint": "493fd2398f5471b2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c1409e262f1bbb90", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/notification-handler.tsx:65"}, "properties": {"repobilityId": "76e1c3a722f71bc0", "scanner": "scanner-primary", "fingerprint": "c1409e262f1bbb90", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-71a13cda1ab97dda", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/speaker-badge.tsx:37"}, "properties": {"repobilityId": "622a64aa033d28ef", "scanner": "scanner-primary", "fingerprint": "71a13cda1ab97dda", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c70714076fc6ea82", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/standalone-chat.tsx:1120"}, "properties": {"repobilityId": "9462944cc1fa6ef1", "scanner": "scanner-primary", "fingerprint": "c70714076fc6ea82", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1963c4c60e548544", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/standalone-chat.tsx:3706"}, "properties": {"repobilityId": "c23da062d53d1199", "scanner": "scanner-primary", "fingerprint": "1963c4c60e548544", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d23e5e90ac3d577f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/notification-bell.tsx:268"}, "properties": {"repobilityId": "6c586db50509ed5b", "scanner": "scanner-primary", "fingerprint": "d23e5e90ac3d577f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-37b88447d1590ba2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/archive-settings.tsx:393"}, "properties": {"repobilityId": "623ff699d6611edd", "scanner": "scanner-primary", "fingerprint": "37b88447d1590ba2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7146ece4b84ef001", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/google-calendar-card.tsx:297"}, "properties": {"repobilityId": "e311394158b0610c", "scanner": "scanner-primary", "fingerprint": "7146ece4b84ef001", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fc2fd39bc0648f0b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/speakers-section.tsx:340"}, "properties": {"repobilityId": "193c9d477aeb0ca3", "scanner": "scanner-primary", "fingerprint": "fc2fd39bc0648f0b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0ca5772911e94de2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/storage-section.tsx:160"}, "properties": {"repobilityId": "55372e71506b35a2", "scanner": "scanner-primary", "fingerprint": "0ca5772911e94de2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b0ab88914abfb8fb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/recording-settings.tsx:894"}, "properties": {"repobilityId": "8d9d63623325e149", "scanner": "scanner-primary", "fingerprint": "b0ab88914abfb8fb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fedab97a313d2dbf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/settings/recording-settings.tsx:2074"}, "properties": {"repobilityId": "1e1bfe5f97387285", "scanner": "scanner-primary", "fingerprint": "fedab97a313d2dbf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8a2ec6d88cf7b032", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/ics-calendar-card.tsx:185"}, "properties": {"repobilityId": "835c3d0e7a3ac990", "scanner": "scanner-primary", "fingerprint": "8a2ec6d88cf7b032", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7001800b176b9a28", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/connections-section.tsx:866"}, "properties": {"repobilityId": "b95a6322c9503781", "scanner": "scanner-primary", "fingerprint": "7001800b176b9a28", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-41ea2ff6875ca3b8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/skills-card.tsx:146"}, "properties": {"repobilityId": "721cd9b73bae2135", "scanner": "scanner-primary", "fingerprint": "41ea2ff6875ca3b8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-50c86224515c8ed7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/settings/shortcut-row.tsx:122"}, "properties": {"repobilityId": "a6a2ef97f19a60ae", "scanner": "scanner-primary", "fingerprint": "50c86224515c8ed7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-19398780f54830d4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/cloud-pipes-tab.tsx:147"}, "properties": {"repobilityId": "08d962d68280e49a", "scanner": "scanner-primary", "fingerprint": "19398780f54830d4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-09fc56fbd2682d3a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/disk-usage-section.tsx:149"}, "properties": {"repobilityId": "8cfd9793b0f2a946", "scanner": "scanner-primary", "fingerprint": "09fc56fbd2682d3a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f9193348808c5a6a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/ai-presets.tsx:238"}, "properties": {"repobilityId": "05d6966e69de3a40", "scanner": "scanner-primary", "fingerprint": "f9193348808c5a6a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-018c4936b66b5110", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/settings/ai-presets.tsx:1036"}, "properties": {"repobilityId": "8d14034ee4ce5aa9", "scanner": "scanner-primary", "fingerprint": "018c4936b66b5110", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0ba4243b1fa29062", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/apple-calendar-card.tsx:267"}, "properties": {"repobilityId": "dcc387cd6c0e7e76", "scanner": "scanner-primary", "fingerprint": "0ba4243b1fa29062", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-643c51486e44db8e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/apply-restart-bar.tsx:62"}, "properties": {"repobilityId": "b77ebdb3e704c1fb", "scanner": "scanner-primary", "fingerprint": "643c51486e44db8e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fc428a9ce66cbf41", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/brain-section.tsx:857"}, "properties": {"repobilityId": "66b950b0be0cd06b", "scanner": "scanner-primary", "fingerprint": "fc428a9ce66cbf41", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d4ff1fe7ea158e70", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/gmail-card.tsx:131"}, "properties": {"repobilityId": "57164ea228270c9d", "scanner": "scanner-primary", "fingerprint": "d4ff1fe7ea158e70", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fa9652030cf24fa3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/schedule-settings.tsx:325"}, "properties": {"repobilityId": "12592bbb1f71ebe5", "scanner": "scanner-primary", "fingerprint": "fa9652030cf24fa3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dfcc4068d3a1dc4d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/google-docs-card.tsx:180"}, "properties": {"repobilityId": "b831570ada4723cd", "scanner": "scanner-primary", "fingerprint": "dfcc4068d3a1dc4d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-eebb86d93aa6bce5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/custom-mcp-card.tsx:392"}, "properties": {"repobilityId": "2a1cb829bbbea187", "scanner": "scanner-primary", "fingerprint": "eebb86d93aa6bce5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6f065be737b8bad4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/usage-section.tsx:455"}, "properties": {"repobilityId": "c62e9aefcdc9d2fa", "scanner": "scanner-primary", "fingerprint": "6f065be737b8bad4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1d4cfe2bf199aa5c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/pipes-section.tsx:523"}, "properties": {"repobilityId": "a16534823eb5ff2e", "scanner": "scanner-primary", "fingerprint": "1d4cfe2bf199aa5c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2545e7cc8acbc49a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/settings/pipes-section.tsx:1369"}, "properties": {"repobilityId": "71fb98a05d64a27d", "scanner": "scanner-primary", "fingerprint": "2545e7cc8acbc49a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2ca3d494b728046b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/settings/account-section.tsx:82"}, "properties": {"repobilityId": "27dcb5970a0a60a5", "scanner": "scanner-primary", "fingerprint": "2ca3d494b728046b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0b231f2d67b73f72", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/settings-search.tsx:525"}, "properties": {"repobilityId": "095b27bf41e71568", "scanner": "scanner-primary", "fingerprint": "0b231f2d67b73f72", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-43ae0ef80bd101b5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/settings/sync-settings.tsx:775"}, "properties": {"repobilityId": "61a11d8653151249", "scanner": "scanner-primary", "fingerprint": "43ae0ef80bd101b5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-22d1898b5dadfc3e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/google-sheets-card.tsx:130"}, "properties": {"repobilityId": "07d176ff10cec815", "scanner": "scanner-primary", "fingerprint": "22d1898b5dadfc3e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c77a83216a950d49", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/meeting-apps-picker.tsx:111"}, "properties": {"repobilityId": "2af82f91745ef326", "scanner": "scanner-primary", "fingerprint": "c77a83216a950d49", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bddc90f65c3f8fde", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/settings/window-picker.tsx:203"}, "properties": {"repobilityId": "c86a6d3c8e295262", "scanner": "scanner-primary", "fingerprint": "bddc90f65c3f8fde", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-44308272097edf8f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/__tests__/url-detection-benchmark.test.ts:98"}, "properties": {"repobilityId": "2076469dea01469b", "scanner": "scanner-primary", "fingerprint": "44308272097edf8f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2fbe13d47f282d90", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/meeting-notes/note-view.tsx:1432"}, "properties": {"repobilityId": "c8a525439b48d28e", "scanner": "scanner-primary", "fingerprint": "2fbe13d47f282d90", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-15997ea3dcaaea21", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/meeting-notes/list-view.tsx:336"}, "properties": {"repobilityId": "f93e48b3b08fe137", "scanner": "scanner-primary", "fingerprint": "15997ea3dcaaea21", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-da172773db4e32ec", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/meeting-notes/editor-menus.tsx:294"}, "properties": {"repobilityId": "b939ffc0c202c980", "scanner": "scanner-primary", "fingerprint": "da172773db4e32ec", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a96cc5e2078ccec6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/meeting-notes/past-meetings.tsx:262"}, "properties": {"repobilityId": "e3b64237ddaf1031", "scanner": "scanner-primary", "fingerprint": "a96cc5e2078ccec6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-743bb2d9805efad8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/meeting-notes/receipts.tsx:66"}, "properties": {"repobilityId": "a57b0e02a47937e9", "scanner": "scanner-primary", "fingerprint": "743bb2d9805efad8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a9f25d3fd23a2df2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/meeting-notes/coming-up.tsx:366"}, "properties": {"repobilityId": "dc7c996650fd7f84", "scanner": "scanner-primary", "fingerprint": "a9f25d3fd23a2df2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-05c618f40db03916", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/ui/multi-select.tsx:459"}, "properties": {"repobilityId": "9d3574894f7bbf9e", "scanner": "scanner-primary", "fingerprint": "05c618f40db03916", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-688d6071669be13b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/chat/recent-chat-switcher.tsx:116"}, "properties": {"repobilityId": "132ba4c0198fbb98", "scanner": "scanner-primary", "fingerprint": "688d6071669be13b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1cd578c96bb4a903", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/chat/source-citation-footer.tsx:123"}, "properties": {"repobilityId": "cd3bb1a6688428d6", "scanner": "scanner-primary", "fingerprint": "1cd578c96bb4a903", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-748cb3e08a059ade", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/chat/pipe-context-banner.tsx:60"}, "properties": {"repobilityId": "c3bae0a9a9d837a9", "scanner": "scanner-primary", "fingerprint": "748cb3e08a059ade", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1c2757db1069371e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/onboarding/connect-apps.tsx:429"}, "properties": {"repobilityId": "7244026a0f21f320", "scanner": "scanner-primary", "fingerprint": "1c2757db1069371e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-35b4737e6e9797a1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/onboarding/connect-apps.tsx:142"}, "properties": {"repobilityId": "a433501567c28dc3", "scanner": "scanner-primary", "fingerprint": "35b4737e6e9797a1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b4183c9f3c51c5dc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/rewind/search-modal.tsx:358"}, "properties": {"repobilityId": "54721bcf2b5f4dbc", "scanner": "scanner-primary", "fingerprint": "b4183c9f3c51c5dc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d0725c5de074cd19", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/rewind/timeline.tsx:1261"}, "properties": {"repobilityId": "726f35b1c1737daf", "scanner": "scanner-primary", "fingerprint": "d0725c5de074cd19", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ba4725b99a0856c1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/rewind/ai-presets-selector.tsx:1460"}, "properties": {"repobilityId": "7fe28735820da17e", "scanner": "scanner-primary", "fingerprint": "ba4725b99a0856c1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f98bb5344f98a144", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/screenpipe-app-tauri/components/rewind/mermaid-diagram.tsx:192"}, "properties": {"repobilityId": "594ff963e0620e2b", "scanner": "scanner-primary", "fingerprint": "f98bb5344f98a144", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-696dcc8b48be5a91", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/rewind/current-frame-timeline.tsx:377"}, "properties": {"repobilityId": "26b28555b4620ff2", "scanner": "scanner-primary", "fingerprint": "696dcc8b48be5a91", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bbfbb1d88c853531", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/rewind/timeline/timeline-tag-toolbar.tsx:288"}, "properties": {"repobilityId": "a7e301b8263c1c0e", "scanner": "scanner-primary", "fingerprint": "bbfbb1d88c853531", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ac7293213509ef7b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/rewind/timeline/audio-transcript.tsx:661"}, "properties": {"repobilityId": "d04e2b669fbcdb39", "scanner": "scanner-primary", "fingerprint": "ac7293213509ef7b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a536a7bd270dadbc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/rewind/timeline/timeline.tsx:1906"}, "properties": {"repobilityId": "6b82e2dc3468789c", "scanner": "scanner-primary", "fingerprint": "a536a7bd270dadbc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7f22a1863fac0bd5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/rewind/timeline/timeline-controls.tsx:185"}, "properties": {"repobilityId": "4369c8c4c96b6c45", "scanner": "scanner-primary", "fingerprint": "7f22a1863fac0bd5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7dbc3a16372db7e1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/components/rewind/timeline/app-context-popover.tsx:251"}, "properties": {"repobilityId": "61dba1dfa30501c5", "scanner": "scanner-primary", "fingerprint": "7dbc3a16372db7e1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-123c46c5a199fff7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/rewind/hooks/use-live-text.ts:100"}, "properties": {"repobilityId": "1900d1216e53ad7c", "scanner": "scanner-primary", "fingerprint": "123c46c5a199fff7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-db239f060b99201a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/components/rewind/hooks/use-frame-loading.ts:202"}, "properties": {"repobilityId": "1ad255d97b7201de", "scanner": "scanner-primary", "fingerprint": "db239f060b99201a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e3a7934cb64a1d2a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 apps/screenpipe-app-tauri/app/layout.tsx:17"}, "properties": {"repobilityId": "1a6c0418afd9b337", "scanner": "scanner-primary", "fingerprint": "e3a7934cb64a1d2a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-aba766c14f7bfa20", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/app/layout.tsx:217"}, "properties": {"repobilityId": "8560820179a067b1", "scanner": "scanner-primary", "fingerprint": "aba766c14f7bfa20", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-92f9111380754174", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/screenpipe-app-tauri/app/layout.tsx:336"}, "properties": {"repobilityId": "5eb910f3afb2c927", "scanner": "scanner-primary", "fingerprint": "92f9111380754174", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-7ea29fccb9fb3286", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/app/viewer/page.tsx:169"}, "properties": {"repobilityId": "5ab4b6656eabe43b", "scanner": "scanner-primary", "fingerprint": "7ea29fccb9fb3286", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1dbfcf6d80d5aa65", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/app/shortcut-reminder/page.tsx:300"}, "properties": {"repobilityId": "0bcf31400e502cd3", "scanner": "scanner-primary", "fingerprint": "1dbfcf6d80d5aa65", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-11feebd3164fa8fe", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/screenpipe-app-tauri/app/home/page.tsx:1083"}, "properties": {"repobilityId": "d860b2acc509c7bb", "scanner": "scanner-primary", "fingerprint": "11feebd3164fa8fe", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-767d66ac1cc82e0a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/app/overlay/page.tsx:234"}, "properties": {"repobilityId": "7e122745d57d51dc", "scanner": "scanner-primary", "fingerprint": "767d66ac1cc82e0a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cd33e102bdca1d19", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/notifications.ts:24"}, "properties": {"repobilityId": "b53a534696dfce2f", "scanner": "scanner-primary", "fingerprint": "cd33e102bdca1d19", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eaa825f53685f278", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/chat-storage.ts:599"}, "properties": {"repobilityId": "3c0aad42a8992592", "scanner": "scanner-primary", "fingerprint": "eaa825f53685f278", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9f1a370df5bc321c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/use-is-enterprise-build.ts:20"}, "properties": {"repobilityId": "78e80b432092e052", "scanner": "scanner-primary", "fingerprint": "9f1a370df5bc321c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b812d0e242636bdd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/use-enterprise-pipes.ts:109"}, "properties": {"repobilityId": "26450006e4fe51aa", "scanner": "scanner-primary", "fingerprint": "b812d0e242636bdd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-89801bd36b4214ce", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/use-audio-playback.tsx:236"}, "properties": {"repobilityId": "aec72c5ddf8fae4e", "scanner": "scanner-primary", "fingerprint": "89801bd36b4214ce", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-be89f5e9d77e95ef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/use-health-check.tsx:217"}, "properties": {"repobilityId": "6b6493e7ab968503", "scanner": "scanner-primary", "fingerprint": "be89f5e9d77e95ef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-336e6831a588ed2c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/use-permission-monitor.tsx:45"}, "properties": {"repobilityId": "52239fb041d9c589", "scanner": "scanner-primary", "fingerprint": "336e6831a588ed2c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e98b2db8ec1ad403", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/use-settings.tsx:1350"}, "properties": {"repobilityId": "3f9b718592889d5a", "scanner": "scanner-primary", "fingerprint": "e98b2db8ec1ad403", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6b60701c10e361c4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/use-enterprise-policy.ts:247"}, "properties": {"repobilityId": "c8342852c76bf87f", "scanner": "scanner-primary", "fingerprint": "6b60701c10e361c4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-509a1c6962b79e0d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/__tests__/timeline-store-logic.test.ts:194"}, "properties": {"repobilityId": "59499ffe1d0d3764", "scanner": "scanner-primary", "fingerprint": "509a1c6962b79e0d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7beba406a302f6a7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/__tests__/server-push-old-frames.test.ts:113"}, "properties": {"repobilityId": "1a0d1d72f2e0c752", "scanner": "scanner-primary", "fingerprint": "7beba406a302f6a7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-04f8673f756f8e5d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/hooks/__tests__/server-poll-logic.test.ts:190"}, "properties": {"repobilityId": "154865dee4a8eafc", "scanner": "scanner-primary", "fingerprint": "04f8673f756f8e5d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-300ea9e0da56a9e5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/lib/actions/has-frames-date.ts:64"}, "properties": {"repobilityId": "c4695e58c2a0ba8d", "scanner": "scanner-primary", "fingerprint": "300ea9e0da56a9e5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1000c27676c12f97", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/wdio.conf.ts:63"}, "properties": {"repobilityId": "9f63d6cd50d5f074", "scanner": "scanner-primary", "fingerprint": "1000c27676c12f97", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ef50364a2a8ace53", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/tests/search-api.js:124"}, "properties": {"repobilityId": "c2852731f1333088", "scanner": "scanner-primary", "fingerprint": "ef50364a2a8ace53", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-81e867bfefc80c46", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/tests/window-overlay.js:78"}, "properties": {"repobilityId": "e5281e33e4a42e3e", "scanner": "scanner-primary", "fingerprint": "81e867bfefc80c46", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6c78f2e3050306da", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/tests/onboarding-flow.js:113"}, "properties": {"repobilityId": "a2f4b28cebeb55ae", "scanner": "scanner-primary", "fingerprint": "6c78f2e3050306da", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6b5baee0af565963", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/tests/timeline-performance.js:40"}, "properties": {"repobilityId": "0aa30e2b922a8502", "scanner": "scanner-primary", "fingerprint": "6b5baee0af565963", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-209ab5a5f736d567", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/tests/timeline-navigation.js:114"}, "properties": {"repobilityId": "8da478cef5fef4a8", "scanner": "scanner-primary", "fingerprint": "209ab5a5f736d567", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d6c2c6a59860cc70", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/tests/websocket-performance.js:41"}, "properties": {"repobilityId": "a7d7fa0af9eb84e9", "scanner": "scanner-primary", "fingerprint": "d6c2c6a59860cc70", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d780da38c780fffe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/tests/settings-persistence.js:179"}, "properties": {"repobilityId": "bdf80ceb98d77569", "scanner": "scanner-primary", "fingerprint": "d780da38c780fffe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-da6cdc344d25e053", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/tests/mcp-integration.js:65"}, "properties": {"repobilityId": "b3ed4d559ac5aaec", "scanner": "scanner-primary", "fingerprint": "da6cdc344d25e053", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ad4f8bf546d22983", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/tests/app-lifecycle.js:38"}, "properties": {"repobilityId": "bd714f2b07d1609a", "scanner": "scanner-primary", "fingerprint": "ad4f8bf546d22983", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a5e1d0733ee744a3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/scripts/generate-coverage-report.ts:840"}, "properties": {"repobilityId": "6b20b1275eb28dd7", "scanner": "scanner-primary", "fingerprint": "a5e1d0733ee744a3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f7d4ec58dae452a3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/helpers/screenshot-utils.ts:22"}, "properties": {"repobilityId": "25d164c009f77ffb", "scanner": "scanner-primary", "fingerprint": "f7d4ec58dae452a3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a3ff3002cfe8ff11", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/helpers/test-recorder.ts:41"}, "properties": {"repobilityId": "d7c97eafe424122a", "scanner": "scanner-primary", "fingerprint": "a3ff3002cfe8ff11", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fd956ad38aca442d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/mock-updates/updater-harness.ts:193"}, "properties": {"repobilityId": "3105e4267ccd6cf4", "scanner": "scanner-primary", "fingerprint": "fd956ad38aca442d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c391782f13fa3cd7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/specs/chat-streaming-performance.spec.ts:512"}, "properties": {"repobilityId": "1a099fb96e0d0e92", "scanner": "scanner-primary", "fingerprint": "c391782f13fa3cd7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1e1be53160c92522", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/specs/meeting-note-bottom-click.spec.ts:110"}, "properties": {"repobilityId": "500a3edd1f87dfc7", "scanner": "scanner-primary", "fingerprint": "1e1be53160c92522", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c2c0b82959115868", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/specs/pipes.spec.ts:67"}, "properties": {"repobilityId": "978553c95a550524", "scanner": "scanner-primary", "fingerprint": "c2c0b82959115868", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f2f3844984d8cd67", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/specs/zz-owned-browser-background-nav.spec.ts:560"}, "properties": {"repobilityId": "1d6efc018613c837", "scanner": "scanner-primary", "fingerprint": "f2f3844984d8cd67", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8c6be1fb57a76fea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/specs/macos-ui-performance.spec.ts:159"}, "properties": {"repobilityId": "217bbc008ffb82f8", "scanner": "scanner-primary", "fingerprint": "8c6be1fb57a76fea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ebe0fc8d449f9434", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/specs/chat-newchat-duplicate.spec.ts:222"}, "properties": {"repobilityId": "bbef7403a18a7896", "scanner": "scanner-primary", "fingerprint": "ebe0fc8d449f9434", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0770ce63ef02650a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/screenpipe-app-tauri/e2e/specs/chat-within-session-context-loss.spec.ts:206"}, "properties": {"repobilityId": "d91ae5ba622021fe", "scanner": "scanner-primary", "fingerprint": "0770ce63ef02650a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-974263c71823b214", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/cli/screenpipe/scripts/postinstall.js:96"}, "properties": {"repobilityId": "780ad30a8618541e", "scanner": "scanner-primary", "fingerprint": "974263c71823b214", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0f7c7a595936f715", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/cli/npm-e2e/cli.ts:13"}, "properties": {"repobilityId": "df5a79b13feb878d", "scanner": "scanner-primary", "fingerprint": "0f7c7a595936f715", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dd975db2941f0699", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/cli/npm-e2e/setup.ts:43"}, "properties": {"repobilityId": "5cf41a61005b0b26", "scanner": "scanner-primary", "fingerprint": "dd975db2941f0699", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1cceed59083cea2c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/cli/npm-e2e/runner.ts:18"}, "properties": {"repobilityId": "0486b5e91d2a7ad6", "scanner": "scanner-primary", "fingerprint": "1cceed59083cea2c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a6198966b6a0b7f1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/cli/npm-e2e/lib/stage.ts:195"}, "properties": {"repobilityId": "083ced79743e78c6", "scanner": "scanner-primary", "fingerprint": "a6198966b6a0b7f1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-efbc4c4eb8ba90e0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/browser-extension/src/worker.ts:133"}, "properties": {"repobilityId": "a43dff6833991d61", "scanner": "scanner-primary", "fingerprint": "efbc4c4eb8ba90e0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1f20fc69373cbcc4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/ai-gateway/src/index.ts:368"}, "properties": {"repobilityId": "900c3abfa444ba55", "scanner": "scanner-primary", "fingerprint": "1f20fc69373cbcc4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-26cae4e99b6e9b82", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/index.ts:43"}, "properties": {"repobilityId": "944b911214a5918c", "scanner": "scanner-primary", "fingerprint": "26cae4e99b6e9b82", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-80f92c28b3687f1b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/test/vertex-proxy.test.ts:25"}, "properties": {"repobilityId": "ddeffc4c9a69d937", "scanner": "scanner-primary", "fingerprint": "80f92c28b3687f1b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b140d2e1a8ce014d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/utils/auth.ts:15"}, "properties": {"repobilityId": "8917d14c2a8c4a43", "scanner": "scanner-primary", "fingerprint": "b140d2e1a8ce014d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f2b81d1651d92a0d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/ai-gateway/src/utils/subscription.ts:103"}, "properties": {"repobilityId": "650c724ffc2b92d7", "scanner": "scanner-primary", "fingerprint": "f2b81d1651d92a0d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-bc12fe01b74b127a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/utils/subscription.ts:65"}, "properties": {"repobilityId": "6cf3137df16e1978", "scanner": "scanner-primary", "fingerprint": "bc12fe01b74b127a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-85e8f396b7452ece", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/utils/voice-utils.ts:141"}, "properties": {"repobilityId": "3b867ace94c40bbe", "scanner": "scanner-primary", "fingerprint": "85e8f396b7452ece", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb0c2985557cdfd6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/providers/anthropic-proxy.ts:136"}, "properties": {"repobilityId": "2fc548db86411b1b", "scanner": "scanner-primary", "fingerprint": "cb0c2985557cdfd6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-669284929e428fe6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/providers/index.ts:35"}, "properties": {"repobilityId": "dc627ee53fb8d43c", "scanner": "scanner-primary", "fingerprint": "669284929e428fe6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6498afd2548551b6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/providers/gemini.ts:91"}, "properties": {"repobilityId": "08c56b4b1e269b3b", "scanner": "scanner-primary", "fingerprint": "6498afd2548551b6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-39b6c6f28afc2a8f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/providers/vertex.ts:620"}, "properties": {"repobilityId": "67ef9119721dc495", "scanner": "scanner-primary", "fingerprint": "39b6c6f28afc2a8f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e345447e882fedeb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-gateway/src/services/usage-tracker.ts:362"}, "properties": {"repobilityId": "def86b026e3e26fe", "scanner": "scanner-primary", "fingerprint": "e345447e882fedeb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-932048c83d642cc8", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/ai-gateway/src/handlers/voice-ws.ts:1"}, "properties": {"repobilityId": "ef2b6414107ca932", "scanner": "scanner-primary", "fingerprint": "932048c83d642cc8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-329ed1725cae7930", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/screenpipe-mcp/src/http-server.ts:384"}, "properties": {"repobilityId": "91d2a7ab25676747", "scanner": "scanner-primary", "fingerprint": "329ed1725cae7930", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b9afbd70218756b3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/e2e/local/tests.ts:41"}, "properties": {"repobilityId": "d67382c87aab257e", "scanner": "scanner-primary", "fingerprint": "b9afbd70218756b3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ba06a0147a077cb6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/e2e/local/cli.ts:51"}, "properties": {"repobilityId": "a73add8209f1b4b8", "scanner": "scanner-primary", "fingerprint": "ba06a0147a077cb6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f689682828571b5c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/e2e/local/tart.ts:42"}, "properties": {"repobilityId": "fce93f1deca2b4cf", "scanner": "scanner-primary", "fingerprint": "f689682828571b5c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d5856781f0b18085", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/e2e/src/runner.ts:57"}, "properties": {"repobilityId": "8f1a4dca79607180", "scanner": "scanner-primary", "fingerprint": "d5856781f0b18085", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6785bd7789fe7d19", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/e2e/src/suites/api.ts:147"}, "properties": {"repobilityId": "f093cf7eb7895e05", "scanner": "scanner-primary", "fingerprint": "6785bd7789fe7d19", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-42104205717d56ad", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/e2e/src/suites/cli.ts:126"}, "properties": {"repobilityId": "f38d509458645868", "scanner": "scanner-primary", "fingerprint": "42104205717d56ad", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fbe789dc5d7acb45", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/e2e/src/suites/models.ts:83"}, "properties": {"repobilityId": "367749697799c009", "scanner": "scanner-primary", "fingerprint": "fbe789dc5d7acb45", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-90cf2b111537073a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/test-app-launch.ts:76"}, "properties": {"repobilityId": "8c50cbcc97b75825", "scanner": "scanner-primary", "fingerprint": "90cf2b111537073a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-586ad3083d90193b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/test-lifecycle.ts:87"}, "properties": {"repobilityId": "16a8d4ae35156c5d", "scanner": "scanner-primary", "fingerprint": "586ad3083d90193b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e0d3f8301cf3688c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/run-all.ts:52"}, "properties": {"repobilityId": "23a19eb1a256b96c", "scanner": "scanner-primary", "fingerprint": "e0d3f8301cf3688c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-979a1b60ed58582a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/test-main-window.ts:88"}, "properties": {"repobilityId": "c2a8d9edea6074da", "scanner": "scanner-primary", "fingerprint": "979a1b60ed58582a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2560fbfff40f9127", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/lib.ts:144"}, "properties": {"repobilityId": "ab8932b29b8ee070", "scanner": "scanner-primary", "fingerprint": "2560fbfff40f9127", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3b290f294430e559", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/test-windows.ts:17"}, "properties": {"repobilityId": "1ae752c3e175e532", "scanner": "scanner-primary", "fingerprint": "3b290f294430e559", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a6f7c1c9e1a0cc7f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/test-recording.ts:22"}, "properties": {"repobilityId": "ab6b86abbb79c93d", "scanner": "scanner-primary", "fingerprint": "a6f7c1c9e1a0cc7f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-062b4f4dbdbe1f22", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/test-tray.ts:34"}, "properties": {"repobilityId": "c8a1beefb2a6652a", "scanner": "scanner-primary", "fingerprint": "062b4f4dbdbe1f22", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b1c8e048c79558da", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/test-capture-fidelity.ts:61"}, "properties": {"repobilityId": "597af45861ce3994", "scanner": "scanner-primary", "fingerprint": "b1c8e048c79558da", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eafd1bb43b541cda", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .github/scripts/e2e/test-permissions.ts:58"}, "properties": {"repobilityId": "6e72197113ff7755", "scanner": "scanner-primary", "fingerprint": "eafd1bb43b541cda", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-04f48b2366a90e92", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 coverage/scripts/generate-core-engine-coverage-report.ts:941"}, "properties": {"repobilityId": "beb47b66c900c18e", "scanner": "scanner-primary", "fingerprint": "04f48b2366a90e92", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-845a6cc043442acb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 coverage/scripts/generate-unified-coverage-report.ts:153"}, "properties": {"repobilityId": "0124bb9f5102c415", "scanner": "scanner-primary", "fingerprint": "845a6cc043442acb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0155d0bc9e838e31", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 ee/sdk/examples/electron-app/main.js:154"}, "properties": {"repobilityId": "7706a9ec678eab70", "scanner": "scanner-primary", "fingerprint": "0155d0bc9e838e31", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fdce9c108bbbe4bf", "level": "warning", "message": {"text": "Dockerfile runs as root: docker/linux-test/Dockerfile"}, "properties": {"repobilityId": "d2799e426a8febd2", "scanner": "scanner-primary", "fingerprint": "fdce9c108bbbe4bf", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-bd6369c43c8f48c5", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: ubuntu:24.04"}, "properties": {"repobilityId": "fd25e38c51d81051", "scanner": "scanner-primary", "fingerprint": "bd6369c43c8f48c5", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/linux-test/Dockerfile"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-fdb1dd2d129eb36f", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: mcr.microsoft.com/devcontainers/base:ubuntu-22.04"}, "properties": {"repobilityId": "eb0ce52681fe7661", "scanner": "scanner-primary", "fingerprint": "fdb1dd2d129eb36f", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".devcontainer/Dockerfile"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-42222223b4a3450e", "level": "error", "message": {"text": "Dockerfile pipes a remote installer into a shell"}, "properties": {"repobilityId": "632109b6bc91ce06", "scanner": "scanner-primary", "fingerprint": "42222223b4a3450e", "layer": "hardware", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "docker", "remote-installer"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".devcontainer/Dockerfile"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-42222223b4a3450e", "level": "error", "message": {"text": "Dockerfile pipes a remote installer into a shell"}, "properties": {"repobilityId": "13fa1e1d2d836d4d", "scanner": "scanner-primary", "fingerprint": "42222223b4a3450e", "layer": "hardware", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "docker", "remote-installer"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".devcontainer/Dockerfile"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-d153031f96d3e8bc", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/screenpipe-app-tauri/components/rewind/mermaid-diagram.tsx:192"}, "properties": {"repobilityId": "ba47d87e5bd92d23", "scanner": "scanner-primary", "fingerprint": "d153031f96d3e8bc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/screenpipe-app-tauri/components/rewind/mermaid-diagram.tsx"}, "region": {"startLine": 192}}}]}, {"ruleId": "scanner-56324d32747343a6", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/screenpipe-app-tauri/app/layout.tsx:336"}, "properties": {"repobilityId": "96b07f5eb1a7a8d3", "scanner": "scanner-primary", "fingerprint": "56324d32747343a6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/screenpipe-app-tauri/app/layout.tsx"}, "region": {"startLine": 336}}}]}, {"ruleId": "scanner-93d00a8906323311", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in apps/screenpipe-app-tauri/lib/api.ts:44"}, "properties": {"repobilityId": "5662089261dc0fde", "scanner": "scanner-primary", "fingerprint": "93d00a8906323311", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/screenpipe-app-tauri/lib/api.ts"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-5b5a9953fc0585e5", "level": "error", "message": {"text": "Possible secret in apps/screenpipe-app-tauri/src-tauri/src/main.rs"}, "properties": {"repobilityId": "857f8307b790506d", "scanner": "scanner-primary", "fingerprint": "5b5a9953fc0585e5", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/screenpipe-app-tauri/src-tauri/src/main.rs"}, "region": {"startLine": 1108}}}]}, {"ruleId": "scanner-81d14d71e5b285e9", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in apps/screenpipe-app-tauri/e2e/helpers/test-recorder.ts:5"}, "properties": {"repobilityId": "493ca037ebda5045", "scanner": "scanner-primary", "fingerprint": "81d14d71e5b285e9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/screenpipe-app-tauri/e2e/helpers/test-recorder.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-8477edad2b059b0f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in apps/screenpipe-app-tauri/e2e/helpers/app-launcher.ts:5"}, "properties": {"repobilityId": "6d42d11bcdaa2845", "scanner": "scanner-primary", "fingerprint": "8477edad2b059b0f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/screenpipe-app-tauri/e2e/helpers/app-launcher.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-b4a1dbe3fba88383", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in apps/screenpipe-app-tauri/e2e/helpers/seed-capture-activity.ts:5"}, "properties": {"repobilityId": "8faca3bfb6c5b361", "scanner": "scanner-primary", "fingerprint": "b4a1dbe3fba88383", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/screenpipe-app-tauri/e2e/helpers/seed-capture-activity.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-c92704d6cbeea348", "level": "error", "message": {"text": "Possible secret in apps/screenpipe-app-tauri/e2e/mock-updates/updater-harness.ts"}, "properties": {"repobilityId": "7eca5f4247401c2b", "scanner": "scanner-primary", "fingerprint": "c92704d6cbeea348", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/screenpipe-app-tauri/e2e/mock-updates/updater-harness.ts"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-02094745b2948d8e", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in apps/screenpipe-app-tauri/e2e/mock-updates/updater-harness.ts:216"}, "properties": {"repobilityId": "dcc17f9c55266bfd", "scanner": "scanner-primary", "fingerprint": "02094745b2948d8e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/screenpipe-app-tauri/e2e/mock-updates/updater-harness.ts"}, "region": {"startLine": 216}}}]}, {"ruleId": "scanner-a4b793e2628c4c70", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in apps/screenpipe-app-tauri/e2e/specs/windows-core-recording.spec.ts:21"}, "properties": {"repobilityId": "6958e5b67a2666be", "scanner": "scanner-primary", "fingerprint": "a4b793e2628c4c70", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/screenpipe-app-tauri/e2e/specs/windows-core-recording.spec.ts"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-a55f3bb0c96d1ccd", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in apps/screenpipe-app-tauri/e2e/specs/chat-streaming-performance.spec.ts:16"}, "properties": {"repobilityId": "0bd98ab938a5759b", "scanner": "scanner-primary", "fingerprint": "a55f3bb0c96d1ccd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/screenpipe-app-tauri/e2e/specs/chat-streaming-performance.spec.ts"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-f5d772ba120ff371", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in apps/screenpipe-app-tauri/e2e/specs/app-lifecycle.spec.ts:91"}, "properties": {"repobilityId": "f4c861a832635fb0", "scanner": "scanner-primary", "fingerprint": "f5d772ba120ff371", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/screenpipe-app-tauri/e2e/specs/app-lifecycle.spec.ts"}, "region": {"startLine": 91}}}]}, {"ruleId": "scanner-84b93640997b218b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in apps/screenpipe-app-tauri/e2e/specs/windows-system-integration.spec.ts:13"}, "properties": {"repobilityId": "787322c8b033e1f0", "scanner": "scanner-primary", "fingerprint": "84b93640997b218b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/screenpipe-app-tauri/e2e/specs/windows-system-integration.spec.ts"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-a7cfed6d4167a27b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in crates/screenpipe-core/assets/extensions/sub-agent.ts:69"}, "properties": {"repobilityId": "50d426f8ad57f1b0", "scanner": "scanner-primary", "fingerprint": "a7cfed6d4167a27b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "crates/screenpipe-core/assets/extensions/sub-agent.ts"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-16d11ac97fbebdba", "level": "error", "message": {"text": "Possible secret in crates/screenpipe-core/src/pii_removal.rs"}, "properties": {"repobilityId": "00f73580adefc1a0", "scanner": "scanner-primary", "fingerprint": "16d11ac97fbebdba", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "crates/screenpipe-core/src/pii_removal.rs"}, "region": {"startLine": 615}}}]}, {"ruleId": "scanner-16d11ac97fbebdba", "level": "error", "message": {"text": "Possible secret in crates/screenpipe-core/src/pii_removal.rs"}, "properties": {"repobilityId": "00f73580adefc1a0", "scanner": "scanner-primary", "fingerprint": "16d11ac97fbebdba", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "crates/screenpipe-core/src/pii_removal.rs"}, "region": {"startLine": 631}}}]}, {"ruleId": "scanner-16d11ac97fbebdba", "level": "error", "message": {"text": "Possible secret in crates/screenpipe-core/src/pii_removal.rs"}, "properties": {"repobilityId": "00f73580adefc1a0", "scanner": "scanner-primary", "fingerprint": "16d11ac97fbebdba", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "crates/screenpipe-core/src/pii_removal.rs"}, "region": {"startLine": 650}}}]}, {"ruleId": "scanner-21476205c7a018d4", "level": "error", "message": {"text": "Possible secret in crates/screenpipe-core/src/sync/keys.rs"}, "properties": {"repobilityId": "e04c2dea9653e4b5", "scanner": "scanner-primary", "fingerprint": "21476205c7a018d4", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "crates/screenpipe-core/src/sync/keys.rs"}, "region": {"startLine": 271}}}]}, {"ruleId": "scanner-21476205c7a018d4", "level": "error", "message": {"text": "Possible secret in crates/screenpipe-core/src/sync/keys.rs"}, "properties": {"repobilityId": "e04c2dea9653e4b5", "scanner": "scanner-primary", "fingerprint": "21476205c7a018d4", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "crates/screenpipe-core/src/sync/keys.rs"}, "region": {"startLine": 272}}}]}, {"ruleId": "scanner-db254ef01e345648", "level": "error", "message": {"text": "Possible secret in crates/screenpipe-redact/src/pipeline.rs"}, "properties": {"repobilityId": "b6b5f6246caa881f", "scanner": "scanner-primary", "fingerprint": "db254ef01e345648", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "crates/screenpipe-redact/src/pipeline.rs"}, "region": {"startLine": 381}}}]}, {"ruleId": "scanner-2b57be74218f0c28", "level": "error", "message": {"text": "Possible secret in packages/cli/screenpipe/scripts/postinstall.js"}, "properties": {"repobilityId": "987956781f8a7f27", "scanner": "scanner-primary", "fingerprint": "2b57be74218f0c28", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/cli/screenpipe/scripts/postinstall.js"}, "region": {"startLine": 70}}}]}, {"ruleId": "scanner-64669f312919aea4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/cli/screenpipe/scripts/postinstall.js:6"}, "properties": {"repobilityId": "6c6a0e47a43e862a", "scanner": "scanner-primary", "fingerprint": "64669f312919aea4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/cli/screenpipe/scripts/postinstall.js"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-7902a28b9e4c7dc0", "level": "error", "message": {"text": "Possible secret in packages/cli/screenpipe/scripts/postinstall.sh"}, "properties": {"repobilityId": "cf16ed912eb47f40", "scanner": "scanner-primary", "fingerprint": "7902a28b9e4c7dc0", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/cli/screenpipe/scripts/postinstall.sh"}, "region": {"startLine": 167}}}]}, {"ruleId": "scanner-3fb8f07523ab8afb", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/cli/screenpipe/lib/cli.js:11"}, "properties": {"repobilityId": "219cbfb1f6744788", "scanner": "scanner-primary", "fingerprint": "3fb8f07523ab8afb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/cli/screenpipe/lib/cli.js"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-3bf6161790482120", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/cli/screenpipe/lib/index.js:5"}, "properties": {"repobilityId": "5d2cbbeae599f762", "scanner": "scanner-primary", "fingerprint": "3bf6161790482120", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/cli/screenpipe/lib/index.js"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-fbbb1ba86bb3fac3", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/cli/npm-e2e/setup.ts:5"}, "properties": {"repobilityId": "733147f73db41d02", "scanner": "scanner-primary", "fingerprint": "fbbb1ba86bb3fac3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/cli/npm-e2e/setup.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-dba819b6246d25e0", "level": "error", "message": {"text": "Possible secret in packages/cli/npm-e2e/lib/registry.ts"}, "properties": {"repobilityId": "00c13785ae47bc5f", "scanner": "scanner-primary", "fingerprint": "dba819b6246d25e0", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/cli/npm-e2e/lib/registry.ts"}, "region": {"startLine": 77}}}]}, {"ruleId": "scanner-e013c5e7322363b1", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/cli/npm-e2e/lib/registry.ts:5"}, "properties": {"repobilityId": "e0156d34336d9422", "scanner": "scanner-primary", "fingerprint": "e013c5e7322363b1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/cli/npm-e2e/lib/registry.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-17d36140cb8ce7e7", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/cli/npm-e2e/lib/utils.ts:5"}, "properties": {"repobilityId": "8fd188ee1765e88a", "scanner": "scanner-primary", "fingerprint": "17d36140cb8ce7e7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/cli/npm-e2e/lib/utils.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-4b77adce6f10c5cb", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/cli/npm-e2e/lib/process.ts:5"}, "properties": {"repobilityId": "f7f42e135b37d9aa", "scanner": "scanner-primary", "fingerprint": "4b77adce6f10c5cb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/cli/npm-e2e/lib/process.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-de639b94655dbab0", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in packages/ai-gateway/src/utils/cors.ts:7"}, "properties": {"repobilityId": "ef87076d5c631c52", "scanner": "scanner-primary", "fingerprint": "de639b94655dbab0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/ai-gateway/src/utils/cors.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-59fb07693a977c66", "level": "error", "message": {"text": "Insecure pattern 'private_key_in_repo' in packages/ai-gateway/src/providers/vertex.ts:97"}, "properties": {"repobilityId": "1fcc4e15d863d3c1", "scanner": "scanner-primary", "fingerprint": "59fb07693a977c66", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["owasp", "private_key_in_repo"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/ai-gateway/src/providers/vertex.ts"}, "region": {"startLine": 97}}}]}, {"ruleId": "scanner-cc753a63bd8452f3", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in packages/ai-gateway/src/handlers/tinfoil-proxy.ts:158"}, "properties": {"repobilityId": "0018bec71eeac324", "scanner": "scanner-primary", "fingerprint": "cc753a63bd8452f3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/ai-gateway/src/handlers/tinfoil-proxy.ts"}, "region": {"startLine": 158}}}]}, {"ruleId": "scanner-0169a724ea151083", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in packages/screenpipe-mcp/ui/search.html:408"}, "properties": {"repobilityId": "4878000e8b1662da", "scanner": "scanner-primary", "fingerprint": "0169a724ea151083", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/screenpipe-mcp/ui/search.html"}, "region": {"startLine": 408}}}]}, {"ruleId": "scanner-6cf81921292593d3", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/screenpipe-mcp/src/index.ts:61"}, "properties": {"repobilityId": "b866bb0c99df73b2", "scanner": "scanner-primary", "fingerprint": "6cf81921292593d3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/screenpipe-mcp/src/index.ts"}, "region": {"startLine": 61}}}]}, {"ruleId": "scanner-8ce30e0f0024c5c9", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in packages/screenpipe-mcp/src/http-server.ts:303"}, "properties": {"repobilityId": "d6f5b7d22ef03d7b", "scanner": "scanner-primary", "fingerprint": "8ce30e0f0024c5c9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/screenpipe-mcp/src/http-server.ts"}, "region": {"startLine": 303}}}]}, {"ruleId": "scanner-f2cda0d5447b44d1", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in packages/e2e/src/suites/cli.ts:38"}, "properties": {"repobilityId": "74152875b3342a86", "scanner": "scanner-primary", "fingerprint": "f2cda0d5447b44d1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/e2e/src/suites/cli.ts"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-f4f3fecdd80f2948", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in packages/e2e/src/suites/models.ts:90"}, "properties": {"repobilityId": "4a6d2ce50c601eda", "scanner": "scanner-primary", "fingerprint": "f4f3fecdd80f2948", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/e2e/src/suites/models.ts"}, "region": {"startLine": 90}}}]}, {"ruleId": "scanner-340ecd6000724f58", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in ee/sdk/index.js:20"}, "properties": {"repobilityId": "d92dc273bcc194ff", "scanner": "scanner-primary", "fingerprint": "340ecd6000724f58", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ee/sdk/index.js"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-9f57eed3e2bd7044", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in ee/sdk/__test__/_helpers.mjs:16"}, "properties": {"repobilityId": "2ea0c2bf2d3cecb9", "scanner": "scanner-primary", "fingerprint": "9f57eed3e2bd7044", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ee/sdk/__test__/_helpers.mjs"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-730e808d143b5aaa", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in ee/sdk/__test__/node_json_bridge.test.mjs:7"}, "properties": {"repobilityId": "b714e51bef7dc339", "scanner": "scanner-primary", "fingerprint": "730e808d143b5aaa", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ee/sdk/__test__/node_json_bridge.test.mjs"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-a5215bbfcbe57333", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in ee/sdk/__test__/bridge_telemetry_env.test.mjs:13"}, "properties": {"repobilityId": "461871e3b6e1d0f9", "scanner": "scanner-primary", "fingerprint": "a5215bbfcbe57333", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ee/sdk/__test__/bridge_telemetry_env.test.mjs"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-566870d5ebb8fcda", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "18f6dc382c0f0147", "scanner": "scanner-primary", "fingerprint": "566870d5ebb8fcda", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/close-inactive.yml"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-1f78ab7b0ff03379", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7579d0fae1cba023", "scanner": "scanner-primary", "fingerprint": "1f78ab7b0ff03379", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sync-skills.yml"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-1f78ab7b0ff03379", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "eb921abd730ad610", "scanner": "scanner-primary", "fingerprint": "1f78ab7b0ff03379", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sync-skills.yml"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-7ff1dffa3f6fdad8", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "0f07bebb3ca59172", "scanner": "scanner-primary", "fingerprint": "7ff1dffa3f6fdad8", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sync-skills.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-67bfbcaf0a26c658", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7bb8d8aa3ec0d843", "scanner": "scanner-primary", "fingerprint": "67bfbcaf0a26c658", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/eval-diarization.yml"}, "region": {"startLine": 133}}}]}, {"ruleId": "scanner-67bfbcaf0a26c658", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7bb8d8aa3ec0d843", "scanner": "scanner-primary", "fingerprint": "67bfbcaf0a26c658", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/eval-diarization.yml"}, "region": {"startLine": 144}}}]}, {"ruleId": "scanner-67bfbcaf0a26c658", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "58474590b706dba8", "scanner": "scanner-primary", "fingerprint": "67bfbcaf0a26c658", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/eval-diarization.yml"}, "region": {"startLine": 440}}}]}, {"ruleId": "scanner-96129953304c7070", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0c95c93e9b0a080c", "scanner": "scanner-primary", "fingerprint": "96129953304c7070", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/eval-meeting-detection.yml"}, "region": {"startLine": 157}}}]}, {"ruleId": "scanner-568fa5bbd5d0538a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3f034dfcdbb2fbdd", "scanner": "scanner-primary", "fingerprint": "568fa5bbd5d0538a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sdk.yml"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-568fa5bbd5d0538a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "eccf04244b6aca96", "scanner": "scanner-primary", "fingerprint": "568fa5bbd5d0538a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sdk.yml"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-568fa5bbd5d0538a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3f034dfcdbb2fbdd", "scanner": "scanner-primary", "fingerprint": "568fa5bbd5d0538a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sdk.yml"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-568fa5bbd5d0538a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "eccf04244b6aca96", "scanner": "scanner-primary", "fingerprint": "568fa5bbd5d0538a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sdk.yml"}, "region": {"startLine": 89}}}]}, {"ruleId": "scanner-568fa5bbd5d0538a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0001a57513d76059", "scanner": "scanner-primary", "fingerprint": "568fa5bbd5d0538a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sdk.yml"}, "region": {"startLine": 99}}}]}, {"ruleId": "scanner-568fa5bbd5d0538a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c37e11d09aae598b", "scanner": "scanner-primary", "fingerprint": "568fa5bbd5d0538a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sdk.yml"}, "region": {"startLine": 145}}}]}, {"ruleId": "scanner-49c82d38af0aedbe", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "74106378af8df4e3", "scanner": "scanner-primary", "fingerprint": "49c82d38af0aedbe", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e-macos.yml"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-49c82d38af0aedbe", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1d67e9604c481d1f", "scanner": "scanner-primary", "fingerprint": "49c82d38af0aedbe", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e-macos.yml"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-49c82d38af0aedbe", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "543b6773bd73ac40", "scanner": "scanner-primary", "fingerprint": "49c82d38af0aedbe", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e-macos.yml"}, "region": {"startLine": 80}}}]}, {"ruleId": "scanner-49c82d38af0aedbe", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1580c8f1e638ce05", "scanner": "scanner-primary", "fingerprint": "49c82d38af0aedbe", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e-macos.yml"}, "region": {"startLine": 97}}}]}, {"ruleId": "scanner-912a975f44e75ab6", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2fe1f137ef73c233", "scanner": "scanner-primary", "fingerprint": "912a975f44e75ab6", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-app.yml"}, "region": {"startLine": 257}}}]}, {"ruleId": "scanner-912a975f44e75ab6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "306b3d8c6933d947", "scanner": "scanner-primary", "fingerprint": "912a975f44e75ab6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-app.yml"}, "region": {"startLine": 262}}}]}, {"ruleId": "scanner-912a975f44e75ab6", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1004468347bf87fd", "scanner": "scanner-primary", "fingerprint": "912a975f44e75ab6", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-app.yml"}, "region": {"startLine": 268}}}]}, {"ruleId": "scanner-912a975f44e75ab6", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0b7b9e7e52a4107f", "scanner": "scanner-primary", "fingerprint": "912a975f44e75ab6", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-app.yml"}, "region": {"startLine": 308}}}]}, {"ruleId": "scanner-912a975f44e75ab6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2dbb7fb334dea941", "scanner": "scanner-primary", "fingerprint": "912a975f44e75ab6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-app.yml"}, "region": {"startLine": 325}}}]}, {"ruleId": "scanner-912a975f44e75ab6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2dbb7fb334dea941", "scanner": "scanner-primary", "fingerprint": "912a975f44e75ab6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-app.yml"}, "region": {"startLine": 342}}}]}, {"ruleId": "scanner-912a975f44e75ab6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2dbb7fb334dea941", "scanner": "scanner-primary", "fingerprint": "912a975f44e75ab6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-app.yml"}, "region": {"startLine": 355}}}]}, {"ruleId": "scanner-912a975f44e75ab6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2dbb7fb334dea941", "scanner": "scanner-primary", "fingerprint": "912a975f44e75ab6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-app.yml"}, "region": {"startLine": 373}}}]}, {"ruleId": "scanner-912a975f44e75ab6", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "522aac50a0f2cdb1", "scanner": "scanner-primary", "fingerprint": "912a975f44e75ab6", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-app.yml"}, "region": {"startLine": 453}}}]}, {"ruleId": "scanner-912a975f44e75ab6", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5c836dd650ee026f", "scanner": "scanner-primary", "fingerprint": "912a975f44e75ab6", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-app.yml"}, "region": {"startLine": 1680}}}]}, {"ruleId": "scanner-354b70e1d6b24e71", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "ab5e00559c58e4d7", "scanner": "scanner-primary", "fingerprint": "354b70e1d6b24e71", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-app.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-465455ca2e6355c1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "393cb992b0455433", "scanner": "scanner-primary", "fingerprint": "465455ca2e6355c1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/windows-integration-test.yml"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-465455ca2e6355c1", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "337422d912b088b8", "scanner": "scanner-primary", "fingerprint": "465455ca2e6355c1", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/windows-integration-test.yml"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-465455ca2e6355c1", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "dfcd917747c75e81", "scanner": "scanner-primary", "fingerprint": "465455ca2e6355c1", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/windows-integration-test.yml"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-465455ca2e6355c1", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1615bbf8c22c8f41", "scanner": "scanner-primary", "fingerprint": "465455ca2e6355c1", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/windows-integration-test.yml"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-465455ca2e6355c1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8237302b3c0456c3", "scanner": "scanner-primary", "fingerprint": "465455ca2e6355c1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/windows-integration-test.yml"}, "region": {"startLine": 255}}}]}, {"ruleId": "scanner-465455ca2e6355c1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8237302b3c0456c3", "scanner": "scanner-primary", "fingerprint": "465455ca2e6355c1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/windows-integration-test.yml"}, "region": {"startLine": 265}}}]}, {"ruleId": "scanner-07a50f6aa8e75256", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ca2870f159be64f9", "scanner": "scanner-primary", "fingerprint": "07a50f6aa8e75256", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-enterprise.yml"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-07a50f6aa8e75256", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c28b120df52f691d", "scanner": "scanner-primary", "fingerprint": "07a50f6aa8e75256", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-enterprise.yml"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-07a50f6aa8e75256", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "47648628d0d4552b", "scanner": "scanner-primary", "fingerprint": "07a50f6aa8e75256", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-enterprise.yml"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-07a50f6aa8e75256", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "47001f7c1cf80e9e", "scanner": "scanner-primary", "fingerprint": "07a50f6aa8e75256", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-enterprise.yml"}, "region": {"startLine": 77}}}]}, {"ruleId": "scanner-07a50f6aa8e75256", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e135fba3b4b53244", "scanner": "scanner-primary", "fingerprint": "07a50f6aa8e75256", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-enterprise.yml"}, "region": {"startLine": 90}}}]}, {"ruleId": "scanner-07a50f6aa8e75256", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ad784fcfce56d077", "scanner": "scanner-primary", "fingerprint": "07a50f6aa8e75256", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-enterprise.yml"}, "region": {"startLine": 113}}}]}, {"ruleId": "scanner-07a50f6aa8e75256", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3ba371ebed32fef6", "scanner": "scanner-primary", "fingerprint": "07a50f6aa8e75256", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-enterprise.yml"}, "region": {"startLine": 186}}}]}, {"ruleId": "scanner-07a50f6aa8e75256", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3d066dadb5c95f88", "scanner": "scanner-primary", "fingerprint": "07a50f6aa8e75256", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-enterprise.yml"}, "region": {"startLine": 297}}}]}, {"ruleId": "scanner-07a50f6aa8e75256", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ca2870f159be64f9", "scanner": "scanner-primary", "fingerprint": "07a50f6aa8e75256", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-enterprise.yml"}, "region": {"startLine": 311}}}]}, {"ruleId": "scanner-07a50f6aa8e75256", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c28b120df52f691d", "scanner": "scanner-primary", "fingerprint": "07a50f6aa8e75256", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-enterprise.yml"}, "region": {"startLine": 316}}}]}, {"ruleId": "scanner-07a50f6aa8e75256", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "47001f7c1cf80e9e", "scanner": "scanner-primary", "fingerprint": "07a50f6aa8e75256", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-enterprise.yml"}, "region": {"startLine": 321}}}]}, {"ruleId": "scanner-07a50f6aa8e75256", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e135fba3b4b53244", "scanner": "scanner-primary", "fingerprint": "07a50f6aa8e75256", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-enterprise.yml"}, "region": {"startLine": 333}}}]}, {"ruleId": "scanner-07a50f6aa8e75256", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3d066dadb5c95f88", "scanner": "scanner-primary", "fingerprint": "07a50f6aa8e75256", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-enterprise.yml"}, "region": {"startLine": 770}}}]}, {"ruleId": "scanner-46e352293e8ce6a6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d50de047ed74b07c", "scanner": "scanner-primary", "fingerprint": "46e352293e8ce6a6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-mcp.yml"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-46e352293e8ce6a6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6dbca255640a0c74", "scanner": "scanner-primary", "fingerprint": "46e352293e8ce6a6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-mcp.yml"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-b52cfa796d82597d", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "1648a70711082f33", "scanner": "scanner-primary", "fingerprint": "b52cfa796d82597d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-mcp.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7fc0694880fc8c4d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f627e190e1cbafa3", "scanner": "scanner-primary", "fingerprint": "7fc0694880fc8c4d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test-cli-npm-e2e.yml"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-7fc0694880fc8c4d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2ecb6393353817cc", "scanner": "scanner-primary", "fingerprint": "7fc0694880fc8c4d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test-cli-npm-e2e.yml"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-7fc0694880fc8c4d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f1d73ded92ef7ce5", "scanner": "scanner-primary", "fingerprint": "7fc0694880fc8c4d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test-cli-npm-e2e.yml"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-7fc0694880fc8c4d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e65344396301bb34", "scanner": "scanner-primary", "fingerprint": "7fc0694880fc8c4d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test-cli-npm-e2e.yml"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "08eb656aeb701f41", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 89}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "08eb656aeb701f41", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 99}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "dcb6504096fc20e7", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 107}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "72d75afc3fce109d", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 112}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "08eb656aeb701f41", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 266}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "dcb6504096fc20e7", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 292}}}]}, {"ruleId": "scanner-6262b70a2b56b05d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d571698b56547933", "scanner": "scanner-primary", "fingerprint": "6262b70a2b56b05d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-browser-extension.yml"}, "region": {"startLine": 98}}}]}, {"ruleId": "scanner-d1b928f8f8d158f1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b9e62e7c5defbc51", "scanner": "scanner-primary", "fingerprint": "d1b928f8f8d158f1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/gitleaks.yml"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-2822b3151892b628", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "2c0c768634bdb60b", "scanner": "scanner-primary", "fingerprint": "2822b3151892b628", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/gitleaks.yml"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-470476e3e577494b", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "97391752aa08a25f", "scanner": "scanner-primary", "fingerprint": "470476e3e577494b", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sdk-release.yml"}, "region": {"startLine": 127}}}]}, {"ruleId": "scanner-470476e3e577494b", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6f275e3416f9fc09", "scanner": "scanner-primary", "fingerprint": "470476e3e577494b", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sdk-release.yml"}, "region": {"startLine": 131}}}]}, {"ruleId": "scanner-470476e3e577494b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8ac2eb5a0224f6c0", "scanner": "scanner-primary", "fingerprint": "470476e3e577494b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sdk-release.yml"}, "region": {"startLine": 141}}}]}, {"ruleId": "scanner-470476e3e577494b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "33403c6099a91a0e", "scanner": "scanner-primary", "fingerprint": "470476e3e577494b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sdk-release.yml"}, "region": {"startLine": 167}}}]}, {"ruleId": "scanner-7af18d03849c9bce", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "1ab29a2101f9a5eb", "scanner": "scanner-primary", "fingerprint": "7af18d03849c9bce", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sdk-release.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-461256c4f9cfd310", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3e019ed1703480b4", "scanner": "scanner-primary", "fingerprint": "461256c4f9cfd310", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-cli.yml"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-461256c4f9cfd310", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d4cf4d65392c63ad", "scanner": "scanner-primary", "fingerprint": "461256c4f9cfd310", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-cli.yml"}, "region": {"startLine": 72}}}]}, {"ruleId": "scanner-461256c4f9cfd310", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2d73617f9fd68674", "scanner": "scanner-primary", "fingerprint": "461256c4f9cfd310", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-cli.yml"}, "region": {"startLine": 92}}}]}, {"ruleId": "scanner-461256c4f9cfd310", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ca520d5e3579dfba", "scanner": "scanner-primary", "fingerprint": "461256c4f9cfd310", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-cli.yml"}, "region": {"startLine": 243}}}]}, {"ruleId": "scanner-461256c4f9cfd310", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3e019ed1703480b4", "scanner": "scanner-primary", "fingerprint": "461256c4f9cfd310", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-cli.yml"}, "region": {"startLine": 254}}}]}, {"ruleId": "scanner-461256c4f9cfd310", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ef9ec94a1015f29d", "scanner": "scanner-primary", "fingerprint": "461256c4f9cfd310", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-cli.yml"}, "region": {"startLine": 275}}}]}, {"ruleId": "scanner-461256c4f9cfd310", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd91f07777e3a808", "scanner": "scanner-primary", "fingerprint": "461256c4f9cfd310", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-cli.yml"}, "region": {"startLine": 322}}}]}, {"ruleId": "scanner-461256c4f9cfd310", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ca520d5e3579dfba", "scanner": "scanner-primary", "fingerprint": "461256c4f9cfd310", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-cli.yml"}, "region": {"startLine": 480}}}]}, {"ruleId": "scanner-461256c4f9cfd310", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3e019ed1703480b4", "scanner": "scanner-primary", "fingerprint": "461256c4f9cfd310", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-cli.yml"}, "region": {"startLine": 494}}}]}, {"ruleId": "scanner-461256c4f9cfd310", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e6a27bc33021ecb6", "scanner": "scanner-primary", "fingerprint": "461256c4f9cfd310", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-cli.yml"}, "region": {"startLine": 497}}}]}, {"ruleId": "scanner-461256c4f9cfd310", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ca520d5e3579dfba", "scanner": "scanner-primary", "fingerprint": "461256c4f9cfd310", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-cli.yml"}, "region": {"startLine": 598}}}]}, {"ruleId": "scanner-461256c4f9cfd310", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3e019ed1703480b4", "scanner": "scanner-primary", "fingerprint": "461256c4f9cfd310", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-cli.yml"}, "region": {"startLine": 608}}}]}, {"ruleId": "scanner-461256c4f9cfd310", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "979070c49cb9afe8", "scanner": "scanner-primary", "fingerprint": "461256c4f9cfd310", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-cli.yml"}, "region": {"startLine": 611}}}]}, {"ruleId": "scanner-461256c4f9cfd310", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "589dcd74e09af40d", "scanner": "scanner-primary", "fingerprint": "461256c4f9cfd310", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-cli.yml"}, "region": {"startLine": 629}}}]}, {"ruleId": "scanner-461256c4f9cfd310", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3e019ed1703480b4", "scanner": "scanner-primary", "fingerprint": "461256c4f9cfd310", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-cli.yml"}, "region": {"startLine": 763}}}]}, {"ruleId": "scanner-461256c4f9cfd310", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "589dcd74e09af40d", "scanner": "scanner-primary", "fingerprint": "461256c4f9cfd310", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-cli.yml"}, "region": {"startLine": 781}}}]}, {"ruleId": "scanner-347b199f557032b0", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "0010d41fe98dc5ef", "scanner": "scanner-primary", "fingerprint": "347b199f557032b0", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-cli.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a0710e568e82f9ff", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a311d5eeb3af6d29", "scanner": "scanner-primary", "fingerprint": "a0710e568e82f9ff", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/style.yml"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-1b2df3c68acf7f2b", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "8befeee4dfff49a9", "scanner": "scanner-primary", "fingerprint": "1b2df3c68acf7f2b", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/style.yml"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-a0710e568e82f9ff", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "68aee9377c95d470", "scanner": "scanner-primary", "fingerprint": "a0710e568e82f9ff", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/style.yml"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-6e737343dd91046d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a8d5886811c0d3b2", "scanner": "scanner-primary", "fingerprint": "6e737343dd91046d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/benchmark.yml"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-6e737343dd91046d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a8d5886811c0d3b2", "scanner": "scanner-primary", "fingerprint": "6e737343dd91046d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/benchmark.yml"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-6e737343dd91046d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a8d5886811c0d3b2", "scanner": "scanner-primary", "fingerprint": "6e737343dd91046d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/benchmark.yml"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-6e737343dd91046d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a8d5886811c0d3b2", "scanner": "scanner-primary", "fingerprint": "6e737343dd91046d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/benchmark.yml"}, "region": {"startLine": 100}}}]}, {"ruleId": "scanner-6e737343dd91046d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ecce0f348ef819ab", "scanner": "scanner-primary", "fingerprint": "6e737343dd91046d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/benchmark.yml"}, "region": {"startLine": 118}}}]}, {"ruleId": "scanner-6e737343dd91046d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ecce0f348ef819ab", "scanner": "scanner-primary", "fingerprint": "6e737343dd91046d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/benchmark.yml"}, "region": {"startLine": 124}}}]}, {"ruleId": "scanner-6e737343dd91046d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "48eed654b9399b66", "scanner": "scanner-primary", "fingerprint": "6e737343dd91046d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/benchmark.yml"}, "region": {"startLine": 134}}}]}, {"ruleId": "scanner-177ddc64edd6332d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "61170e205ec3b54c", "scanner": "scanner-primary", "fingerprint": "177ddc64edd6332d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e-test.yml"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-177ddc64edd6332d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d308bd992d8e7632", "scanner": "scanner-primary", "fingerprint": "177ddc64edd6332d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e-test.yml"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-177ddc64edd6332d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1e83b5d795e7f74d", "scanner": "scanner-primary", "fingerprint": "177ddc64edd6332d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e-test.yml"}, "region": {"startLine": 77}}}]}, {"ruleId": "scanner-177ddc64edd6332d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "34136dc860b16d37", "scanner": "scanner-primary", "fingerprint": "177ddc64edd6332d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e-test.yml"}, "region": {"startLine": 89}}}]}, {"ruleId": "scanner-177ddc64edd6332d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b9e301820040bdb6", "scanner": "scanner-primary", "fingerprint": "177ddc64edd6332d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e-test.yml"}, "region": {"startLine": 98}}}]}, {"ruleId": "scanner-177ddc64edd6332d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "32d615ecf33901f1", "scanner": "scanner-primary", "fingerprint": "177ddc64edd6332d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e-test.yml"}, "region": {"startLine": 110}}}]}, {"ruleId": "scanner-177ddc64edd6332d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1e83b5d795e7f74d", "scanner": "scanner-primary", "fingerprint": "177ddc64edd6332d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e-test.yml"}, "region": {"startLine": 156}}}]}, {"ruleId": "scanner-177ddc64edd6332d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8085878849d9cb5c", "scanner": "scanner-primary", "fingerprint": "177ddc64edd6332d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e-test.yml"}, "region": {"startLine": 164}}}]}, {"ruleId": "scanner-177ddc64edd6332d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6301524f594339ca", "scanner": "scanner-primary", "fingerprint": "177ddc64edd6332d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e-test.yml"}, "region": {"startLine": 246}}}]}, {"ruleId": "scanner-177ddc64edd6332d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6301524f594339ca", "scanner": "scanner-primary", "fingerprint": "177ddc64edd6332d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e-test.yml"}, "region": {"startLine": 258}}}]}, {"ruleId": "scanner-177ddc64edd6332d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "34136dc860b16d37", "scanner": "scanner-primary", "fingerprint": "177ddc64edd6332d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e-test.yml"}, "region": {"startLine": 458}}}]}, {"ruleId": "scanner-177ddc64edd6332d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b9e301820040bdb6", "scanner": "scanner-primary", "fingerprint": "177ddc64edd6332d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e-test.yml"}, "region": {"startLine": 467}}}]}, {"ruleId": "scanner-177ddc64edd6332d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "32d615ecf33901f1", "scanner": "scanner-primary", "fingerprint": "177ddc64edd6332d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e-test.yml"}, "region": {"startLine": 478}}}]}, {"ruleId": "scanner-177ddc64edd6332d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1e83b5d795e7f74d", "scanner": "scanner-primary", "fingerprint": "177ddc64edd6332d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e-test.yml"}, "region": {"startLine": 489}}}]}, {"ruleId": "scanner-177ddc64edd6332d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1e83b5d795e7f74d", "scanner": "scanner-primary", "fingerprint": "177ddc64edd6332d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e-test.yml"}, "region": {"startLine": 500}}}]}, {"ruleId": "scanner-177ddc64edd6332d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8085878849d9cb5c", "scanner": "scanner-primary", "fingerprint": "177ddc64edd6332d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e-test.yml"}, "region": {"startLine": 508}}}]}, {"ruleId": "scanner-177ddc64edd6332d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6301524f594339ca", "scanner": "scanner-primary", "fingerprint": "177ddc64edd6332d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e-test.yml"}, "region": {"startLine": 549}}}]}, {"ruleId": "scanner-177ddc64edd6332d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6301524f594339ca", "scanner": "scanner-primary", "fingerprint": "177ddc64edd6332d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e-test.yml"}, "region": {"startLine": 561}}}]}, {"ruleId": "scanner-177ddc64edd6332d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "61170e205ec3b54c", "scanner": "scanner-primary", "fingerprint": "177ddc64edd6332d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e-test.yml"}, "region": {"startLine": 576}}}]}, {"ruleId": "scanner-177ddc64edd6332d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "34136dc860b16d37", "scanner": "scanner-primary", "fingerprint": "177ddc64edd6332d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e-test.yml"}, "region": {"startLine": 581}}}]}, {"ruleId": "scanner-1f9e6d81946c603f", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "92a4c3537d8457b8", "scanner": "scanner-primary", "fingerprint": "1f9e6d81946c603f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/cli/screenpipe/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-36ecda97f3951bd7", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/components/chat-sidebar.tsx (1785 lines)"}, "properties": {"repobilityId": "aa21d13819656c83", "scanner": "scanner-primary", "fingerprint": "36ecda97f3951bd7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e0793f60a451829f", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/components/pipe-store.tsx (2023 lines)"}, "properties": {"repobilityId": "45bf938f193afd68", "scanner": "scanner-primary", "fingerprint": "e0793f60a451829f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9f5d57f787d8b6e4", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/components/standalone-chat.tsx (9906 lines)"}, "properties": {"repobilityId": "2c988f5a3c3777cc", "scanner": "scanner-primary", "fingerprint": "9f5d57f787d8b6e4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5dd1f1da76253c4f", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/components/settings/recording-settings.tsx (3797 lines)"}, "properties": {"repobilityId": "ab748c885a9dc315", "scanner": "scanner-primary", "fingerprint": "5dd1f1da76253c4f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea477b8b99fe3a0c", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/components/settings/connections-section.tsx (3866 lines)"}, "properties": {"repobilityId": "7ab23e0336115a65", "scanner": "scanner-primary", "fingerprint": "ea477b8b99fe3a0c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-db506c9b9e60999d", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/components/settings/ai-presets.tsx (2427 lines)"}, "properties": {"repobilityId": "6e2ffc34fc37b837", "scanner": "scanner-primary", "fingerprint": "db506c9b9e60999d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1ed5804a20405bc0", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/components/settings/brain-section.tsx (1331 lines)"}, "properties": {"repobilityId": "317fb3b39e7b7d60", "scanner": "scanner-primary", "fingerprint": "1ed5804a20405bc0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0335bb74fb9c4f91", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/components/settings/pipes-section.tsx (3378 lines)"}, "properties": {"repobilityId": "3c4697d556a05e7f", "scanner": "scanner-primary", "fingerprint": "0335bb74fb9c4f91", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2abe1130c78f8942", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/components/settings/privacy-section.tsx (1705 lines)"}, "properties": {"repobilityId": "fdffdc302bce4fd9", "scanner": "scanner-primary", "fingerprint": "2abe1130c78f8942", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ace8667aec518166", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/components/meeting-notes/note-view.tsx (1984 lines)"}, "properties": {"repobilityId": "73ab0401e74ea224", "scanner": "scanner-primary", "fingerprint": "ace8667aec518166", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4fbd74c49b8d35ce", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/components/hooks/use-chat-conversations.ts (1542 lines)"}, "properties": {"repobilityId": "09329a2bc2d84d3e", "scanner": "scanner-primary", "fingerprint": "4fbd74c49b8d35ce", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-91a6ccdd92c7a837", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/components/rewind/search-modal.tsx (2337 lines)"}, "properties": {"repobilityId": "11d269f7a86ccca1", "scanner": "scanner-primary", "fingerprint": "91a6ccdd92c7a837", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d7a3cf2f1903c7c3", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/components/rewind/timeline.tsx (1560 lines)"}, "properties": {"repobilityId": "d92b91164835ebdb", "scanner": "scanner-primary", "fingerprint": "d7a3cf2f1903c7c3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a8e05afd9a071c31", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/components/rewind/ai-presets-selector.tsx (1743 lines)"}, "properties": {"repobilityId": "6f61fedc634a0767", "scanner": "scanner-primary", "fingerprint": "a8e05afd9a071c31", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b6000e8986b0e56d", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/components/rewind/timeline/timeline.tsx (1920 lines)"}, "properties": {"repobilityId": "e22b4b69878fa336", "scanner": "scanner-primary", "fingerprint": "b6000e8986b0e56d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-378c8c85ab394493", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/app/home/page.tsx (1232 lines)"}, "properties": {"repobilityId": "225772a5b26c6fc9", "scanner": "scanner-primary", "fingerprint": "378c8c85ab394493", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a8448da87430ec3d", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/lib/utils/tauri.ts (3013 lines)"}, "properties": {"repobilityId": "f33c6f13c37b1a7b", "scanner": "scanner-primary", "fingerprint": "a8448da87430ec3d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0c1b777d4203fc84", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/lib/hooks/use-settings.tsx (1417 lines)"}, "properties": {"repobilityId": "ea77fdd5ff539729", "scanner": "scanner-primary", "fingerprint": "0c1b777d4203fc84", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a1ae9b9a4bfc7349", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/commands.rs (3503 lines)"}, "properties": {"repobilityId": "06c553553f1c6540", "scanner": "scanner-primary", "fingerprint": "a1ae9b9a4bfc7349", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f3b4856f0aa42938", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/store.rs (2308 lines)"}, "properties": {"repobilityId": "2b0e18c5ebebba6c", "scanner": "scanner-primary", "fingerprint": "f3b4856f0aa42938", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1cf6e37dd4933b51", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/pi.rs (3893 lines)"}, "properties": {"repobilityId": "8b9356dcfd4e0330", "scanner": "scanner-primary", "fingerprint": "1cf6e37dd4933b51", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5bf9ce048fd8ac95", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/owned_browser_cookies.rs (1411 lines)"}, "properties": {"repobilityId": "e5ed68a933c3fe12", "scanner": "scanner-primary", "fingerprint": "5bf9ce048fd8ac95", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d960614a458e16f6", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/suggestions.rs (1959 lines)"}, "properties": {"repobilityId": "511bfe915cfe2772", "scanner": "scanner-primary", "fingerprint": "d960614a458e16f6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4f8603a67c8795bb", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/tray.rs (1548 lines)"}, "properties": {"repobilityId": "8d0bef5c8ac709a0", "scanner": "scanner-primary", "fingerprint": "4f8603a67c8795bb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-aea1bfd88524c80f", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/owned_browser.rs (2035 lines)"}, "properties": {"repobilityId": "81094674c3ae989c", "scanner": "scanner-primary", "fingerprint": "aea1bfd88524c80f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d587e0ec4957278b", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/main.rs (2021 lines)"}, "properties": {"repobilityId": "091b5eaede7adce6", "scanner": "scanner-primary", "fingerprint": "d587e0ec4957278b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-85ef534ce73d4c70", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/health.rs (1855 lines)"}, "properties": {"repobilityId": "f56da831aac891d1", "scanner": "scanner-primary", "fingerprint": "85ef534ce73d4c70", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7b6c4a9cd8a272dc", "level": "note", "message": {"text": "Very large file: apps/screenpipe-app-tauri/src-tauri/src/window/show.rs (1868 lines)"}, "properties": {"repobilityId": "79df0e1c39105889", "scanner": "scanner-primary", "fingerprint": "7b6c4a9cd8a272dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-867cfd3a726aaba4", "level": "note", "message": {"text": "Very large file: crates/screenpipe-a11y/src/platform/windows_uia.rs (1996 lines)"}, "properties": {"repobilityId": "6b24301141bb355f", "scanner": "scanner-primary", "fingerprint": "867cfd3a726aaba4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c3daa7a761e82096", "level": "note", "message": {"text": "Very large file: crates/screenpipe-a11y/src/platform/windows.rs (1938 lines)"}, "properties": {"repobilityId": "ba334cf61be915dd", "scanner": "scanner-primary", "fingerprint": "c3daa7a761e82096", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e62ef8f7f136b584", "level": "note", "message": {"text": "Very large file: crates/screenpipe-a11y/src/platform/macos.rs (2436 lines)"}, "properties": {"repobilityId": "70d11320adb58bf2", "scanner": "scanner-primary", "fingerprint": "e62ef8f7f136b584", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1ef88fe3381f1fc1", "level": "note", "message": {"text": "Very large file: crates/screenpipe-a11y/src/tree/macos.rs (2071 lines)"}, "properties": {"repobilityId": "510c72fb87150f1b", "scanner": "scanner-primary", "fingerprint": "1ef88fe3381f1fc1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bf1fe8dc0caf3a31", "level": "note", "message": {"text": "Very large file: crates/screenpipe-connect/src/mcp_servers.rs (2798 lines)"}, "properties": {"repobilityId": "eed0482fa0f14b35", "scanner": "scanner-primary", "fingerprint": "bf1fe8dc0caf3a31", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6da711fa1cee8924", "level": "note", "message": {"text": "Very large file: crates/screenpipe-connect/src/oauth.rs (2120 lines)"}, "properties": {"repobilityId": "7c0cbc1489eeec36", "scanner": "scanner-primary", "fingerprint": "6da711fa1cee8924", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-10ccd1fbf86067d7", "level": "note", "message": {"text": "Very large file: crates/screenpipe-core/src/pii_removal.rs (1351 lines)"}, "properties": {"repobilityId": "86fdf37437bf9f53", "scanner": "scanner-primary", "fingerprint": "10ccd1fbf86067d7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-630958fed63e9e71", "level": "note", "message": {"text": "Very large file: crates/screenpipe-core/src/agents/pi.rs (3461 lines)"}, "properties": {"repobilityId": "56042cb244b1c62e", "scanner": "scanner-primary", "fingerprint": "630958fed63e9e71", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cc6fa59e6b9f7537", "level": "note", "message": {"text": "Very large file: crates/screenpipe-core/src/pipes/mod.rs (6702 lines)"}, "properties": {"repobilityId": "616b27058cb1f88f", "scanner": "scanner-primary", "fingerprint": "cc6fa59e6b9f7537", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c823d19276206e46", "level": "note", "message": {"text": "Very large file: crates/screenpipe-redact/src/adapters/regex.rs (2383 lines)"}, "properties": {"repobilityId": "37549338afb0e056", "scanner": "scanner-primary", "fingerprint": "c823d19276206e46", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0927e5e7782b68af", "level": "note", "message": {"text": "Very large file: crates/screenpipe-redact/src/adapters/national_id.rs (2289 lines)"}, "properties": {"repobilityId": "22932b3b197b38a4", "scanner": "scanner-primary", "fingerprint": "0927e5e7782b68af", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c2f2616cfdf7bbb4", "level": "note", "message": {"text": "Very large file: crates/screenpipe-engine/src/event_driven_capture.rs (2775 lines)"}, "properties": {"repobilityId": "df66ff294119616e", "scanner": "scanner-primary", "fingerprint": "c2f2616cfdf7bbb4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2f146449e3d8a4e6", "level": "note", "message": {"text": "Very large file: crates/screenpipe-engine/src/server.rs (1199 lines)"}, "properties": {"repobilityId": "348543f64fa2f1ab", "scanner": "scanner-primary", "fingerprint": "2f146449e3d8a4e6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fa489f0eb855d56f", "level": "note", "message": {"text": "Very large file: crates/screenpipe-engine/src/connections_api.rs (3840 lines)"}, "properties": {"repobilityId": "521a328b9aa79410", "scanner": "scanner-primary", "fingerprint": "fa489f0eb855d56f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8cd16ec8860a8911", "level": "note", "message": {"text": "Very large file: crates/screenpipe-engine/src/calendar_speaker_id.rs (1389 lines)"}, "properties": {"repobilityId": "16eceae7c9b20b18", "scanner": "scanner-primary", "fingerprint": "8cd16ec8860a8911", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-39156ed7eb35cd79", "level": "note", "message": {"text": "Very large file: crates/screenpipe-engine/src/ui_recorder.rs (1790 lines)"}, "properties": {"repobilityId": "c2be9c212135b616", "scanner": "scanner-primary", "fingerprint": "39156ed7eb35cd79", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0bd95420cc86321e", "level": "note", "message": {"text": "Very large file: crates/screenpipe-engine/src/sync_api.rs (1686 lines)"}, "properties": {"repobilityId": "15c8828a1d011669", "scanner": "scanner-primary", "fingerprint": "0bd95420cc86321e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1f9e53a0faa03749", "level": "note", "message": {"text": "Very large file: crates/screenpipe-engine/src/meeting_detector.rs (6169 lines)"}, "properties": {"repobilityId": "27e540a6a377a9f9", "scanner": "scanner-primary", "fingerprint": "1f9e53a0faa03749", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ede7c196bd8f29c7", "level": "note", "message": {"text": "Very large file: crates/screenpipe-engine/src/cli/mod.rs (2449 lines)"}, "properties": {"repobilityId": "1a6c04ac69d580fc", "scanner": "scanner-primary", "fingerprint": "ede7c196bd8f29c7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b8740732a0467632", "level": "note", "message": {"text": "Very large file: crates/screenpipe-engine/src/routes/artifacts.rs (1467 lines)"}, "properties": {"repobilityId": "ffb8edf70738b5d8", "scanner": "scanner-primary", "fingerprint": "b8740732a0467632", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-85ca326e0f1a376a", "level": "note", "message": {"text": "Very large file: crates/screenpipe-engine/src/routes/activity_summary.rs (1958 lines)"}, "properties": {"repobilityId": "c1bd65ede59a60f6", "scanner": "scanner-primary", "fingerprint": "85ca326e0f1a376a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ab2cb4a7d2f35b77", "level": "note", "message": {"text": "Very large file: crates/screenpipe-engine/src/routes/health.rs (1447 lines)"}, "properties": {"repobilityId": "aea1f33eb3c5e031", "scanner": "scanner-primary", "fingerprint": "ab2cb4a7d2f35b77", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-98aef53a49bb7bc6", "level": "note", "message": {"text": "Very large file: crates/screenpipe-audio/src/audio_manager/manager.rs (1734 lines)"}, "properties": {"repobilityId": "17cc11424b8d79b8", "scanner": "scanner-primary", "fingerprint": "98aef53a49bb7bc6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ca210d803b8bf816", "level": "note", "message": {"text": "Very large file: crates/screenpipe-audio/src/audio_manager/reconciliation.rs (1585 lines)"}, "properties": {"repobilityId": "496e8b30075c4cf9", "scanner": "scanner-primary", "fingerprint": "ca210d803b8bf816", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f74267d94216ede5", "level": "note", "message": {"text": "Very large file: crates/screenpipe-audio/src/audio_manager/device_monitor.rs (2004 lines)"}, "properties": {"repobilityId": "e61dcb481fcce638", "scanner": "scanner-primary", "fingerprint": "f74267d94216ede5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f02c06557a00b871", "level": "note", "message": {"text": "Very large file: crates/screenpipe-screen/src/capture_screenshot_by_window.rs (1988 lines)"}, "properties": {"repobilityId": "1b5df6fa1bcb2b21", "scanner": "scanner-primary", "fingerprint": "f02c06557a00b871", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e7ec74d47a117b32", "level": "note", "message": {"text": "Very large file: crates/screenpipe-screen/src/monitor.rs (1336 lines)"}, "properties": {"repobilityId": "09a4b160232de385", "scanner": "scanner-primary", "fingerprint": "e7ec74d47a117b32", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-83b4bbae358debb7", "level": "note", "message": {"text": "Very large file: crates/screenpipe-db/tests/db.rs (2548 lines)"}, "properties": {"repobilityId": "83c02091a70c8268", "scanner": "scanner-primary", "fingerprint": "83b4bbae358debb7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e6a6f8c667dca0d5", "level": "note", "message": {"text": "Very large file: crates/screenpipe-db/src/write_queue.rs (2606 lines)"}, "properties": {"repobilityId": "160eac3c73495cff", "scanner": "scanner-primary", "fingerprint": "e6a6f8c667dca0d5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0a6e65294abc2817", "level": "note", "message": {"text": "Very large file: crates/screenpipe-db/src/db.rs (11640 lines)"}, "properties": {"repobilityId": "caa7bc877abbfc3a", "scanner": "scanner-primary", "fingerprint": "0a6e65294abc2817", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-dd02a23a5572e46b", "level": "note", "message": {"text": "Very large file: packages/screenpipe-mcp/src/index.ts (1838 lines)"}, "properties": {"repobilityId": "35175a10554ffbe1", "scanner": "scanner-primary", "fingerprint": "dd02a23a5572e46b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fa1ae4c41b50965e", "level": "note", "message": {"text": "Very large file: ee/desktop-rust/enterprise_sync.rs (2704 lines)"}, "properties": {"repobilityId": "6d852c8f811c97d3", "scanner": "scanner-primary", "fingerprint": "fa1ae4c41b50965e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-507be47faefa609a", "level": "note", "message": {"text": "Very large file: ee/sdk/recorder-core/src/platform/recorder.rs (1553 lines)"}, "properties": {"repobilityId": "f889411ef837f697", "scanner": "scanner-primary", "fingerprint": "507be47faefa609a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea3b5e389d8c9c0f", "level": "note", "message": {"text": "Low test-to-source ratio"}, "properties": {"repobilityId": "ef7b2552cc00a375", "scanner": "scanner-primary", "fingerprint": "ea3b5e389d8c9c0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["tests"]}}, {"ruleId": "scanner-70f28da2087d7855", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/cli/screenpipe/package.json"}, "properties": {"repobilityId": "081d4a0c1564449f", "scanner": "scanner-primary", "fingerprint": "70f28da2087d7855", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/cli/screenpipe/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ea81981ac6b28a9e", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/e2e/package.json"}, "properties": {"repobilityId": "3955b1b5e336cda1", "scanner": "scanner-primary", "fingerprint": "ea81981ac6b28a9e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/e2e/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-91fd151918e01748", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: ee/sdk/examples/electron-app/package.json"}, "properties": {"repobilityId": "9b8232f1be4e8943", "scanner": "scanner-primary", "fingerprint": "91fd151918e01748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ee/sdk/examples/electron-app/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "b097b60a6832503f", "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": "34a557cb37fd7f8b", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "3f18181ccb9de5a9", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "5b7af37db8d18ba1", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "ff7509003a16e1e6", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "63641bc5e69ecdb8", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "6e158be85273383b", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-d70acde74853b547", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: crates/screenpipe-core/assets/skills/screenpipe-api/SKILL.md"}, "properties": {"repobilityId": "ce97fae2e527911f", "scanner": "scanner-primary", "fingerprint": "d70acde74853b547", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "crates/screenpipe-core/assets/skills/screenpipe-api/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4c89017a428cfd12", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: crates/screenpipe-core/assets/skills/screenpipe-team/SKILL.md"}, "properties": {"repobilityId": "75cadd5de8f7e54b", "scanner": "scanner-primary", "fingerprint": "4c89017a428cfd12", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "crates/screenpipe-core/assets/skills/screenpipe-team/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9f237b165423e342", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/screenpipe-api/SKILL.md"}, "properties": {"repobilityId": "746a20b1988b4b94", "scanner": "scanner-primary", "fingerprint": "9f237b165423e342", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/screenpipe-api/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-983b546463a7bdc3", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/screenpipe-logs/SKILL.md"}, "properties": {"repobilityId": "c5876bf5f57d9921", "scanner": "scanner-primary", "fingerprint": "983b546463a7bdc3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/screenpipe-logs/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fb1f4cd0cdb438d9", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/vitest.config.ts:12"}, "properties": {"repobilityId": "c43c2184d091d3e7", "scanner": "scanner-primary", "fingerprint": "fb1f4cd0cdb438d9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c1d49161b53bbe8f", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/scripts/pre_build.js:213"}, "properties": {"repobilityId": "3b792499f372bb23", "scanner": "scanner-primary", "fingerprint": "c1d49161b53bbe8f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3ac06257c835b8ad", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/scripts/pre_build.js:689"}, "properties": {"repobilityId": "9d4e69a74be076c2", "scanner": "scanner-primary", "fingerprint": "3ac06257c835b8ad", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-779bcb736f7efc13", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/components/browser-sidebar.tsx:174"}, "properties": {"repobilityId": "858edc9630ae3568", "scanner": "scanner-primary", "fingerprint": "779bcb736f7efc13", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a7694b3644fc3983", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/components/update-banner.tsx:305"}, "properties": {"repobilityId": "affb40e9ddce47ab", "scanner": "scanner-primary", "fingerprint": "a7694b3644fc3983", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6d08a07fcec37619", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/components/theme-provider.tsx:50"}, "properties": {"repobilityId": "740d047658db8396", "scanner": "scanner-primary", "fingerprint": "6d08a07fcec37619", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8cc2e131d096b1f1", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/chat-sidebar.tsx:214"}, "properties": {"repobilityId": "f6357ed609aac29a", "scanner": "scanner-primary", "fingerprint": "8cc2e131d096b1f1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c97624506ca57e8c", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/notification-handler.tsx:223"}, "properties": {"repobilityId": "9c2082ac17ad6d21", "scanner": "scanner-primary", "fingerprint": "c97624506ca57e8c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b5fec3fe27b5ae95", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/components/app-entitlement-gate.tsx:30"}, "properties": {"repobilityId": "b39445176a444106", "scanner": "scanner-primary", "fingerprint": "b5fec3fe27b5ae95", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-28b851c74f693f11", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/components/standalone-chat.tsx:48"}, "properties": {"repobilityId": "0b465e1992597503", "scanner": "scanner-primary", "fingerprint": "28b851c74f693f11", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-36547c7165aa5d04", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/components/notification-bell.tsx:51"}, "properties": {"repobilityId": "1b7853abf2ec9f5e", "scanner": "scanner-primary", "fingerprint": "36547c7165aa5d04", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8d8569ba100a5bca", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/components/share-logs-button.tsx:241"}, "properties": {"repobilityId": "071a01b9640ef03e", "scanner": "scanner-primary", "fingerprint": "8d8569ba100a5bca", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a90e7be7b49e9c43", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/settings/recording-settings.tsx:1759"}, "properties": {"repobilityId": "feee8ed56f0ac9dd", "scanner": "scanner-primary", "fingerprint": "a90e7be7b49e9c43", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53847b0efa7d198b", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/settings/connections-section.tsx:1336"}, "properties": {"repobilityId": "2a176d3ea5eea4e9", "scanner": "scanner-primary", "fingerprint": "53847b0efa7d198b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a91a6e29ec1903e4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/components/settings/ai-presets.tsx:936"}, "properties": {"repobilityId": "4b48ae5e349d3107", "scanner": "scanner-primary", "fingerprint": "a91a6e29ec1903e4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d94f8651ca05588c", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/screenpipe-app-tauri/components/settings/pipes-section.tsx:1183"}, "properties": {"repobilityId": "9bf435f6f21ca368", "scanner": "scanner-primary", "fingerprint": "d94f8651ca05588c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed0edbedfe312ae3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/components/settings/pipes-section.tsx:1080"}, "properties": {"repobilityId": "4b720b8ec0dfa36d", "scanner": "scanner-primary", "fingerprint": "ed0edbedfe312ae3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2a015e5d94ef2371", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/components/settings/input-monitoring-card.tsx:33"}, "properties": {"repobilityId": "e87f0376ccd0b3db", "scanner": "scanner-primary", "fingerprint": "2a015e5d94ef2371", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a9846cd0047d9f7c", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/components/settings/account-section.tsx:172"}, "properties": {"repobilityId": "265e79d268162f98", "scanner": "scanner-primary", "fingerprint": "a9846cd0047d9f7c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b7bab554e498dd8a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/components/settings/account-section.tsx:135"}, "properties": {"repobilityId": "5b93c771b2995b53", "scanner": "scanner-primary", "fingerprint": "b7bab554e498dd8a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eead72e0f6aeea6a", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/components/settings/settings-search.tsx:12"}, "properties": {"repobilityId": "cdaa4f0d647176e3", "scanner": "scanner-primary", "fingerprint": "eead72e0f6aeea6a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fbebad3a61dfc39a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/components/settings/sync-settings.tsx:964"}, "properties": {"repobilityId": "503de02cd785e561", "scanner": "scanner-primary", "fingerprint": "fbebad3a61dfc39a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c2fea888f3330fc4", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/components/settings/privacy-section.tsx:523"}, "properties": {"repobilityId": "85cce6b524b5a67e", "scanner": "scanner-primary", "fingerprint": "c2fea888f3330fc4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f75283721c04152b", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/components/settings/agent-card.tsx:35"}, "properties": {"repobilityId": "567792a1b91bcce9", "scanner": "scanner-primary", "fingerprint": "f75283721c04152b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b8bb5f83e0127a9b", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/components/settings/__tests__/account-section.subscription-gate.test.tsx:9"}, "properties": {"repobilityId": "4b59a1f70dfdd4dc", "scanner": "scanner-primary", "fingerprint": "b8bb5f83e0127a9b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d937a785b64f916", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/components/__tests__/markdown-viewer-link.test.ts:5"}, "properties": {"repobilityId": "13ec0a16751a6191", "scanner": "scanner-primary", "fingerprint": "0d937a785b64f916", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b693c860cc73cc5", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/__tests__/pipe-ndjson-to-chat.test.ts:544"}, "properties": {"repobilityId": "81495e1ad2d5201a", "scanner": "scanner-primary", "fingerprint": "6b693c860cc73cc5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a626df74a3ee9b79", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/components/meeting-notes/replay-strip.tsx:262"}, "properties": {"repobilityId": "9b0b6395e9d41685", "scanner": "scanner-primary", "fingerprint": "a626df74a3ee9b79", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-178e81b6a212e244", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/components/meeting-notes/note-view.tsx:196"}, "properties": {"repobilityId": "dcbe744dc05fe605", "scanner": "scanner-primary", "fingerprint": "178e81b6a212e244", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5eb00542f42b65f8", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/components/meeting-notes/transcript-panel.tsx:465"}, "properties": {"repobilityId": "dd109b3790c3467f", "scanner": "scanner-primary", "fingerprint": "5eb00542f42b65f8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-08242a4e36307474", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/components/meeting-notes/index.tsx:179"}, "properties": {"repobilityId": "cf8f3499ccac23f0", "scanner": "scanner-primary", "fingerprint": "08242a4e36307474", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f7decb35feef7b17", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/onboarding/engine-startup.tsx:460"}, "properties": {"repobilityId": "472ae817b1a4245d", "scanner": "scanner-primary", "fingerprint": "f7decb35feef7b17", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-83a5cce1577c8095", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/components/onboarding/engine-startup.tsx:768"}, "properties": {"repobilityId": "6ac6e851d1686842", "scanner": "scanner-primary", "fingerprint": "83a5cce1577c8095", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-577ea988a223d5c3", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/onboarding/connect-apps.tsx:293"}, "properties": {"repobilityId": "739f242580fba027", "scanner": "scanner-primary", "fingerprint": "577ea988a223d5c3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e9234142cac389b", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/hooks/use-chat-conversations.ts:101"}, "properties": {"repobilityId": "7956c46653b662de", "scanner": "scanner-primary", "fingerprint": "2e9234142cac389b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1fa4bd2d54f1bc8f", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/rewind/search-modal.tsx:383"}, "properties": {"repobilityId": "8f27d56dac7ba4b7", "scanner": "scanner-primary", "fingerprint": "1fa4bd2d54f1bc8f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2712eab831c7dbf0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/components/rewind/region-ocr-overlay.tsx:153"}, "properties": {"repobilityId": "1f6b27ebac7b0a43", "scanner": "scanner-primary", "fingerprint": "2712eab831c7dbf0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-346297d6f4a54e16", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/rewind/timeline.tsx:305"}, "properties": {"repobilityId": "666e6e826f4e6f16", "scanner": "scanner-primary", "fingerprint": "346297d6f4a54e16", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1a23c4e9fba073a8", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/rewind/ai-presets-selector.tsx:341"}, "properties": {"repobilityId": "cee0454f2ab98c61", "scanner": "scanner-primary", "fingerprint": "1a23c4e9fba073a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ca975f5b715f374c", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/rewind/current-frame-timeline.tsx:265"}, "properties": {"repobilityId": "711da1398708bfdb", "scanner": "scanner-primary", "fingerprint": "ca975f5b715f374c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-224b84c7c5dcb136", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/components/rewind/__tests__/search-result-strip.test.tsx:13"}, "properties": {"repobilityId": "f26de877a0dbbacf", "scanner": "scanner-primary", "fingerprint": "224b84c7c5dcb136", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-15da63d35909977f", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/components/rewind/timeline/timeline.tsx:988"}, "properties": {"repobilityId": "94ec469963a7aca2", "scanner": "scanner-primary", "fingerprint": "15da63d35909977f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53f946565f9a1a8f", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/components/rewind/hooks/use-live-text.ts:115"}, "properties": {"repobilityId": "d4993c14d3e41a10", "scanner": "scanner-primary", "fingerprint": "53f946565f9a1a8f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bb6562700b9313ba", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/components/rewind/hooks/use-timeline-keyboard.ts:205"}, "properties": {"repobilityId": "61a5861e4a5ff7e1", "scanner": "scanner-primary", "fingerprint": "bb6562700b9313ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62217b6e9f51e36c", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/components/rewind/hooks/use-frame-loading.ts:280"}, "properties": {"repobilityId": "4ba5a763dd95d1f5", "scanner": "scanner-primary", "fingerprint": "62217b6e9f51e36c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c54292f529cbdffc", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/app/page.tsx:9"}, "properties": {"repobilityId": "c901c963b5be57cc", "scanner": "scanner-primary", "fingerprint": "c54292f529cbdffc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b6ec64c17d9fe9d6", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/app/layout.tsx:142"}, "properties": {"repobilityId": "5efe06ae0583856c", "scanner": "scanner-primary", "fingerprint": "b6ec64c17d9fe9d6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4c2db577b5b9fb5f", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/app/error.tsx:31"}, "properties": {"repobilityId": "54e8c5523c9fcfde", "scanner": "scanner-primary", "fingerprint": "4c2db577b5b9fb5f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-38fbd1cd8a951779", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/app/global-error.tsx:19"}, "properties": {"repobilityId": "f4a8e250e6b27b22", "scanner": "scanner-primary", "fingerprint": "38fbd1cd8a951779", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b4a85d5981d9391a", "level": "none", "message": {"text": "Commented-code block (13 lines) in apps/screenpipe-app-tauri/app/providers.tsx:37"}, "properties": {"repobilityId": "061f572a98aab41a", "scanner": "scanner-primary", "fingerprint": "b4a85d5981d9391a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-00e19749172ec624", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/app/shortcut-reminder/page.tsx:148"}, "properties": {"repobilityId": "68c9ac531c44439a", "scanner": "scanner-primary", "fingerprint": "00e19749172ec624", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5ca2dcc9eaf7315b", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/app/home/page.tsx:343"}, "properties": {"repobilityId": "05c5b02507af359c", "scanner": "scanner-primary", "fingerprint": "5ca2dcc9eaf7315b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d15c370200afde55", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/app/notification-panel/page.tsx:172"}, "properties": {"repobilityId": "f5cecfece6a83546", "scanner": "scanner-primary", "fingerprint": "d15c370200afde55", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2db4c89a83011388", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/app/overlay/page.tsx:282"}, "properties": {"repobilityId": "eee5384e9407aca0", "scanner": "scanner-primary", "fingerprint": "2db4c89a83011388", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bb57053571804f1a", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/lib/api.ts:165"}, "properties": {"repobilityId": "f8c1e50b71af2397", "scanner": "scanner-primary", "fingerprint": "bb57053571804f1a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0e836ad22a3d2b56", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/lib/api.ts:240"}, "properties": {"repobilityId": "8830cf4635990452", "scanner": "scanner-primary", "fingerprint": "0e836ad22a3d2b56", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9e9f2c89e5933b8f", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/lib/timeline-navigation.ts:9"}, "properties": {"repobilityId": "97a50fc8dcd1c05c", "scanner": "scanner-primary", "fingerprint": "9e9f2c89e5933b8f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-403aacec74aab43c", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/lib/saf.ts:7"}, "properties": {"repobilityId": "35e9a699230e0bc6", "scanner": "scanner-primary", "fingerprint": "403aacec74aab43c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a2be217cdb3b8a94", "level": "none", "message": {"text": "Commented-code block (10 lines) in apps/screenpipe-app-tauri/lib/app-entitlement.ts:177"}, "properties": {"repobilityId": "6a34f2494e0852b8", "scanner": "scanner-primary", "fingerprint": "a2be217cdb3b8a94", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-23efbc09cbfd1510", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/lib/source-citations.ts:88"}, "properties": {"repobilityId": "2ac72af6cbec0641", "scanner": "scanner-primary", "fingerprint": "23efbc09cbfd1510", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3debaa3c753a4c2e", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/lib/pipe-ndjson-to-chat.ts:214"}, "properties": {"repobilityId": "32bd4fd1f87531a8", "scanner": "scanner-primary", "fingerprint": "3debaa3c753a4c2e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5e4ca4caa208f78e", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/lib/chat-storage.ts:88"}, "properties": {"repobilityId": "cccd13e77edc2636", "scanner": "scanner-primary", "fingerprint": "5e4ca4caa208f78e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ba93c083f09d983c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/lib/__tests__/team-api-contract.test.ts:19"}, "properties": {"repobilityId": "2216359f4afd9555", "scanner": "scanner-primary", "fingerprint": "ba93c083f09d983c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a488cb9505734fe9", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/lib/__tests__/chat-store.test.ts:81"}, "properties": {"repobilityId": "1d9189ef8f041595", "scanner": "scanner-primary", "fingerprint": "a488cb9505734fe9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-302ab8146fd9b562", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/lib/__tests__/save-conversation-race.test.tsx:159"}, "properties": {"repobilityId": "e5a31b4a525f7fe7", "scanner": "scanner-primary", "fingerprint": "302ab8146fd9b562", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c291860efe94f71b", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/lib/pi/extract-document.ts:7"}, "properties": {"repobilityId": "e1eaff61a393797a", "scanner": "scanner-primary", "fingerprint": "c291860efe94f71b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b52c2f27661e28ae", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/lib/stores/pi-event-router.ts:179"}, "properties": {"repobilityId": "dfc4a7e126039ed7", "scanner": "scanner-primary", "fingerprint": "b52c2f27661e28ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6759934a9ce5f380", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/lib/stores/chat-store.ts:50"}, "properties": {"repobilityId": "2b83efdda7bcb360", "scanner": "scanner-primary", "fingerprint": "6759934a9ce5f380", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-37c85815caa98456", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/lib/events/pipe-run-recorder.ts:165"}, "properties": {"repobilityId": "3d13f0012289559e", "scanner": "scanner-primary", "fingerprint": "37c85815caa98456", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d1723e7693cf3b6d", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/lib/events/pipe-watch-writer.ts:291"}, "properties": {"repobilityId": "e26c6c219c61449a", "scanner": "scanner-primary", "fingerprint": "d1723e7693cf3b6d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b32c0be7f1b76e5", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/lib/utils/calendar.ts:267"}, "properties": {"repobilityId": "513e6f2cc09f0588", "scanner": "scanner-primary", "fingerprint": "7b32c0be7f1b76e5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-63932a7b6443d0eb", "level": "note", "message": {"text": "Legacy-named symbol `manualLegacy` in apps/screenpipe-app-tauri/lib/utils/meeting-state.test.ts:18"}, "properties": {"repobilityId": "ba6930f49fa30ec0", "scanner": "scanner-primary", "fingerprint": "63932a7b6443d0eb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5e25685987e04c9a", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/lib/utils/connection-chip.ts:5"}, "properties": {"repobilityId": "d672671ec6430867", "scanner": "scanner-primary", "fingerprint": "5e25685987e04c9a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-619d29369cc14d5b", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/lib/hooks/use-team.ts:530"}, "properties": {"repobilityId": "379dac08661f6950", "scanner": "scanner-primary", "fingerprint": "619d29369cc14d5b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ef304fa7ddd4c09", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/lib/hooks/use-team.ts:280"}, "properties": {"repobilityId": "47d3aaa4d71f572e", "scanner": "scanner-primary", "fingerprint": "1ef304fa7ddd4c09", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9cab4c9b151089c3", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/lib/hooks/use-pi-thinking-level.ts:59"}, "properties": {"repobilityId": "ec3e43affb4d0d51", "scanner": "scanner-primary", "fingerprint": "9cab4c9b151089c3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d85f90395d6b3e0d", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/lib/hooks/use-settings.tsx:440"}, "properties": {"repobilityId": "de393a13a1762f87", "scanner": "scanner-primary", "fingerprint": "d85f90395d6b3e0d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e6153e30fd53b033", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/lib/hooks/use-sql-autocomplete.tsx:352"}, "properties": {"repobilityId": "431c2a7408c4935d", "scanner": "scanner-primary", "fingerprint": "e6153e30fd53b033", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-89d867af193d5d86", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/lib/hooks/use-unified-artifacts.ts:81"}, "properties": {"repobilityId": "8e90c6bd8720daba", "scanner": "scanner-primary", "fingerprint": "89d867af193d5d86", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1983639a97944ea2", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/lib/hooks/use-enterprise-policy.ts:50"}, "properties": {"repobilityId": "e5d856a7dd3c74a1", "scanner": "scanner-primary", "fingerprint": "1983639a97944ea2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-445940469606df79", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/lib/hooks/__tests__/server-push-old-frames.test.ts:245"}, "properties": {"repobilityId": "52201fe912f4dbfa", "scanner": "scanner-primary", "fingerprint": "445940469606df79", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-481373d77487f2eb", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/lib/hooks/__tests__/server-poll-logic.test.ts:276"}, "properties": {"repobilityId": "d4ba17bf9af85b10", "scanner": "scanner-primary", "fingerprint": "481373d77487f2eb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bb34fc9e15ae1042", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/lib/hooks/__tests__/server-poll-logic.test.ts:211"}, "properties": {"repobilityId": "7a8feb8cd97effbb", "scanner": "scanner-primary", "fingerprint": "bb34fc9e15ae1042", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2eafcb55a8b3934c", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/screenpipe-app-tauri/lib/actions/has-frames-date.ts:34"}, "properties": {"repobilityId": "31dc373cba5dce61", "scanner": "scanner-primary", "fingerprint": "2eafcb55a8b3934c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76521c3c13fb6ea6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/src-tauri/assets/extensions/save-artifact.ts:96"}, "properties": {"repobilityId": "ccc01c16cf487bb8", "scanner": "scanner-primary", "fingerprint": "76521c3c13fb6ea6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f4554a3e74ee2fe0", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/e2e/scripts/generate-coverage-report.ts:660"}, "properties": {"repobilityId": "1b91a5840dbdf85a", "scanner": "scanner-primary", "fingerprint": "f4554a3e74ee2fe0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a4162c78ece5f2cd", "level": "none", "message": {"text": "Commented-code block (10 lines) in apps/screenpipe-app-tauri/e2e/helpers/test-utils.ts:111"}, "properties": {"repobilityId": "e630fd906b00b765", "scanner": "scanner-primary", "fingerprint": "a4162c78ece5f2cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7792ba2d5a6f3503", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/e2e/helpers/app-launcher.ts:56"}, "properties": {"repobilityId": "1d607241d972bac6", "scanner": "scanner-primary", "fingerprint": "7792ba2d5a6f3503", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bfd36077ede1ff6f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/e2e/mock-updates/updater-harness.ts:224"}, "properties": {"repobilityId": "c7d9e7f844763c1c", "scanner": "scanner-primary", "fingerprint": "bfd36077ede1ff6f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3ad204428b1d0332", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/e2e/specs/zz-logout-resurrect.spec.ts:292"}, "properties": {"repobilityId": "deff44bb6130c2e8", "scanner": "scanner-primary", "fingerprint": "3ad204428b1d0332", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eef287047a5847ae", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/e2e/specs/chat-switch-context-loss.spec.ts:202"}, "properties": {"repobilityId": "1a03d33aed169a7f", "scanner": "scanner-primary", "fingerprint": "eef287047a5847ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d80c6db57e54df78", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/e2e/specs/api.spec.ts:48"}, "properties": {"repobilityId": "65b7612b0d41d890", "scanner": "scanner-primary", "fingerprint": "d80c6db57e54df78", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c749c515b822a2ea", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/e2e/specs/home-window.spec.ts:34"}, "properties": {"repobilityId": "aad81fb37e201333", "scanner": "scanner-primary", "fingerprint": "c749c515b822a2ea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7ecb80008b2376b4", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/e2e/specs/chat-parallel-jobs-duplicate.spec.ts:151"}, "properties": {"repobilityId": "039bccfc0e149555", "scanner": "scanner-primary", "fingerprint": "7ecb80008b2376b4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c68cb859a706659", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/e2e/specs/settings-sections.spec.ts:130"}, "properties": {"repobilityId": "08e62b6b6d34814e", "scanner": "scanner-primary", "fingerprint": "7c68cb859a706659", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7f0c519f681803fe", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/e2e/specs/zz-app-entitlement-gate.spec.ts:7"}, "properties": {"repobilityId": "51328fea90fc8ab9", "scanner": "scanner-primary", "fingerprint": "7f0c519f681803fe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6253c0bf015a9cac", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/e2e/specs/help-discord-link.spec.ts:45"}, "properties": {"repobilityId": "d2cfa46231898bdd", "scanner": "scanner-primary", "fingerprint": "6253c0bf015a9cac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c472b601328476e3", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/e2e/specs/onboarding-redirect.spec.ts:5"}, "properties": {"repobilityId": "5f71b6ff674b7629", "scanner": "scanner-primary", "fingerprint": "c472b601328476e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7d26f61322a7f375", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/screenpipe-app-tauri/e2e/specs/chat-composer-isolation.spec.ts:33"}, "properties": {"repobilityId": "1f401dbfc7a4b011", "scanner": "scanner-primary", "fingerprint": "7d26f61322a7f375", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4e7d7189a221b75", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/e2e/specs/audio-fallback.spec.ts:35"}, "properties": {"repobilityId": "cb2c166a81f95c8f", "scanner": "scanner-primary", "fingerprint": "d4e7d7189a221b75", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b01c40db983aa356", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/e2e/specs/notification-viewer-link.spec.ts:5"}, "properties": {"repobilityId": "ec2f0de20821890f", "scanner": "scanner-primary", "fingerprint": "b01c40db983aa356", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0f471a77f238de20", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/e2e/specs/meeting-note-bottom-click.spec.ts:74"}, "properties": {"repobilityId": "ebb22e365ee1f2f8", "scanner": "scanner-primary", "fingerprint": "0f471a77f238de20", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ae121a8d184c8304", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/screenpipe-app-tauri/e2e/specs/meeting-note-bottom-click.spec.ts:133"}, "properties": {"repobilityId": "9bc49d14d029e730", "scanner": "scanner-primary", "fingerprint": "ae121a8d184c8304", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-774bde6fb4d34257", "level": "none", "message": {"text": "Commented-code block (13 lines) in apps/screenpipe-app-tauri/e2e/specs/windows-user-journey.spec.ts:740"}, "properties": {"repobilityId": "05e3d407c4b3becf", "scanner": "scanner-primary", "fingerprint": "774bde6fb4d34257", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b978f5bca21a8d9f", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/e2e/specs/pipes.spec.ts:252"}, "properties": {"repobilityId": "4e388251da0e4ac5", "scanner": "scanner-primary", "fingerprint": "b978f5bca21a8d9f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-88d1432bced13f2a", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/e2e/specs/viewer-deeplink.spec.ts:5"}, "properties": {"repobilityId": "fc291709a3cfa3ab", "scanner": "scanner-primary", "fingerprint": "88d1432bced13f2a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bb5711804f85b3d4", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/e2e/specs/zz-account-stale-subscription.spec.ts:199"}, "properties": {"repobilityId": "b3cdb9fff1c395aa", "scanner": "scanner-primary", "fingerprint": "bb5711804f85b3d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9dea7c5ed99cb68e", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/e2e/specs/api-key-cold-spawn.spec.ts:5"}, "properties": {"repobilityId": "ad75afd6129d5999", "scanner": "scanner-primary", "fingerprint": "9dea7c5ed99cb68e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9b34868b07437555", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/screenpipe-app-tauri/e2e/specs/timeline.spec.ts:67"}, "properties": {"repobilityId": "0ff7728dc8bdf37f", "scanner": "scanner-primary", "fingerprint": "9b34868b07437555", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8f8da53160b1f2e2", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/e2e/specs/zz-owned-browser-background-nav.spec.ts:77"}, "properties": {"repobilityId": "281d520bd6f7d5ae", "scanner": "scanner-primary", "fingerprint": "8f8da53160b1f2e2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-abc68a6cc3e5fe19", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/screenpipe-app-tauri/e2e/specs/chat-window.spec.ts:52"}, "properties": {"repobilityId": "325cee2490c62ee1", "scanner": "scanner-primary", "fingerprint": "abc68a6cc3e5fe19", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-afe88c13239804d4", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/screenpipe-app-tauri/e2e/specs/chat-within-session-context-loss.spec.ts:221"}, "properties": {"repobilityId": "42a380a539a3f6f6", "scanner": "scanner-primary", "fingerprint": "afe88c13239804d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e9ec5e859e9026a3", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/screenpipe-app-tauri/e2e/specs/tray-search.spec.ts:124"}, "properties": {"repobilityId": "778fd020477be11b", "scanner": "scanner-primary", "fingerprint": "e9ec5e859e9026a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9a26348c1bceb8bf", "level": "none", "message": {"text": "Commented-code block (6 lines) in crates/screenpipe-connect/src/whatsapp/gateway.mjs:7"}, "properties": {"repobilityId": "52c0d42d2e1b25bd", "scanner": "scanner-primary", "fingerprint": "9a26348c1bceb8bf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-75a581dc8386eaa8", "level": "none", "message": {"text": "Commented-code block (6 lines) in crates/screenpipe-core/assets/extensions/sub-agent.ts:11"}, "properties": {"repobilityId": "4b7211e1b51e47e0", "scanner": "scanner-primary", "fingerprint": "75a581dc8386eaa8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-29e7c0901ef6aa59", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/cli/screenpipe/lib/cli.js:6"}, "properties": {"repobilityId": "6dae2d54e3b95250", "scanner": "scanner-primary", "fingerprint": "29e7c0901ef6aa59", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a7db1c980921d401", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/browser-extension/src/options.ts:186"}, "properties": {"repobilityId": "5dcce4088430687f", "scanner": "scanner-primary", "fingerprint": "a7db1c980921d401", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5dbbf79236ef85ec", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ai-gateway/src/index.ts:172"}, "properties": {"repobilityId": "1188ec67d0015a21", "scanner": "scanner-primary", "fingerprint": "5dbbf79236ef85ec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f7a2af57f72526b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/index.ts:665"}, "properties": {"repobilityId": "4bae6efb7d76f710", "scanner": "scanner-primary", "fingerprint": "4f7a2af57f72526b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ddbd1c6140325c24", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ai-gateway/src/types.ts:174"}, "properties": {"repobilityId": "7a602fe165ca5beb", "scanner": "scanner-primary", "fingerprint": "ddbd1c6140325c24", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3e29e4115e9dd62", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/test/vertex-proxy.test.ts:50"}, "properties": {"repobilityId": "9e3b480b7fa22fa7", "scanner": "scanner-primary", "fingerprint": "e3e29e4115e9dd62", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9c63275d53ea63a8", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ai-gateway/src/test/vertex-maas.unit.test.ts:179"}, "properties": {"repobilityId": "c2bf37b3660305c2", "scanner": "scanner-primary", "fingerprint": "9c63275d53ea63a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6f0c676797152d88", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ai-gateway/src/test/openai-models.unit.test.ts:276"}, "properties": {"repobilityId": "1cec0041ff05f529", "scanner": "scanner-primary", "fingerprint": "6f0c676797152d88", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a6c512f00a3e309d", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ai-gateway/src/test/flex-tier.unit.test.ts:28"}, "properties": {"repobilityId": "b59e8866c4f7ab80", "scanner": "scanner-primary", "fingerprint": "a6c512f00a3e309d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-89edb59a4566d677", "level": "note", "message": {"text": "Legacy-named symbol `validateAuthLegacy` in packages/ai-gateway/src/utils/auth.ts:163"}, "properties": {"repobilityId": "ac266cf8b118319b", "scanner": "scanner-primary", "fingerprint": "89edb59a4566d677", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2fde515f164c3654", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/ai-gateway/src/utils/auth.ts:187"}, "properties": {"repobilityId": "4ac01156511855ae", "scanner": "scanner-primary", "fingerprint": "2fde515f164c3654", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-25293c6de69aef27", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/utils/auth.ts:194"}, "properties": {"repobilityId": "79c10cc3339a805f", "scanner": "scanner-primary", "fingerprint": "25293c6de69aef27", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3ccaf4d9eb6a0720", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/utils/voice-utils.ts:196"}, "properties": {"repobilityId": "0a7ffefec2ef9580", "scanner": "scanner-primary", "fingerprint": "3ccaf4d9eb6a0720", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bb58bb3d0cd1a064", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/utils/rate-limiter.ts:19"}, "properties": {"repobilityId": "82292a8ce8817d41", "scanner": "scanner-primary", "fingerprint": "bb58bb3d0cd1a064", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fa1f45ba027bda48", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/providers/anthropic-proxy.ts:168"}, "properties": {"repobilityId": "223a9bd41b967fdf", "scanner": "scanner-primary", "fingerprint": "fa1f45ba027bda48", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-46ebc0d81408de54", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ai-gateway/src/providers/index.ts:12"}, "properties": {"repobilityId": "e8a4bcb86a16234e", "scanner": "scanner-primary", "fingerprint": "46ebc0d81408de54", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9db4121ad21fd613", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ai-gateway/src/providers/vertex-maas.ts:82"}, "properties": {"repobilityId": "e60ebf90b39aaa5f", "scanner": "scanner-primary", "fingerprint": "9db4121ad21fd613", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e48f7a8016941062", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/providers/vertex-maas.ts:68"}, "properties": {"repobilityId": "d4ea05acbc7e0ed2", "scanner": "scanner-primary", "fingerprint": "e48f7a8016941062", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-59624145dff511be", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ai-gateway/src/providers/gemini.ts:68"}, "properties": {"repobilityId": "456ced4906380c61", "scanner": "scanner-primary", "fingerprint": "59624145dff511be", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0a13a13cb2bb7123", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/providers/gemini.ts:128"}, "properties": {"repobilityId": "1b6da9ee070ef0be", "scanner": "scanner-primary", "fingerprint": "0a13a13cb2bb7123", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3331ed0ef65b0e63", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/ai-gateway/src/providers/openai.ts:68"}, "properties": {"repobilityId": "bc0b8a8aedde843c", "scanner": "scanner-primary", "fingerprint": "3331ed0ef65b0e63", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e4cd0c92125466b2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/providers/vertex.ts:137"}, "properties": {"repobilityId": "012b371d17c83fc9", "scanner": "scanner-primary", "fingerprint": "e4cd0c92125466b2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2c6b482dcee1c29e", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ai-gateway/src/providers/anthropic.ts:292"}, "properties": {"repobilityId": "85c62e83116db8b5", "scanner": "scanner-primary", "fingerprint": "2c6b482dcee1c29e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-965aa3b2feb3c52b", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/ai-gateway/src/services/usage-tracker.ts:139"}, "properties": {"repobilityId": "b7ffadc22d9d904a", "scanner": "scanner-primary", "fingerprint": "965aa3b2feb3c52b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-800e9a79c2acbb08", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/services/usage-tracker.ts:365"}, "properties": {"repobilityId": "27916d9beb8022fb", "scanner": "scanner-primary", "fingerprint": "800e9a79c2acbb08", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b195788c28068494", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/ai-gateway/src/services/cost-tracker.ts:11"}, "properties": {"repobilityId": "1f8521546f8a23f2", "scanner": "scanner-primary", "fingerprint": "b195788c28068494", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a1769e8abedc9182", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/ai-gateway/src/handlers/chat.ts:32"}, "properties": {"repobilityId": "e6d63c2a83c94a07", "scanner": "scanner-primary", "fingerprint": "a1769e8abedc9182", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9e9a71c665845993", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ai-gateway/src/handlers/models.ts:287"}, "properties": {"repobilityId": "43441df0c66d974e", "scanner": "scanner-primary", "fingerprint": "9e9a71c665845993", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c899b9815a5f23e1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-gateway/src/handlers/transcription.ts:122"}, "properties": {"repobilityId": "6985276db86d17bd", "scanner": "scanner-primary", "fingerprint": "c899b9815a5f23e1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3fd1d9d8963f9712", "level": "none", "message": {"text": "Commented-code block (15 lines) in packages/screenpipe-mcp/src/index.ts:32"}, "properties": {"repobilityId": "6a3bc64470cedf6d", "scanner": "scanner-primary", "fingerprint": "3fd1d9d8963f9712", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d91660faecfb76a0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/screenpipe-mcp/src/index.ts:230"}, "properties": {"repobilityId": "2c35f9b30339e616", "scanner": "scanner-primary", "fingerprint": "d91660faecfb76a0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d2523d2587ec8072", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/screenpipe-mcp/src/http-server.test.ts:226"}, "properties": {"repobilityId": "064c2c3f9851e38e", "scanner": "scanner-primary", "fingerprint": "d2523d2587ec8072", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7114dbc43e5bb845", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/screenpipe-mcp/src/http-server.ts:190"}, "properties": {"repobilityId": "06a52878346f8025", "scanner": "scanner-primary", "fingerprint": "7114dbc43e5bb845", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1e4997af109b1b4a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/screenpipe-mcp/src/export-video.test.ts:68"}, "properties": {"repobilityId": "55e4f0001352d4b3", "scanner": "scanner-primary", "fingerprint": "1e4997af109b1b4a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-265b11da7dd2bc87", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/e2e/src/suites/api.ts:33"}, "properties": {"repobilityId": "43b49439252121a4", "scanner": "scanner-primary", "fingerprint": "265b11da7dd2bc87", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9815038745ed794a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .github/scripts/e2e/test-lifecycle.ts:108"}, "properties": {"repobilityId": "239acca4f27820a8", "scanner": "scanner-primary", "fingerprint": "9815038745ed794a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-451c889e56208413", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .github/scripts/e2e/test-api.ts:11"}, "properties": {"repobilityId": "88bedff2aecbd3c8", "scanner": "scanner-primary", "fingerprint": "451c889e56208413", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f128a6dbfe636d59", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .github/scripts/e2e/lib.ts:319"}, "properties": {"repobilityId": "19aa34550437a87c", "scanner": "scanner-primary", "fingerprint": "f128a6dbfe636d59", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6ce96fba8bd7f8a6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .github/scripts/e2e/test-windows.ts:46"}, "properties": {"repobilityId": "9b6e54400c67b6a3", "scanner": "scanner-primary", "fingerprint": "6ce96fba8bd7f8a6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-506fbff6d5b5f0f3", "level": "none", "message": {"text": "Commented-code block (5 lines) in ee/sdk/electron/index.js:60"}, "properties": {"repobilityId": "3342a7981b0fde3a", "scanner": "scanner-primary", "fingerprint": "506fbff6d5b5f0f3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-91c6ae8102464e06", "level": "none", "message": {"text": "Commented-code block (6 lines) in ee/sdk/bridges/node-json-session.mjs:81"}, "properties": {"repobilityId": "78b1e5839cda01b8", "scanner": "scanner-primary", "fingerprint": "91c6ae8102464e06", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-05083ca5c864ea93", "level": "none", "message": {"text": "Commented-code block (6 lines) in ee/sdk/Sources/Screenpipe/Resources/screenpipe-node-bridge.mjs:81"}, "properties": {"repobilityId": "d3fd8a45ec1b9dfe", "scanner": "scanner-primary", "fingerprint": "05083ca5c864ea93", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c669ba9e8bce923c", "level": "none", "message": {"text": "Commented-code block (7 lines) in ee/sdk/tauri/index.js:65"}, "properties": {"repobilityId": "04640f021c489af2", "scanner": "scanner-primary", "fingerprint": "c669ba9e8bce923c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a18a160fc5750f9", "level": "none", "message": {"text": "Commented-code block (5 lines) in ee/sdk/__test__/_helpers.mjs:7"}, "properties": {"repobilityId": "597973c1e722ae95", "scanner": "scanner-primary", "fingerprint": "6a18a160fc5750f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-87883eb4596f38fb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 ee/sdk/__test__/_helpers.mjs:94"}, "properties": {"repobilityId": "ac2b24eab68bf4a7", "scanner": "scanner-primary", "fingerprint": "87883eb4596f38fb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ce095ca9669ff55f", "level": "none", "message": {"text": "Commented-code block (5 lines) in ee/sdk/__test__/bridge_telemetry_env.test.mjs:5"}, "properties": {"repobilityId": "0ae3da84ef4e4071", "scanner": "scanner-primary", "fingerprint": "ce095ca9669ff55f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b35d1b3d9e2aa7ef", "level": "none", "message": {"text": "Commented-code block (6 lines) in ee/sdk/__test__/session_events.test.mjs:9"}, "properties": {"repobilityId": "1c5ac57c2d1ae37e", "scanner": "scanner-primary", "fingerprint": "b35d1b3d9e2aa7ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb9339e4ca8ce566", "level": "none", "message": {"text": "Commented-code block (6 lines) in ee/sdk/__test__/recording.test.mjs:9"}, "properties": {"repobilityId": "4454987e4f8c23c1", "scanner": "scanner-primary", "fingerprint": "eb9339e4ca8ce566", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f206beef783db29", "level": "none", "message": {"text": "Commented-code block (5 lines) in ee/sdk/examples/record-with-paired-10s.mjs:5"}, "properties": {"repobilityId": "2ab11d01825d01f2", "scanner": "scanner-primary", "fingerprint": "5f206beef783db29", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c6b2a44d03704ae7", "level": "none", "message": {"text": "Commented-code block (5 lines) in ee/sdk/examples/preflight-and-record.mjs:5"}, "properties": {"repobilityId": "533ca1c80c8c8a93", "scanner": "scanner-primary", "fingerprint": "c6b2a44d03704ae7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f42f704406479f74", "level": "none", "message": {"text": "Commented-code block (6 lines) in ee/sdk/examples/record-with-privacy-filter.mjs:12"}, "properties": {"repobilityId": "de59728fea2754bc", "scanner": "scanner-primary", "fingerprint": "f42f704406479f74", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-861625c304406873", "level": "none", "message": {"text": "Commented-code block (6 lines) in ee/sdk/examples/electron-app/main.js:76"}, "properties": {"repobilityId": "098c51a6458e1160", "scanner": "scanner-primary", "fingerprint": "861625c304406873", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6dbc706eaecc3a02", "level": "none", "message": {"text": "Commented-code block (8 lines) in ee/sdk/examples/tauri-app/vite.config.js:7"}, "properties": {"repobilityId": "c87adce42bf46034", "scanner": "scanner-primary", "fingerprint": "6dbc706eaecc3a02", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9187f17d70e0ee5b", "level": "none", "message": {"text": "Commented-code block (5 lines) in ee/sdk/session/telemetry.js:7"}, "properties": {"repobilityId": "e8a770ad8bd6a3b2", "scanner": "scanner-primary", "fingerprint": "9187f17d70e0ee5b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-955b5fa3bf6ea8bf", "level": "none", "message": {"text": "Commented-code block (6 lines) in ee/sdk/session/telemetry-core.js:9"}, "properties": {"repobilityId": "020871925d094876", "scanner": "scanner-primary", "fingerprint": "955b5fa3bf6ea8bf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5b609fe82290df4f", "level": "none", "message": {"text": "Commented-code block (5 lines) in ee/sdk/session/index.js:119"}, "properties": {"repobilityId": "7e166472557cc663", "scanner": "scanner-primary", "fingerprint": "5b609fe82290df4f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}]}]}