{"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-ae473f2c7073d0f2", "name": "Stray `console.log` in TS/JS \u2014 playwright.config.ts:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 playwright.config.ts:92"}, "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-9505c0da0eb67c82", "name": "Stray `console.log` in TS/JS \u2014 tests/browser/stream-not-found.spec.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/browser/stream-not-found.spec.ts:37"}, "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-692fcfed86e010e6", "name": "Stray `console.log` in TS/JS \u2014 tests/browser/global-setup.ts:84", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/browser/global-setup.ts:84"}, "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-707c28f93eda0e94", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/settings/notifications-settings.tsx:37", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/settings/notifications-settings.tsx:379"}, "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-1b712a5ec3222fcb", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/layout/page-header-tabs.tsx:55", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/layout/page-header-tabs.tsx:55"}, "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-b3a9d4cb263bd65e", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/layout/sidebar/getting-started.tsx:179", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/layout/sidebar/getting-started.tsx:179"}, "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-69de71b74038893c", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/layout/sidebar/sections.tsx:108", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/layout/sidebar/sections.tsx:108"}, "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-5ea1a294cab8fb1e", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/layout/sidebar/sidebar-header.tsx:44", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/layout/sidebar/sidebar-header.tsx:44"}, "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-2e31489be654c1ef", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/layout/sidebar/stream-item.tsx:168", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/layout/sidebar/stream-item.tsx:168"}, "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-07b1285407b65210", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/layout/sidebar/sidebar-editor.tsx:456", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/layout/sidebar/sidebar-editor.tsx:456"}, "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-13658edbae1637a9", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/layout/sidebar/sidebar-actions.tsx:91", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/layout/sidebar/sidebar-actions.tsx:91"}, "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-a8dd4d4d092961e5", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/layout/sidebar/sidebar-footer.tsx:140", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/layout/sidebar/sidebar-footer.tsx:140"}, "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-008e59f8bc4132ef", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/layout/sidebar/section-picker.tsx:86", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/layout/sidebar/section-picker.tsx:86"}, "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-c6788322c0d7acbd", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/thread/stream-panel.tsx:514", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/thread/stream-panel.tsx:514"}, "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-97119e13a81fe1a6", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/thread/responsive-breadcrumbs.tsx:185", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/thread/responsive-breadcrumbs.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-b2bbabe1888f396e", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/thread/breadcrumb-helpers.tsx:73", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/thread/breadcrumb-helpers.tsx:73"}, "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-d3bbffc6326a43d0", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/composer/composer-action-bar.tsx:244", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/composer/composer-action-bar.tsx:244"}, "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-68d2cb7521599c3a", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/composer/message-composer.tsx:1056", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/composer/message-composer.tsx:1056"}, "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-e8dd0ddc2a3190fa", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/notifications/pause-notifications-dial", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/notifications/pause-notifications-dialog.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-cbab20d79b7fbee5", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/stream-settings/members-tab.tsx:145", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/stream-settings/members-tab.tsx:145"}, "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-6d5a738bba99c46e", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/attachment-explorer/explorer-row.tsx:6", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/attachment-explorer/explorer-row.tsx:69"}, "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-f024f6d444614e94", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/attachment-explorer/explorer-filters.t", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/attachment-explorer/explorer-filters.tsx:243"}, "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-f18b0ec5ef04f05b", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/trace/trace-dialog.tsx:152", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/trace/trace-dialog.tsx:152"}, "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-8e39eae51d5ba367", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/saved/saved-suggestion-item.tsx:43", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/saved/saved-suggestion-item.tsx:43"}, "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-996bf2c4a7b3b319", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/saved/saved-edit-dialog.tsx:206", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/saved/saved-edit-dialog.tsx:206"}, "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-380de37576ed7a4c", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/saved/saved-item.tsx:53", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/saved/saved-item.tsx:53"}, "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-bf28aba9f6649882", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/account-switcher/logout-scope-dialog.t", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/account-switcher/logout-scope-dialog.tsx:91"}, "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-cb3c2cf91bdf8259", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/account-switcher/account-switcher-dial", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/account-switcher/account-switcher-dialog.tsx:39"}, "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-311880cf17a00565", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/activity/activity-content.tsx:40", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/activity/activity-content.tsx:40"}, "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-719d87384d0804a5", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/scheduled/scheduled-item.tsx:87", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/scheduled/scheduled-item.tsx:87"}, "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-05728d86147a0516", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/ui/locale-picker.tsx:96", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/ui/locale-picker.tsx:96"}, "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-4ebaecc3c149c2fc", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/ui/user-list-item.tsx:20", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/ui/user-list-item.tsx:20"}, "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-0090c83c97f47c91", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/frontend/src/components/ui/chart.tsx:70", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/frontend/src/components/ui/chart.tsx:70"}, "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-0c201f17bf65bf93", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/ui/searchable-select.tsx:81", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/ui/searchable-select.tsx:81"}, "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-993d9730115735e6", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/conversations/conversation-item.tsx:49", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/conversations/conversation-item.tsx:49"}, "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-1f3d0cae02b63f52", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/agent-session-event.tsx:304", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/agent-session-event.tsx:304"}, "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-cb379f863ac2a479", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/moved-messages-drawer.tsx:78", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/moved-messages-drawer.tsx:78"}, "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-446aa656121f06f3", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/message-link-preview-card.tsx", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/message-link-preview-card.tsx:109"}, "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-7014893361202477", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/active-bot-status-strip.tsx:5", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/active-bot-status-strip.tsx:54"}, "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-371aa372db9175ef", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/message-action-drawer.tsx:183", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/message-action-drawer.tsx:183"}, "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-27615a77640de654", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/reaction-details.tsx:100", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/reaction-details.tsx:100"}, "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-0627d894eea7d7c1", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/e2e-attachment-list.tsx:99", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/e2e-attachment-list.tsx:99"}, "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-23665ccb99d6fef3", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/link-preview-card.tsx:172", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/link-preview-card.tsx:172"}, "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-dc016a464ddf4c58", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/reaction-emoji-picker.tsx:524", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/reaction-emoji-picker.tsx:524"}, "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-8a9e0e7941fd8adb", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/thread-slot.tsx:150", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/thread-slot.tsx:150"}, "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-b0672a6c5ee4c45f", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/thread-card.tsx:103", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/thread-card.tsx:103"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c10331f926cd364d", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/stream-content.tsx:2338", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/stream-content.tsx:2338"}, "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-b17f6136b61338a9", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/attachment-list.tsx:99", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/attachment-list.tsx:99"}, "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-c588453144637b7e", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/conversation-overlay/conversa", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/conversation-overlay/conversation-overlay.tsx:81"}, "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-0b3e8e7a8f0a2214", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/memo-embed/card-body.tsx:67", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/memo-embed/card-body.tsx:67"}, "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-52c430cfead88d74", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/memo-embed/memo-chip.tsx:22", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/memo-embed/memo-chip.tsx:22"}, "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-4df65bca674bc060", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/memo/memo-detail.tsx:132", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/memo/memo-detail.tsx:132"}, "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-75456ff68bb22953", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/search/search-results.tsx:163", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/search/search-results.tsx:163"}, "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-f349fad5a4db0f2a", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/search/search-filter-menu.tsx:240", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/search/search-filter-menu.tsx:240"}, "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-4683ec2210c0cf48", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/quick-switcher/item-list.tsx:115", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/quick-switcher/item-list.tsx:115"}, "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-cdb39fbcec6895da", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/status/status-picker.tsx:270", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/status/status-picker.tsx:270"}, "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-c58c9e5cb7617492", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/editor/attachment-reference-view.tsx:7", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/editor/attachment-reference-view.tsx:72"}, "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-4de5342fee12812a", "name": "TODO/FIXME marker in shipping code \u2014 apps/frontend/src/components/editor/attachment-reference-view.tsx:61", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 apps/frontend/src/components/editor/attachment-reference-view.tsx:61"}, "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-e37f77d04021e23c", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/editor/triggers/command-list.tsx:23", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/editor/triggers/command-list.tsx:23"}, "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-f94fb9d26af55924", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/editor/triggers/status-filter-list.tsx", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/editor/triggers/status-filter-list.tsx:47"}, "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-432ef17b2acaa0b1", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/editor/triggers/mention-list.tsx:55", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/editor/triggers/mention-list.tsx:55"}, "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-2d204b2506aae200", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/editor/triggers/emoji-grid.tsx:273", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/editor/triggers/emoji-grid.tsx:273"}, "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-435598a310651370", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/editor/triggers/filter-type-list.tsx:4", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/editor/triggers/filter-type-list.tsx:49"}, "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-bfd85d4a788409da", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/editor/triggers/memo-suggestion-list.t", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/editor/triggers/memo-suggestion-list.tsx:27"}, "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-ef354e68dbee44fe", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/labels/label-chip.tsx:67", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/labels/label-chip.tsx:67"}, "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-17f9df64adb50c60", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/labels/label-picker.tsx:100", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/labels/label-picker.tsx:100"}, "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-473fa02b845fe921", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/giphy/gif-chip.tsx:23", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/giphy/gif-chip.tsx:23"}, "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-a7c36a61db49cf55", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/workspace-settings/bots-tab.tsx:101", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/workspace-settings/bots-tab.tsx:101"}, "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-139ff2297a051056", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/workspace-settings/user-api-keys-secti", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/workspace-settings/user-api-keys-section.tsx:290"}, "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-beb9268f4300f1a5", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/workspace-settings/users-tab.tsx:190", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/workspace-settings/users-tab.tsx:190"}, "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-a5fb6653abbccd21", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/workspace-settings/bot-channels-sectio", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/workspace-settings/bot-channels-section.tsx:78"}, "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-574f981db902b566", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/workspace-settings/bot-keys-section.ts", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/workspace-settings/bot-keys-section.tsx:270"}, "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-3af935a682120e51", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/ai-usage/budget-controls-panel.tsx:166", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/ai-usage/budget-controls-panel.tsx:166"}, "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-41e046dc771b865d", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/ai-usage/usage-breakdown.tsx:152", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/ai-usage/usage-breakdown.tsx:152"}, "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-69e0a43386969e01", "name": "Stray `console.log` in TS/JS \u2014 apps/frontend/src/contexts/socket-context.tsx:100", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/frontend/src/contexts/socket-context.tsx: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-da4d1a0f24443e23", "name": "Stray `console.log` in TS/JS \u2014 apps/frontend/src/lib/bootstrap-debug.ts:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/frontend/src/lib/bootstrap-debug.ts:66"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b430cca3686292b9", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/lib/markdown/code-block.tsx:158", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/lib/markdown/code-block.tsx:158"}, "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-b333188948250d32", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/frontend/src/lib/markdown/code-block.tsx:213", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/frontend/src/lib/markdown/code-block.tsx:213"}, "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-6a341fe26f41e2fd", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/pages/label-detail.tsx:133", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/pages/label-detail.tsx:133"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0da215a5d0122de6", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/pages/labels.tsx:82", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/pages/labels.tsx:82"}, "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-02f1886cdc20b00c", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/pages/workspace-select.tsx:132", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/pages/workspace-select.tsx:132"}, "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-e86fb5d650168b81", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/pages/stream.tsx:449", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/pages/stream.tsx:449"}, "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-851e1480c34cb2bb", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/pages/memory.tsx:88", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/pages/memory.tsx:88"}, "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-49ca9672cd1267d0", "name": "Stray `console.log` in TS/JS \u2014 apps/control-plane/tests/setup.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/control-plane/tests/setup.ts:29"}, "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-e4582e48633fa5db", "name": "Stray `console.log` in TS/JS \u2014 apps/control-plane/scripts/backfill-workspace-owners.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/control-plane/scripts/backfill-workspace-owners.ts: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-a30a188aa25f7d6b", "name": "Stray `console.log` in TS/JS \u2014 apps/control-plane/scripts/backfill-workos-authz.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/control-plane/scripts/backfill-workos-authz.ts:48"}, "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-d0d265112a7a48d6", "name": "Stray `console.log` in TS/JS \u2014 apps/backend/tests/test-server.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/tests/test-server.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-07fdee7e08ac6a59", "name": "Stray `console.log` in TS/JS \u2014 apps/backend/tests/setup.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/tests/setup.ts:29"}, "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-e4338cbfee1f07f6", "name": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/workos-cleanup-orgs.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/workos-cleanup-orgs.ts:23"}, "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-b88a7aab5c72bd3c", "name": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/test-cost-capture.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/test-cost-capture.ts:23"}, "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-57e357f8626ed1fe", "name": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/add-emoji-groups.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/add-emoji-groups.ts:39"}, "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-16712b4d6748ada7", "name": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/test-idle-timeout.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/test-idle-timeout.ts:26"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6c05fac85dd6259c", "name": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/generate-api-docs.ts:263", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/generate-api-docs.ts:263"}, "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-2b03a4a92ca147ae", "name": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/backfill-thread-names.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/backfill-thread-names.ts:37"}, "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-bfca509e90d78f54", "name": "Stray `console.log` in TS/JS \u2014 apps/backend/evals/run.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/evals/run.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-2da18c9adbd264ca", "name": "Stray `console.log` in TS/JS \u2014 apps/backend/evals/suites/companion/cases.ts:648", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/evals/suites/companion/cases.ts:648"}, "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-9c1337547745bfb8", "name": "Stray `console.log` in TS/JS \u2014 apps/backend/evals/framework/runner.ts:277", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/evals/framework/runner.ts:277"}, "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-413a2bca1680fa4b", "name": "TODO/FIXME marker in shipping code \u2014 apps/backend/src/features/streams/service.ts:1611", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 apps/backend/src/features/streams/service.ts:1611"}, "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-3b375dee96f137f6", "name": "Stray `console.log` in TS/JS \u2014 apps/backend/src/features/attachments/text/parsers/parsers.test.ts:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/src/features/attachments/text/parsers/parsers.test.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-a5151b76559ec6c3", "name": "Stray `console.log` in TS/JS \u2014 apps/public-site/scripts/build-llms.ts:367", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/public-site/scripts/build-llms.ts:367"}, "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-98c301499194c6cc", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/backoffice/src/components/layout/user-menu.tsx:56", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/backoffice/src/components/layout/user-menu.tsx:56"}, "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-2a3c92131de306cb", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/backoffice/src/pages/welcome.tsx:93", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/backoffice/src/pages/welcome.tsx:93"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4d27a1992f27af3d", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/backoffice/src/pages/waitlist.tsx:118", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/backoffice/src/pages/waitlist.tsx:118"}, "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-9a6a9b91ef515a6c", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/backoffice/src/pages/workspaces.tsx:90", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/backoffice/src/pages/workspaces.tsx:90"}, "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-a9611f228f4fc513", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/backoffice/src/pages/invite-workspace-owner.tsx:272", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/backoffice/src/pages/invite-workspace-owner.tsx:272"}, "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-43cb89db5f1176dd", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/backoffice/src/pages/workspace-detail-flags.tsx:157", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/backoffice/src/pages/workspace-detail-flags.tsx:157"}, "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-dd5f2265476f5583", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/backoffice/src/pages/workspace-detail-members.tsx:569", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/backoffice/src/pages/workspace-detail-members.tsx:569"}, "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-ddd5f655f1992d9f", "name": "Stray `console.log` in TS/JS \u2014 scripts/dev-test.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev-test.ts:36"}, "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-eb5efe726c2dd0db", "name": "Stray `console.log` in TS/JS \u2014 scripts/sync-workos-permissions.ts:286", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sync-workos-permissions.ts:286"}, "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-d7039b366ccf38fb", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-migrations.ts:156", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-migrations.ts:156"}, "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-5e6803c95f257b90", "name": "Stray `console.log` in TS/JS \u2014 scripts/dev.ts:162", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev.ts:162"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3f8eeb853accf87f", "name": "Stray `console.log` in TS/JS \u2014 scripts/setup-worktree.ts:110", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup-worktree.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-b8a05b07e949bc13", "name": "Stray `console.log` in TS/JS \u2014 scripts/staging-kv-cleanup.ts:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/staging-kv-cleanup.ts:89"}, "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-5fbfcaa81c6b8a04", "name": "Stray `console.log` in TS/JS \u2014 scripts/analyze-conversation-boundaries.ts:317", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/analyze-conversation-boundaries.ts:317"}, "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-4b2edd3b99c49db0", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-silent.ts:430", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-silent.ts:430"}, "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-1cae41aa98f15b07", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-control-plane.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-control-plane.ts: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-e20f6123be91e8c7", "name": "Stray `console.log` in TS/JS \u2014 scripts/staging-pr.ts:167", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/staging-pr.ts:167"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b0f02bd6a8a2a5ad", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-dockerfile-workspaces.ts:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-dockerfile-workspaces.ts:82"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2a5ef137f0dddcca", "name": "Stray `console.log` in TS/JS \u2014 scripts/grant-platform-role.ts:78", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/grant-platform-role.ts:78"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-892511fe6f9d45a4", "name": "Stray `console.log` in TS/JS \u2014 packages/agent-runtime/src/tools/read-url-tool.test.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/agent-runtime/src/tools/read-url-tool.test.ts:32"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2de556d760868f0a", "name": "Privileged port 12 in use", "shortDescription": {"text": "Privileged port 12 in use"}, "fullDescription": {"text": "Port 12 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "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-d052eecac348b8d3", "name": "Runtime dotenv file present in repo: .env.remote-dev", "shortDescription": {"text": "Runtime dotenv file present in repo: .env.remote-dev"}, "fullDescription": {"text": "`.env.remote-dev` looks like a runtime dotenv file. It contains secret-looking assignments for S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY. Move real values to a secret manager and keep only `.env.example` style templates in source control."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-7ce6ba6ba048ed33", "name": "Insecure pattern 'dangerous_innerhtml' in .coderabbit.yaml:63", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in .coderabbit.yaml:63"}, "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-220a59333ae216d9", "name": "Insecure pattern 'node_child_process' in apps/frontend/vite.config.ts:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in apps/frontend/vite.config.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-d6d2609f9e1c1ca7", "name": "Insecure pattern 'dangerous_innerhtml' in apps/frontend/src/components/ui/chart.tsx:70", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/frontend/src/components/ui/chart.tsx:70"}, "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-5a56508779297eff", "name": "Insecure pattern 'dangerous_innerhtml' in apps/frontend/src/lib/markdown/code-block.tsx:213", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/frontend/src/lib/markdown/code-block.tsx:213"}, "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-9abc6aaa7670ce66", "name": "Possible secret in apps/public-site/src/scripts/playground.ts", "shortDescription": {"text": "Possible secret in apps/public-site/src/scripts/playground.ts"}, "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-db0abde8d3585ad3", "name": "Insecure pattern 'node_child_process' in scripts/test-silent.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/test-silent.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4c8c2d3d97ed543e", "name": "Insecure pattern 'node_child_process' in extensions/pi-remote/src/threa-remote.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in extensions/pi-remote/src/threa-remote.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7a973ec877f6704d", "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-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/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-b1e21e961ae76acc", "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-3614e1d7e453e785", "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-5c448e09bc1f1dcb", "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-cb639d9a10a47b23", "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-5e277b74212e96dc", "name": "Very large file: apps/frontend/src/sync/sync-engine.test.ts (1665 lines)", "shortDescription": {"text": "Very large file: apps/frontend/src/sync/sync-engine.test.ts (1665 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-218e836c414b4ef8", "name": "Very large file: apps/frontend/src/sync/sync-engine.ts (1289 lines)", "shortDescription": {"text": "Very large file: apps/frontend/src/sync/sync-engine.ts (1289 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-f07a05e089a0aa9b", "name": "Very large file: apps/frontend/src/sync/workspace-sync.test.ts (1669 lines)", "shortDescription": {"text": "Very large file: apps/frontend/src/sync/workspace-sync.test.ts (1669 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-65ea5cb08e15b4fe", "name": "Very large file: apps/frontend/src/sync/workspace-sync.ts (2377 lines)", "shortDescription": {"text": "Very large file: apps/frontend/src/sync/workspace-sync.ts (2377 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-f4f9bd2170682334", "name": "Very large file: apps/frontend/src/sync/stream-sync.test.ts (1523 lines)", "shortDescription": {"text": "Very large file: apps/frontend/src/sync/stream-sync.test.ts (1523 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-70c6a13e8ccffce0", "name": "Very large file: apps/frontend/src/components/timeline/message-event.tsx (1822 lines)", "shortDescription": {"text": "Very large file: apps/frontend/src/components/timeline/message-event.tsx (1822 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-3a45dfd5708cda47", "name": "Very large file: apps/frontend/src/components/timeline/stream-content.tsx (2346 lines)", "shortDescription": {"text": "Very large file: apps/frontend/src/components/timeline/stream-content.tsx (2346 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-01b5aec395eb9619", "name": "Very large file: apps/backend/src/server.ts (1252 lines)", "shortDescription": {"text": "Very large file: apps/backend/src/server.ts (1252 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-f7fa4f953526d038", "name": "Very large file: apps/backend/src/features/streams/service.test.ts (1352 lines)", "shortDescription": {"text": "Very large file: apps/backend/src/features/streams/service.test.ts (1352 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-0affda81571198e5", "name": "Very large file: apps/backend/src/features/streams/service.ts (1816 lines)", "shortDescription": {"text": "Very large file: apps/backend/src/features/streams/service.ts (1816 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-2d11269958de0e73", "name": "Very large file: apps/backend/src/features/public-api/handlers.ts (1923 lines)", "shortDescription": {"text": "Very large file: apps/backend/src/features/public-api/handlers.ts (1923 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-04d973372c4c6086", "name": "Very large file: apps/backend/src/features/agents/persona-agent.ts (1249 lines)", "shortDescription": {"text": "Very large file: apps/backend/src/features/agents/persona-agent.ts (1249 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-5b8d5a09de5f9423", "name": "Very large file: apps/backend/src/features/agents/researcher/researcher.ts (1539 lines)", "shortDescription": {"text": "Very large file: apps/backend/src/features/agents/researcher/researcher.ts (1539 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-5421f87395e566f0", "name": "Very large file: apps/backend/src/features/messaging/event-service.ts (1711 lines)", "shortDescription": {"text": "Very large file: apps/backend/src/features/messaging/event-service.ts (1711 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-29d0df6b40302007", "name": "Very large file: extensions/pi-remote/src/threa-remote.ts (2519 lines)", "shortDescription": {"text": "Very large file: extensions/pi-remote/src/threa-remote.ts (2519 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-0445af1f790beab5", "name": "Very large file: packages/types/src/api.ts (2027 lines)", "shortDescription": {"text": "Very large file: packages/types/src/api.ts (2027 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3f02143ce17b7bf9", "name": "Node manifest has dependencies but no lockfile: apps/frontend/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/frontend/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-0b8ccf231177e516", "name": "Node manifest has dependencies but no lockfile: apps/workspace-router/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/workspace-router/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-13280d6b7dd9b875", "name": "Node manifest has dependencies but no lockfile: apps/backoffice-router/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/backoffice-router/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-d18e5c6bb8fe2cf3", "name": "Node manifest has dependencies but no lockfile: apps/db-read-proxy/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/db-read-proxy/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-e8366934a29c2e03", "name": "Node manifest has dependencies but no lockfile: apps/control-plane/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/control-plane/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-921806de15828b00", "name": "Node manifest has dependencies but no lockfile: apps/enclave/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/enclave/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-53a7af2536f80bd8", "name": "Node manifest has dependencies but no lockfile: apps/backend/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/backend/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-9f7899f58ca769c0", "name": "Node manifest has dependencies but no lockfile: apps/public-site/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/public-site/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-17d376e6de519e2c", "name": "Node manifest has dependencies but no lockfile: apps/backoffice/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/backoffice/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-d84319aa5fdc393d", "name": "Node manifest has dependencies but no lockfile: extensions/pi-remote/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: extensions/pi-remote/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-cb3e52667c84fb86", "name": "Node manifest has dependencies but no lockfile: packages/types/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/types/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-7b85b0a5c9a918e4", "name": "Node manifest has dependencies but no lockfile: packages/crypto/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/crypto/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-ce45dd1b8dcb2452", "name": "Node manifest has dependencies but no lockfile: packages/agent-runtime/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/agent-runtime/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-71251830eeed6f98", "name": "Node manifest has dependencies but no lockfile: packages/backend-common/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/backend-common/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-320d5ac2034e70f2", "name": "Node manifest has dependencies but no lockfile: packages/prosemirror/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/prosemirror/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 355 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 296 placeholder/mock markers across 138 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, lockfile. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, 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-cc55229a7a3c078d", "name": "Agent authority lacks a verifier contract: .mcp.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .mcp.json"}, "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-17d866d91a7c451e", "name": "Agent instruction/config may expose a secret: CLAUDE.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: CLAUDE.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-78428a7cacf6d980", "name": "Agent authority lacks a verifier contract: apps/frontend/AGENTS.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: apps/frontend/AGENTS.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-122f91b7f2906dc4", "name": "Agent authority lacks a verifier contract: .claude/settings.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/settings.json"}, "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-cad6bde2ba30f688", "name": "Agent authority lacks a verifier contract: .claude/commands/pr-review-response.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/pr-review-response.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-b328787ff6dd657c", "name": "Commented-code block (6 lines) in playwright.config.ts:72", "shortDescription": {"text": "Commented-code block (6 lines) in playwright.config.ts:72"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0388db36b9f10019", "name": "Commented-code block (6 lines) in tests/browser/sidebar-preview.spec.ts:80", "shortDescription": {"text": "Commented-code block (6 lines) in tests/browser/sidebar-preview.spec.ts:80"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-76e8120fba967a17", "name": "Commented-code block (5 lines) in tests/browser/conversation-overlay.spec.ts:57", "shortDescription": {"text": "Commented-code block (5 lines) in tests/browser/conversation-overlay.spec.ts:57"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a24807ccee72b919", "name": "Commented-code block (8 lines) in tests/browser/reconnect-rehydrate.spec.ts:220", "shortDescription": {"text": "Commented-code block (8 lines) in tests/browser/reconnect-rehydrate.spec.ts:220"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4060ef4844bacea0", "name": "Commented-code block (6 lines) in tests/browser/message-share-cross-stream.spec.ts:211", "shortDescription": {"text": "Commented-code block (6 lines) in tests/browser/message-share-cross-stream.spec.ts:211"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a671c78f60abe8d0", "name": "Commented-code block (5 lines) in tests/browser/e2e-encrypted-scratchpads.spec.ts:148", "shortDescription": {"text": "Commented-code block (5 lines) in tests/browser/e2e-encrypted-scratchpads.spec.ts: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-8cc152d1ab401c52", "name": "Commented-code block (7 lines) in tests/browser/infinite-scroll.spec.ts:88", "shortDescription": {"text": "Commented-code block (7 lines) in tests/browser/infinite-scroll.spec.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-162f2a487e85c291", "name": "Commented-code block (5 lines) in tests/browser/invitation-flow.spec.ts:57", "shortDescription": {"text": "Commented-code block (5 lines) in tests/browser/invitation-flow.spec.ts:57"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a241837c182776e7", "name": "Commented-code block (5 lines) in apps/frontend/vite.config.ts:109", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/vite.config.ts:109"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dfd7e645f2d778f4", "name": "Commented-code block (6 lines) in apps/frontend/public/worklets/pcm16-processor.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/public/worklets/pcm16-processor.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e7b10e051ee73d10", "name": "Commented-code block (5 lines) in apps/frontend/src/main.tsx:40", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/main.tsx:40"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-59ab1a96c6a24d4c", "name": "Commented-code block (9 lines) in apps/frontend/src/sw.ts:50", "shortDescription": {"text": "Commented-code block (9 lines) in apps/frontend/src/sw.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-9805df40072a137b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/frontend/src/sw.ts:142", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/frontend/src/sw.ts:142"}, "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-1b0598a2a19b3bbc", "name": "Commented-code block (8 lines) in apps/frontend/src/stores/stream-store.ts:35", "shortDescription": {"text": "Commented-code block (8 lines) in apps/frontend/src/stores/stream-store.ts:35"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6e13d7227aeb29ec", "name": "Commented-code block (5 lines) in apps/frontend/src/stores/workspace-store.ts:31", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/stores/workspace-store.ts: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-41620062ea6da221", "name": "Commented-code block (7 lines) in apps/frontend/src/stores/e2e-session-store.ts:848", "shortDescription": {"text": "Commented-code block (7 lines) in apps/frontend/src/stores/e2e-session-store.ts:848"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d8bc89044884d9f4", "name": "Commented-code block (5 lines) in apps/frontend/src/sync/stream-sync.ts:162", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/sync/stream-sync.ts:162"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e7b8ccb02e160bad", "name": "Commented-code block (7 lines) in apps/frontend/src/sync/sync-engine.test.ts:639", "shortDescription": {"text": "Commented-code block (7 lines) in apps/frontend/src/sync/sync-engine.test.ts:639"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-469f1e53545347f3", "name": "Commented-code block (5 lines) in apps/frontend/src/sync/sync-engine.ts:137", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/sync/sync-engine.ts:137"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-aab494f8df75142f", "name": "Legacy-named symbol `evt_old` in apps/frontend/src/sync/workspace-sync.test.ts:334", "shortDescription": {"text": "Legacy-named symbol `evt_old` in apps/frontend/src/sync/workspace-sync.test.ts:334"}, "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-86ee2737be27282c", "name": "Commented-code block (5 lines) in apps/frontend/src/sync/workspace-sync.test.ts:797", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/sync/workspace-sync.test.ts:797"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1a6f2535c747e968", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/frontend/src/sync/workspace-sync.test.ts:188", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/frontend/src/sync/workspace-sync.test.ts:188"}, "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-6d51d772fcec3085", "name": "Commented-code block (6 lines) in apps/frontend/src/sync/workspace-sync.ts:329", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/sync/workspace-sync.ts:329"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a9104a06811f257f", "name": "Commented-code block (6 lines) in apps/frontend/src/sync/operation-queue.ts:190", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/sync/operation-queue.ts:190"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c50a5397fec3a588", "name": "Commented-code block (5 lines) in apps/frontend/src/sync/draft-sync.ts:386", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/sync/draft-sync.ts:386"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-316231993ec011ea", "name": "Legacy-named symbol `evt_old` in apps/frontend/src/sync/stream-sync.test.ts:99", "shortDescription": {"text": "Legacy-named symbol `evt_old` in apps/frontend/src/sync/stream-sync.test.ts:99"}, "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-047d9624ee836077", "name": "Commented-code block (7 lines) in apps/frontend/src/sync/stream-sync.test.ts:299", "shortDescription": {"text": "Commented-code block (7 lines) in apps/frontend/src/sync/stream-sync.test.ts:299"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e9629450ef54ae60", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/frontend/src/sync/stream-sync.test.ts:73", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/frontend/src/sync/stream-sync.test.ts:73"}, "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-0eff4c528cf55cd8", "name": "Legacy-named symbol `workspace_old` in apps/frontend/src/auth/context.test.tsx:174", "shortDescription": {"text": "Legacy-named symbol `workspace_old` in apps/frontend/src/auth/context.test.tsx:174"}, "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-addec3d66d641fbc", "name": "Commented-code block (6 lines) in apps/frontend/src/auth/account-scope.test.tsx:8", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/auth/account-scope.test.tsx:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dda6c749b9124b9d", "name": "Commented-code block (5 lines) in apps/frontend/src/auth/context.tsx:43", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/auth/context.tsx:43"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-409699408faa1b1a", "name": "Commented-code block (6 lines) in apps/frontend/src/auth/account-scope.tsx:89", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/auth/account-scope.tsx:89"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eea3227b37ed3ba9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/frontend/src/auth/account-scope.tsx:162", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/frontend/src/auth/account-scope.tsx:162"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-722247d09e7dc51b", "name": "Commented-code block (5 lines) in apps/frontend/src/api/accounts.ts:31", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/api/accounts.ts: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-cd1efc4d8adcf91a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/frontend/src/api/bots.ts:90", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/frontend/src/api/bots.ts:90"}, "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-286b8fd5090b99b6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/frontend/src/api/attachments.ts:82", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/frontend/src/api/attachments.ts:82"}, "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-2db5d78d9029958f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/frontend/src/api/workspaces.ts:128", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/frontend/src/api/workspaces.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-7060fc137a8456bb", "name": "Commented-code block (5 lines) in apps/frontend/src/components/error-boundary.tsx:37", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/error-boundary.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-597bd9c811f3d8b3", "name": "Commented-code block (7 lines) in apps/frontend/src/components/image-gallery.tsx:183", "shortDescription": {"text": "Commented-code block (7 lines) in apps/frontend/src/components/image-gallery.tsx:183"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-36bb4ffb5868fe37", "name": "Commented-code block (8 lines) in apps/frontend/src/components/layout/app-shell.tsx:215", "shortDescription": {"text": "Commented-code block (8 lines) in apps/frontend/src/components/layout/app-shell.tsx:215"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1f4cc79401c00aa9", "name": "Commented-code block (5 lines) in apps/frontend/src/components/layout/sidebar/sections.tsx:124", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/layout/sidebar/sections.tsx: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-2733aab19d0ef937", "name": "Legacy-named symbol `dm_old` in apps/frontend/src/components/layout/sidebar/resolve-sections.test.ts:137", "shortDescription": {"text": "Legacy-named symbol `dm_old` in apps/frontend/src/components/layout/sidebar/resolve-sections.test.ts:137"}, "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-449fc5132a33347f", "name": "Commented-code block (5 lines) in apps/frontend/src/components/layout/sidebar/sidebar.tsx:399", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/layout/sidebar/sidebar.tsx:399"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-465de0e968edc1e0", "name": "Commented-code block (6 lines) in apps/frontend/src/components/layout/sidebar/use-urgency-tracking.ts:25", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/layout/sidebar/use-urgency-tracking.ts:25"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f171541efc4b866c", "name": "Commented-code block (5 lines) in apps/frontend/src/components/layout/sidebar/utils.test.ts:165", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/layout/sidebar/utils.test.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-b6d5cb1d77c9f0b1", "name": "Commented-code block (5 lines) in apps/frontend/src/components/layout/sidebar/utils.ts:31", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/layout/sidebar/utils.ts: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-6c27838b855c0ea6", "name": "Commented-code block (6 lines) in apps/frontend/src/components/layout/sidebar/sidebar-footer.tsx:332", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/layout/sidebar/sidebar-footer.tsx:332"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a8179769cb4376b8", "name": "Commented-code block (5 lines) in apps/frontend/src/components/thread/stream-panel.tsx:175", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/thread/stream-panel.tsx:175"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-838ae7b892d6695e", "name": "Commented-code block (6 lines) in apps/frontend/src/components/composer/mic-button.tsx:12", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/composer/mic-button.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-f67a4e66fe6979df", "name": "Commented-code block (5 lines) in apps/frontend/src/components/composer/attachment-pill.tsx:79", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/composer/attachment-pill.tsx:79"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-15e595ea9b33610d", "name": "Commented-code block (5 lines) in apps/frontend/src/components/composer/scheduled-messages-picker.tsx:77", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/composer/scheduled-messages-picker.tsx: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-fcdd73d69a9c425b", "name": "Commented-code block (5 lines) in apps/frontend/src/components/composer/floating-composer-shell.tsx:22", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/composer/floating-composer-shell.tsx:22"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cad8b041f911d514", "name": "Commented-code block (9 lines) in apps/frontend/src/components/composer/message-composer.tsx:313", "shortDescription": {"text": "Commented-code block (9 lines) in apps/frontend/src/components/composer/message-composer.tsx:313"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-38df8e7c3cea5ee7", "name": "Commented-code block (5 lines) in apps/frontend/src/components/stream-settings/tool-policy-picker.tsx:10", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/stream-settings/tool-policy-picker.tsx:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-07585d4858701ffb", "name": "Commented-code block (5 lines) in apps/frontend/src/components/attachment-explorer/attachment-explorer.integration.test.", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/attachment-explorer/attachment-explorer.integration.test.tsx:121"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ac2df3d108604897", "name": "Commented-code block (7 lines) in apps/frontend/src/components/attachment-explorer/explorer-shell.tsx:39", "shortDescription": {"text": "Commented-code block (7 lines) in apps/frontend/src/components/attachment-explorer/explorer-shell.tsx:39"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0ffaea999e533cb1", "name": "Commented-code block (11 lines) in apps/frontend/src/components/trace/trace-step.tsx:435", "shortDescription": {"text": "Commented-code block (11 lines) in apps/frontend/src/components/trace/trace-step.tsx:435"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b9de3e024055189e", "name": "Commented-code block (6 lines) in apps/frontend/src/components/saved/saved-edit-dialog.tsx:83", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/saved/saved-edit-dialog.tsx:83"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-79f04e5d150e47eb", "name": "Commented-code block (5 lines) in apps/frontend/src/components/saved/saved-item.tsx:37", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/saved/saved-item.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-d8acadbb481b3fdd", "name": "Commented-code block (7 lines) in apps/frontend/src/components/encryption/pin-unlock-modal.test.tsx:46", "shortDescription": {"text": "Commented-code block (7 lines) in apps/frontend/src/components/encryption/pin-unlock-modal.test.tsx:46"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3c1a39a553ceb1dd", "name": "Commented-code block (5 lines) in apps/frontend/src/components/scheduled/scheduled-item.tsx:36", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/scheduled/scheduled-item.tsx:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7e812b6a1706c7b2", "name": "Commented-code block (5 lines) in apps/frontend/src/components/scheduled/scheduled-edit-dialog.tsx:145", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/scheduled/scheduled-edit-dialog.tsx:145"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6f1ff169fac0d99e", "name": "Commented-code block (9 lines) in apps/frontend/src/components/ui/responsive-mode.tsx:7", "shortDescription": {"text": "Commented-code block (9 lines) in apps/frontend/src/components/ui/responsive-mode.tsx: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-b1249e19da55905e", "name": "Commented-code block (5 lines) in apps/frontend/src/components/ui/responsive-dialog.tsx:145", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/ui/responsive-dialog.tsx:145"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b66e50b6fa9f4bf3", "name": "Commented-code block (5 lines) in apps/frontend/src/components/ui/searchable-select.tsx:133", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/ui/searchable-select.tsx:133"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c3115e0eaaaedea4", "name": "Commented-code block (6 lines) in apps/frontend/src/components/timeline/event-item.tsx:111", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/timeline/event-item.tsx: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-8f99c6d9eef3e9e4", "name": "Commented-code block (5 lines) in apps/frontend/src/components/timeline/event-list.tsx:789", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/timeline/event-list.tsx:789"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1e18029454c81e52", "name": "Commented-code block (11 lines) in apps/frontend/src/components/timeline/message-event.tsx:319", "shortDescription": {"text": "Commented-code block (11 lines) in apps/frontend/src/components/timeline/message-event.tsx:319"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6b6b3b50da17fe4c", "name": "Commented-code block (5 lines) in apps/frontend/src/components/timeline/message-input.test.tsx:47", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/timeline/message-input.test.tsx:47"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-82400bb12ac5310b", "name": "Commented-code block (6 lines) in apps/frontend/src/components/timeline/unread-divider.tsx:8", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/timeline/unread-divider.tsx:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6e6e17c615b5f637", "name": "Commented-code block (6 lines) in apps/frontend/src/components/timeline/message-context-menu.tsx:82", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/timeline/message-context-menu.tsx: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-8437bc617864898b", "name": "Commented-code block (6 lines) in apps/frontend/src/components/timeline/link-preview-body.test.tsx:78", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/timeline/link-preview-body.test.tsx:78"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-78458ac9013990b7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/frontend/src/components/timeline/stream-content.test.ts:291", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/frontend/src/components/timeline/stream-content.test.ts:291"}, "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-fbb197f489e444dc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/frontend/src/components/timeline/e2e-attachment-list.tsx:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/frontend/src/components/timeline/e2e-attachment-list.tsx:23"}, "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-b5dbd28faa5e874e", "name": "Commented-code block (5 lines) in apps/frontend/src/components/timeline/react-virtuoso-patch.test.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/timeline/react-virtuoso-patch.test.ts: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-0b1a798474755f46", "name": "Commented-code block (6 lines) in apps/frontend/src/components/timeline/message-input.tsx:305", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/timeline/message-input.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-658efaae64ba4f23", "name": "Commented-code block (5 lines) in apps/frontend/src/components/timeline/stream-content.tsx:285", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/timeline/stream-content.tsx:285"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b2f7dbd21f192811", "name": "Commented-code block (5 lines) in apps/frontend/src/components/timeline/unsent-message-edit-form.tsx:35", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/timeline/unsent-message-edit-form.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-95e3aae86e4944d8", "name": "Commented-code block (5 lines) in apps/frontend/src/components/timeline/attachment-list.tsx:213", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/timeline/attachment-list.tsx: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-7faa36c190d59923", "name": "Commented-code block (6 lines) in apps/frontend/src/components/timeline/conversation-overlay/conversation-overlay.tsx:53", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/timeline/conversation-overlay/conversation-overlay.tsx:53"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e7828987ed11ede8", "name": "Commented-code block (6 lines) in apps/frontend/src/components/search/use-message-search.ts:92", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/search/use-message-search.ts:92"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-707917efc79edb70", "name": "Commented-code block (8 lines) in apps/frontend/src/components/quick-switcher/quick-switcher.tsx:162", "shortDescription": {"text": "Commented-code block (8 lines) in apps/frontend/src/components/quick-switcher/quick-switcher.tsx:162"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0c237d60203e6dfb", "name": "Commented-code block (5 lines) in apps/frontend/src/components/quick-switcher/commands.test.ts:75", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/quick-switcher/commands.test.ts:75"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a85a5d270a0c2961", "name": "Commented-code block (5 lines) in apps/frontend/src/components/gallery/zoomable-image.tsx:40", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/gallery/zoomable-image.tsx:40"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2069feebceade084", "name": "Commented-code block (6 lines) in apps/frontend/src/components/gallery/markdown-viewer.tsx:16", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/gallery/markdown-viewer.tsx:16"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1b8bdf16e0c27f11", "name": "Commented-code block (5 lines) in apps/frontend/src/components/shared-messages/card-body.tsx:32", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/shared-messages/card-body.tsx: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-90217c1a3d30ce60", "name": "Commented-code block (6 lines) in apps/frontend/src/components/editor/editor-behaviors.ts:19", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/editor/editor-behaviors.ts: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-c69fb5220a1ba598", "name": "Commented-code block (8 lines) in apps/frontend/src/components/editor/atom-aware-input-rules-handler.test.ts:56", "shortDescription": {"text": "Commented-code block (8 lines) in apps/frontend/src/components/editor/atom-aware-input-rules-handler.test.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-1203d4019777820d", "name": "Commented-code block (5 lines) in apps/frontend/src/components/editor/atom-aware-input-rules.ts:38", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/editor/atom-aware-input-rules.ts:38"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bfc5c2cee6df33f5", "name": "Commented-code block (5 lines) in apps/frontend/src/components/editor/editor-toolbar.tsx:715", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/editor/editor-toolbar.tsx:715"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6d4e5e7b003e4e19", "name": "Commented-code block (6 lines) in apps/frontend/src/components/editor/multiline-blocks.ts:721", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/editor/multiline-blocks.ts:721"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-60cba4a7e0dff894", "name": "Commented-code block (5 lines) in apps/frontend/src/components/editor/rich-editor.tsx:369", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/editor/rich-editor.tsx:369"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a4ccec1833529246", "name": "Commented-code block (5 lines) in apps/frontend/src/components/editor/giphy-picker-dialog.tsx:220", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/editor/giphy-picker-dialog.tsx:220"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fd7e91b42af89dec", "name": "Commented-code block (6 lines) in apps/frontend/src/components/editor/editor-extensions.ts:102", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/editor/editor-extensions.ts:102"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dd785e784ba658e3", "name": "Commented-code block (5 lines) in apps/frontend/src/components/editor/triggers/date-filter-list.tsx:23", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/editor/triggers/date-filter-list.tsx:23"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d3506b324e5e1deb", "name": "Commented-code block (6 lines) in apps/frontend/src/components/editor/triggers/use-suggestion.tsx:82", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/editor/triggers/use-suggestion.tsx: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-b872f37988290524", "name": "Commented-code block (6 lines) in apps/frontend/src/components/editor/triggers/in-channel-filter-extension.ts:50", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/editor/triggers/in-channel-filter-extension.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-62330c4ab2f89bfa", "name": "Commented-code block (5 lines) in apps/frontend/src/components/editor/triggers/in-user-filter-extension.ts:49", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/editor/triggers/in-user-filter-extension.ts:49"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-53d51ffbfb7b49c5", "name": "Commented-code block (9 lines) in apps/frontend/src/components/giphy/giphy-image.tsx:48", "shortDescription": {"text": "Commented-code block (9 lines) in apps/frontend/src/components/giphy/giphy-image.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-583084a5590eac5e", "name": "Commented-code block (6 lines) in apps/frontend/src/contexts/coordinated-loading-context.test.tsx:431", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/contexts/coordinated-loading-context.test.tsx:431"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-296c080e28ffe033", "name": "Commented-code block (6 lines) in apps/frontend/src/contexts/coordinated-loading-context.tsx:124", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/contexts/coordinated-loading-context.tsx: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-2148a57f9b275e86", "name": "Commented-code block (6 lines) in apps/frontend/src/contexts/socket-context.tsx:74", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/contexts/socket-context.tsx: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-9e902e5602ba0b4d", "name": "Commented-code block (5 lines) in apps/frontend/src/lib/notification-intent.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/lib/notification-intent.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-20736f631e3886f4", "name": "Commented-code block (6 lines) in apps/frontend/src/lib/cached-ws-config.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/lib/cached-ws-config.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c5490945bc8b9b45", "name": "Commented-code block (6 lines) in apps/frontend/src/lib/last-workspace.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/lib/last-workspace.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7e9dc06fb19e85a1", "name": "Commented-code block (8 lines) in apps/frontend/src/lib/app-update-version.ts:1", "shortDescription": {"text": "Commented-code block (8 lines) in apps/frontend/src/lib/app-update-version.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-686bdf8c388414ff", "name": "Commented-code block (5 lines) in apps/frontend/src/lib/cached-user.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/lib/cached-user.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3b510a77d981225b", "name": "Commented-code block (5 lines) in apps/frontend/src/lib/crypto/message-envelope.ts:217", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/lib/crypto/message-envelope.ts:217"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b4d1591f2ec3338b", "name": "Commented-code block (7 lines) in apps/frontend/src/lib/crypto/attachment-crypto.ts:41", "shortDescription": {"text": "Commented-code block (7 lines) in apps/frontend/src/lib/crypto/attachment-crypto.ts:41"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d991f4d38ccc9962", "name": "Commented-code block (5 lines) in apps/frontend/src/lib/markdown/use-block-collapse.ts:62", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/lib/markdown/use-block-collapse.ts:62"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d75b2b9e8260af41", "name": "Commented-code block (5 lines) in apps/frontend/src/lib/markdown/components.tsx:139", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/lib/markdown/components.tsx: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-6de413412b92b935", "name": "Legacy-named symbol `msg_legacy` in apps/frontend/src/lib/markdown/collapse-cache.test.ts:60", "shortDescription": {"text": "Legacy-named symbol `msg_legacy` in apps/frontend/src/lib/markdown/collapse-cache.test.ts:60"}, "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-02b890f22c21c497", "name": "Commented-code block (6 lines) in apps/frontend/src/pages/drafts.tsx:50", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/pages/drafts.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-422e28018b345c5f", "name": "Legacy-named symbol `stream_old` in apps/frontend/src/pages/label-detail.test.tsx:104", "shortDescription": {"text": "Legacy-named symbol `stream_old` in apps/frontend/src/pages/label-detail.test.tsx:104"}, "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-74c55ca71c83fe22", "name": "Commented-code block (5 lines) in apps/frontend/src/pages/memory.test.tsx:170", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/pages/memory.test.tsx:170"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a9a80059308f53ca", "name": "Commented-code block (6 lines) in apps/frontend/src/pages/workspace-select.tsx:26", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/pages/workspace-select.tsx:26"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fe014044884b779a", "name": "Commented-code block (8 lines) in apps/frontend/src/pages/workspace-layout.tsx:284", "shortDescription": {"text": "Commented-code block (8 lines) in apps/frontend/src/pages/workspace-layout.tsx:284"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b9104693e81e1ff3", "name": "Commented-code block (11 lines) in apps/frontend/src/pages/stream.tsx:327", "shortDescription": {"text": "Commented-code block (11 lines) in apps/frontend/src/pages/stream.tsx:327"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2195d58ad5847141", "name": "Commented-code block (5 lines) in apps/frontend/src/pages/memory.tsx:53", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/pages/memory.tsx:53"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b74d1f718c52c2d0", "name": "Commented-code block (7 lines) in apps/frontend/src/hooks/use-unread-divider.ts:125", "shortDescription": {"text": "Commented-code block (7 lines) in apps/frontend/src/hooks/use-unread-divider.ts:125"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-520173163967d850", "name": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-conversations.ts:77", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-conversations.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-348ed12e06c9ea71", "name": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-draft-composer.ts:140", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-draft-composer.ts:140"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fd0b62a1a49f4822", "name": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-panel-layout.ts:8", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-panel-layout.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b2163d8aee8e3950", "name": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-decrypt-stream-names.test.tsx:14", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-decrypt-stream-names.test.tsx:14"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fb2eed745834af37", "name": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-visual-viewport.ts:78", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-visual-viewport.ts:78"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2e8353a5793cf8fc", "name": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-visual-viewport.test.ts:134", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-visual-viewport.test.ts:134"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f232a03971ba587b", "name": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-stream-search.ts:195", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-stream-search.ts:195"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2a5a944cdff2d18b", "name": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-shared-message-source.ts:149", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-shared-message-source.ts:149"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a4c515062208239c", "name": "Commented-code block (6 lines) in apps/frontend/src/hooks/use-decrypted-step-content.ts:56", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/hooks/use-decrypted-step-content.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-853fc1ab207d1729", "name": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-coordinated-stream-queries.ts:48", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-coordinated-stream-queries.ts: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-cf48773c5219e43d", "name": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-swipe-action.ts:137", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-swipe-action.ts:137"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7c44df77a382029b", "name": "Commented-code block (7 lines) in apps/frontend/src/hooks/use-stash-composer.ts:64", "shortDescription": {"text": "Commented-code block (7 lines) in apps/frontend/src/hooks/use-stash-composer.ts:64"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7017a729fcafd3b3", "name": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-element-width.ts:19", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-element-width.ts: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-5a9a85e903e2d982", "name": "Commented-code block (7 lines) in apps/frontend/src/hooks/use-labels.ts:193", "shortDescription": {"text": "Commented-code block (7 lines) in apps/frontend/src/hooks/use-labels.ts:193"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2d9423cd7bcc95e5", "name": "Commented-code block (7 lines) in apps/frontend/src/hooks/use-scroll-behavior.ts:181", "shortDescription": {"text": "Commented-code block (7 lines) in apps/frontend/src/hooks/use-scroll-behavior.ts:181"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1780d452fcfffb2a", "name": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-sidebar-swipe.ts:287", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-sidebar-swipe.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-d550df311fb64ed0", "name": "Commented-code block (7 lines) in apps/frontend/src/hooks/use-create-encrypted-scratchpad.ts:47", "shortDescription": {"text": "Commented-code block (7 lines) in apps/frontend/src/hooks/use-create-encrypted-scratchpad.ts:47"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3cdae8bd29dc5850", "name": "Commented-code block (6 lines) in apps/frontend/src/hooks/use-events.test.ts:119", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/hooks/use-events.test.ts: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}}, {"id": "scanner-4a2a6c562048aa4a", "name": "Commented-code block (6 lines) in apps/frontend/src/hooks/use-push-notifications.ts:275", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/hooks/use-push-notifications.ts:275"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-260bd259fddd04b9", "name": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-draft-message.ts:124", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-draft-message.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-6a7232491c54fd44", "name": "Commented-code block (7 lines) in apps/frontend/src/hooks/use-saved.ts:151", "shortDescription": {"text": "Commented-code block (7 lines) in apps/frontend/src/hooks/use-saved.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-0161cd98416879d4", "name": "Commented-code block (8 lines) in apps/frontend/src/hooks/use-queue-draft-message.ts:86", "shortDescription": {"text": "Commented-code block (8 lines) in apps/frontend/src/hooks/use-queue-draft-message.ts:86"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-24342bd9772cd04d", "name": "Commented-code block (6 lines) in apps/frontend/src/hooks/use-activity.ts:57", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/hooks/use-activity.ts:57"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-71d186223fdda94e", "name": "Legacy-named symbol `stream_old` in apps/frontend/src/hooks/use-labels.test.ts:192", "shortDescription": {"text": "Legacy-named symbol `stream_old` in apps/frontend/src/hooks/use-labels.test.ts:192"}, "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-8cebb8818681a2fc", "name": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-all-drafts.ts:283", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-all-drafts.ts:283"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b33237520a45d1f4", "name": "Legacy-named symbol `stream_old` in apps/frontend/src/hooks/use-draft-message.test.ts:103", "shortDescription": {"text": "Legacy-named symbol `stream_old` in apps/frontend/src/hooks/use-draft-message.test.ts:103"}, "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-7d38bc17787ef0d4", "name": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-draft-message.test.ts:505", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-draft-message.test.ts:505"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8e80087d53bfa6ed", "name": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-message-queue.ts:225", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-message-queue.ts:225"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3dd37942b7be33db", "name": "Legacy-named symbol `event_old` in apps/frontend/src/hooks/use-unread-counts.test.tsx:53", "shortDescription": {"text": "Legacy-named symbol `event_old` in apps/frontend/src/hooks/use-unread-counts.test.tsx:53"}, "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-777064a0d605c237", "name": "Commented-code block (6 lines) in apps/frontend/src/hooks/use-composer-height-publish.test.tsx:123", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/hooks/use-composer-height-publish.test.tsx:123"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a972ec038c7d3d5f", "name": "Commented-code block (6 lines) in apps/frontend/src/hooks/use-draft-composer.test.ts:755", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/hooks/use-draft-composer.test.ts:755"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c8346352f23eb8ef", "name": "Commented-code block (12 lines) in apps/frontend/src/hooks/use-composer-height-publish.ts:66", "shortDescription": {"text": "Commented-code block (12 lines) in apps/frontend/src/hooks/use-composer-height-publish.ts:66"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eb510163791fb94b", "name": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-attachments.ts:91", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-attachments.ts:91"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-01d588b8f97f678b", "name": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-long-press.ts:68", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-long-press.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-0810b394cfd7061b", "name": "Commented-code block (8 lines) in apps/frontend/src/hooks/use-decrypted-message-content.ts:73", "shortDescription": {"text": "Commented-code block (8 lines) in apps/frontend/src/hooks/use-decrypted-message-content.ts:73"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f44aff7f7219688f", "name": "Commented-code block (6 lines) in apps/frontend/src/hooks/use-stream-or-draft.ts:497", "shortDescription": {"text": "Commented-code block (6 lines) in apps/frontend/src/hooks/use-stream-or-draft.ts:497"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-295da9227fc66584", "name": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-events.ts:295", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-events.ts:295"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-215b6adccf992266", "name": "Commented-code block (7 lines) in apps/frontend/src/hooks/use-timeline-scroll.test.tsx:151", "shortDescription": {"text": "Commented-code block (7 lines) in apps/frontend/src/hooks/use-timeline-scroll.test.tsx: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-02d8c585c7789611", "name": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-scroll-behavior.test.tsx:135", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-scroll-behavior.test.tsx:135"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-96fa2f837a5e2f14", "name": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-decrypted-draft-previews.test.ts:112", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-decrypted-draft-previews.test.ts:112"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fc323dadc4820d20", "name": "Commented-code block (7 lines) in apps/frontend/src/hooks/use-scheduled.ts:199", "shortDescription": {"text": "Commented-code block (7 lines) in apps/frontend/src/hooks/use-scheduled.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-8f2a8891e1558346", "name": "Commented-code block (7 lines) in apps/frontend/src/hooks/use-discuss-with-ariadne.ts:57", "shortDescription": {"text": "Commented-code block (7 lines) in apps/frontend/src/hooks/use-discuss-with-ariadne.ts:57"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d221f830282571e5", "name": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-voice-dictation.ts:186", "shortDescription": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-voice-dictation.ts:186"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-004b2a680e0aa645", "name": "Commented-code block (12 lines) in apps/frontend/src/hooks/use-timeline-scroll.ts:135", "shortDescription": {"text": "Commented-code block (12 lines) in apps/frontend/src/hooks/use-timeline-scroll.ts:135"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d41221c5cb83cfd9", "name": "Commented-code block (9 lines) in apps/frontend/src/db/database.ts:319", "shortDescription": {"text": "Commented-code block (9 lines) in apps/frontend/src/db/database.ts:319"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a114f17281cf612e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/workspace-router/src/index.test.ts:71", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/workspace-router/src/index.test.ts:71"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-69d97a580c40615d", "name": "Commented-code block (7 lines) in apps/workspace-router/src/index.ts:113", "shortDescription": {"text": "Commented-code block (7 lines) in apps/workspace-router/src/index.ts:113"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-24704c2fbda88573", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/workspace-router/src/index.ts:93", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/workspace-router/src/index.ts:93"}, "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-731143046b716542", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backoffice-router/src/index.test.ts:48", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backoffice-router/src/index.test.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-4cb06e27289191e6", "name": "Commented-code block (5 lines) in apps/backoffice-router/src/index.ts:66", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backoffice-router/src/index.ts:66"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-aca7cead8da61d5e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backoffice-router/src/index.ts:33", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backoffice-router/src/index.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-9c2c82b79b76d9fc", "name": "Commented-code block (5 lines) in apps/control-plane/tests/integration/workos-authz-backfill.test.ts:32", "shortDescription": {"text": "Commented-code block (5 lines) in apps/control-plane/tests/integration/workos-authz-backfill.test.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-93191d6b55295f3e", "name": "Commented-code block (9 lines) in apps/control-plane/tests/integration/workos-authz-admin-service.test.ts:255", "shortDescription": {"text": "Commented-code block (9 lines) in apps/control-plane/tests/integration/workos-authz-admin-service.test.ts:255"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b44c2024527220e7", "name": "Commented-code block (5 lines) in apps/control-plane/tests/e2e/accounts.test.ts:143", "shortDescription": {"text": "Commented-code block (5 lines) in apps/control-plane/tests/e2e/accounts.test.ts:143"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6696148fd04938f0", "name": "Commented-code block (5 lines) in apps/control-plane/src/app.ts:55", "shortDescription": {"text": "Commented-code block (5 lines) in apps/control-plane/src/app.ts:55"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9bc47a6e738d748d", "name": "Commented-code block (7 lines) in apps/control-plane/src/server.ts:158", "shortDescription": {"text": "Commented-code block (7 lines) in apps/control-plane/src/server.ts:158"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-97a5d135820897f1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/control-plane/src/features/integrations/handlers.ts:56", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/control-plane/src/features/integrations/handlers.ts:56"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7dd90408ca09685f", "name": "Commented-code block (5 lines) in apps/control-plane/src/features/workos-authz/fan-out.ts:53", "shortDescription": {"text": "Commented-code block (5 lines) in apps/control-plane/src/features/workos-authz/fan-out.ts:53"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ab97d2b84887897a", "name": "Commented-code block (6 lines) in apps/control-plane/src/features/auth/stub-handlers.ts:66", "shortDescription": {"text": "Commented-code block (6 lines) in apps/control-plane/src/features/auth/stub-handlers.ts:66"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6cc397df8c956923", "name": "Commented-code block (5 lines) in apps/control-plane/src/features/auth/handlers.ts:118", "shortDescription": {"text": "Commented-code block (5 lines) in apps/control-plane/src/features/auth/handlers.ts:118"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1ed606bd498d02b1", "name": "Commented-code block (5 lines) in apps/control-plane/src/features/accounts/service.test.ts:103", "shortDescription": {"text": "Commented-code block (5 lines) in apps/control-plane/src/features/accounts/service.test.ts:103"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e7efd39919b0a42e", "name": "Commented-code block (6 lines) in apps/control-plane/src/features/accounts/service.ts:77", "shortDescription": {"text": "Commented-code block (6 lines) in apps/control-plane/src/features/accounts/service.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-8b8c894b90f145ef", "name": "Commented-code block (5 lines) in apps/enclave/src/index.ts:56", "shortDescription": {"text": "Commented-code block (5 lines) in apps/enclave/src/index.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-0404e35f275f4f64", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/enclave/src/register.ts:14", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/enclave/src/register.ts:14"}, "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-4848b3aad6205791", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/enclave/src/llm.ts:68", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/enclave/src/llm.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-31c2b6d9cb9ae5d7", "name": "Commented-code block (7 lines) in apps/enclave/src/claim-loop.ts:52", "shortDescription": {"text": "Commented-code block (7 lines) in apps/enclave/src/claim-loop.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-adc3eb4889e3de39", "name": "Commented-code block (6 lines) in apps/enclave/src/agent/trace-observer.ts:131", "shortDescription": {"text": "Commented-code block (6 lines) in apps/enclave/src/agent/trace-observer.ts:131"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9be4c09b784197e7", "name": "Commented-code block (9 lines) in apps/enclave/src/agent/run-turn.ts:179", "shortDescription": {"text": "Commented-code block (9 lines) in apps/enclave/src/agent/run-turn.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-835ab09ad814e383", "name": "Legacy-named symbol `msg_old` in apps/enclave/src/agent/run-turn.test.ts:520", "shortDescription": {"text": "Legacy-named symbol `msg_old` in apps/enclave/src/agent/run-turn.test.ts:520"}, "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-7fe3df819ac11f0f", "name": "Commented-code block (6 lines) in apps/enclave/src/agent/tools.ts:87", "shortDescription": {"text": "Commented-code block (6 lines) in apps/enclave/src/agent/tools.ts:87"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-514a0f7a1d9a4733", "name": "Commented-code block (7 lines) in apps/backend/eslint.config.js:59", "shortDescription": {"text": "Commented-code block (7 lines) in apps/backend/eslint.config.js: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-c1e2b0541931a8e3", "name": "Commented-code block (8 lines) in apps/backend/tests/integration/sync-catch-up.test.ts:246", "shortDescription": {"text": "Commented-code block (8 lines) in apps/backend/tests/integration/sync-catch-up.test.ts:246"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-52d3f7cf06fa6fe8", "name": "Commented-code block (13 lines) in apps/backend/tests/integration/message-move.test.ts:55", "shortDescription": {"text": "Commented-code block (13 lines) in apps/backend/tests/integration/message-move.test.ts:55"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7b2d0e776b17db94", "name": "Commented-code block (5 lines) in apps/backend/tests/integration/cursor-lock.test.ts:654", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/tests/integration/cursor-lock.test.ts:654"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-37c3b60493e3971e", "name": "Commented-code block (5 lines) in apps/backend/tests/integration/push.test.ts:1184", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/tests/integration/push.test.ts:1184"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5586788ffc6580e4", "name": "Legacy-named symbol `queue_old` in apps/backend/tests/integration/queue-repository.test.ts:788", "shortDescription": {"text": "Legacy-named symbol `queue_old` in apps/backend/tests/integration/queue-repository.test.ts:788"}, "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-11d6e360801bbe06", "name": "Commented-code block (5 lines) in apps/backend/tests/integration/thread-summary.test.ts:352", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/tests/integration/thread-summary.test.ts:352"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-39ceef257430d563", "name": "Commented-code block (6 lines) in apps/backend/tests/integration/prune-legacy-counter-entries.test.ts:7", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/tests/integration/prune-legacy-counter-entries.test.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-5a2dec2f2beb9df3", "name": "Commented-code block (6 lines) in apps/backend/tests/e2e/bot-runtime-websocket.test.ts:128", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/tests/e2e/bot-runtime-websocket.test.ts:128"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-16116ae1bee9a2d9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/scripts/add-emoji-groups.ts:40", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/scripts/add-emoji-groups.ts:40"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1fcf4e10ab00be0b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/evals/suites/companion/cases.ts:646", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/evals/suites/companion/cases.ts:646"}, "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-607c22d71962a1b4", "name": "Commented-code block (8 lines) in apps/backend/src/socket.ts:128", "shortDescription": {"text": "Commented-code block (8 lines) in apps/backend/src/socket.ts:128"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bc146bac893428e5", "name": "Commented-code block (5 lines) in apps/backend/src/app.ts:76", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/app.ts: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-dd78b42c11b89d78", "name": "Commented-code block (6 lines) in apps/backend/src/server.ts:288", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/server.ts:288"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0f42d0e08c37e241", "name": "Commented-code block (6 lines) in apps/backend/src/routes.ts:318", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/routes.ts:318"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-40d130055072ca7c", "name": "Commented-code block (5 lines) in apps/backend/src/middleware/workspace-permission.ts:31", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/middleware/workspace-permission.ts: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-416b45f56a51e640", "name": "Commented-code block (6 lines) in apps/backend/src/middleware/public-api-auth.ts:69", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/middleware/public-api-auth.ts:69"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8d4e524ed758a705", "name": "Commented-code block (9 lines) in apps/backend/src/lib/schemas.ts:46", "shortDescription": {"text": "Commented-code block (9 lines) in apps/backend/src/lib/schemas.ts:46"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1652238e9ef911dd", "name": "Legacy-named symbol `bot_old` in apps/backend/src/lib/outbox/broadcast-handler.test.ts:588", "shortDescription": {"text": "Legacy-named symbol `bot_old` in apps/backend/src/lib/outbox/broadcast-handler.test.ts:588"}, "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-c04561824a1ebcd4", "name": "Commented-code block (5 lines) in apps/backend/src/lib/outbox/delivery-groups.ts:259", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/lib/outbox/delivery-groups.ts:259"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-61383a0176ffd15a", "name": "Commented-code block (7 lines) in apps/backend/src/lib/outbox/delivery-groups.test.ts:44", "shortDescription": {"text": "Commented-code block (7 lines) in apps/backend/src/lib/outbox/delivery-groups.test.ts:44"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a1e861ebf77746ec", "name": "Commented-code block (6 lines) in apps/backend/src/lib/outbox/repository.ts:709", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/lib/outbox/repository.ts:709"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9b167543cbefa1d3", "name": "Commented-code block (6 lines) in apps/backend/src/lib/queue/token-pool-repository.ts:118", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/lib/queue/token-pool-repository.ts:118"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f612d6e26a8c7f81", "name": "Commented-code block (6 lines) in apps/backend/src/features/user-e2e-keys/handlers.ts:6", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/features/user-e2e-keys/handlers.ts: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-01c5a21ec9ed5299", "name": "Commented-code block (5 lines) in apps/backend/src/features/streams/policy-repository.ts:48", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/streams/policy-repository.ts: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-7df508ca647134d0", "name": "Legacy-named symbol `evt_old` in apps/backend/src/features/streams/service.test.ts:1252", "shortDescription": {"text": "Legacy-named symbol `evt_old` in apps/backend/src/features/streams/service.test.ts:1252"}, "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-3b503fbc59d7fbb7", "name": "Commented-code block (5 lines) in apps/backend/src/features/streams/service.test.ts:36", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/streams/service.test.ts:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0769bc83f38d92a1", "name": "Commented-code block (7 lines) in apps/backend/src/features/streams/repository.ts:521", "shortDescription": {"text": "Commented-code block (7 lines) in apps/backend/src/features/streams/repository.ts:521"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ad253c42c3f985e1", "name": "Commented-code block (6 lines) in apps/backend/src/features/streams/handlers.ts:537", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/features/streams/handlers.ts:537"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-54acd9bc6c1ed3b1", "name": "Commented-code block (6 lines) in apps/backend/src/features/streams/service.ts:606", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/features/streams/service.ts:606"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6d2569ca3b044529", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/src/features/saved-messages/view.ts:12", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/src/features/saved-messages/view.ts:12"}, "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-2f038d8767568efa", "name": "Legacy-named symbol `remq_old` in apps/backend/src/features/saved-messages/service.test.ts:408", "shortDescription": {"text": "Legacy-named symbol `remq_old` in apps/backend/src/features/saved-messages/service.test.ts:408"}, "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-fe13e0e9c8b8ff98", "name": "Commented-code block (5 lines) in apps/backend/src/features/saved-messages/handlers.ts:27", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/saved-messages/handlers.ts:27"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-46e3d15bb834d20d", "name": "Legacy-named symbol `remq_old` in apps/backend/src/features/saved-messages/repository.test.ts:82", "shortDescription": {"text": "Legacy-named symbol `remq_old` in apps/backend/src/features/saved-messages/repository.test.ts:82"}, "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-550c364e13769d24", "name": "Commented-code block (5 lines) in apps/backend/src/features/emoji/emoji.test.ts:126", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/emoji/emoji.test.ts:126"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e3f545b82e0b023b", "name": "Commented-code block (7 lines) in apps/backend/src/features/voice-transcription/config.ts:48", "shortDescription": {"text": "Commented-code block (7 lines) in apps/backend/src/features/voice-transcription/config.ts: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-aec97f1f3af8e439", "name": "Commented-code block (6 lines) in apps/backend/src/features/voice-transcription/realtime-gateway.ts:153", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/features/voice-transcription/realtime-gateway.ts:153"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-caca4cc80c1ea635", "name": "Commented-code block (5 lines) in apps/backend/src/features/voice-transcription/polish.test.ts:123", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/voice-transcription/polish.test.ts:123"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bc181d8b2514c425", "name": "Commented-code block (6 lines) in apps/backend/src/features/voice-transcription/transcription/realtime-deepgram.ts:199", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/features/voice-transcription/transcription/realtime-deepgram.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-0c59083eb18f00b9", "name": "Commented-code block (5 lines) in apps/backend/src/features/sync/reconciliation-worker.ts:45", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/sync/reconciliation-worker.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-ebddd1e38f2b7189", "name": "Commented-code block (5 lines) in apps/backend/src/features/sync/repository.ts:254", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/sync/repository.ts:254"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3e2128ebcbf7fa20", "name": "Commented-code block (7 lines) in apps/backend/src/features/sync/service.ts:39", "shortDescription": {"text": "Commented-code block (7 lines) in apps/backend/src/features/sync/service.ts:39"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-14b3627579c75395", "name": "Commented-code block (7 lines) in apps/backend/src/features/push/outbox-handler.ts:37", "shortDescription": {"text": "Commented-code block (7 lines) in apps/backend/src/features/push/outbox-handler.ts: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-ac46ae7e2e3d1467", "name": "Commented-code block (11 lines) in apps/backend/src/features/push/service.ts:585", "shortDescription": {"text": "Commented-code block (11 lines) in apps/backend/src/features/push/service.ts:585"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f40735794b2c915d", "name": "Commented-code block (8 lines) in apps/backend/src/features/workspaces/user-repository.ts:125", "shortDescription": {"text": "Commented-code block (8 lines) in apps/backend/src/features/workspaces/user-repository.ts:125"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e681ed51ba4d025d", "name": "Commented-code block (5 lines) in apps/backend/src/features/workspaces/handlers.ts:232", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/workspaces/handlers.ts:232"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-26f0a25ad81743fe", "name": "Commented-code block (5 lines) in apps/backend/src/features/memos/service.ts:270", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/memos/service.ts:270"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-df3d00f8fcd01d78", "name": "Commented-code block (5 lines) in apps/backend/src/features/activity/service.ts:44", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/activity/service.ts:44"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-85fa77cb8e3d911e", "name": "Commented-code block (7 lines) in apps/backend/src/features/enclave-runtimes/session-handlers.ts:732", "shortDescription": {"text": "Commented-code block (7 lines) in apps/backend/src/features/enclave-runtimes/session-handlers.ts:732"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-180515694e545860", "name": "Commented-code block (6 lines) in apps/backend/src/features/enclave-runtimes/claim-service.ts:166", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/features/enclave-runtimes/claim-service.ts:166"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fc4e175b30e8b39e", "name": "Commented-code block (9 lines) in apps/backend/src/features/enclave-runtimes/handlers.ts:156", "shortDescription": {"text": "Commented-code block (9 lines) in apps/backend/src/features/enclave-runtimes/handlers.ts:156"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-46e10726becc5631", "name": "Commented-code block (6 lines) in apps/backend/src/features/enclave-runtimes/dispatch/enclave-dispatch-handler.ts:106", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/features/enclave-runtimes/dispatch/enclave-dispatch-handler.ts:106"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-42d2c468a7df84ca", "name": "Commented-code block (5 lines) in apps/backend/src/features/enclave-runtimes/dispatch/request-builder.ts:104", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/enclave-runtimes/dispatch/request-builder.ts:104"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c69393e23a0ad323", "name": "Commented-code block (5 lines) in apps/backend/src/features/conversations/boundary-extraction-service.ts:59", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/conversations/boundary-extraction-service.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-8a1febdad7e12823", "name": "Commented-code block (6 lines) in apps/backend/src/features/conversations/boundary-extraction/llm-extractor.ts:195", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/features/conversations/boundary-extraction/llm-extractor.ts:195"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2d7bb144d3b548c2", "name": "Commented-code block (5 lines) in apps/backend/src/features/drafts/service.ts:115", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/drafts/service.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-83aa164ce83803ff", "name": "Legacy-named symbol `rt_old` in apps/backend/src/features/workspace-integrations/linear-oauth.test.ts:127", "shortDescription": {"text": "Legacy-named symbol `rt_old` in apps/backend/src/features/workspace-integrations/linear-oauth.test.ts:127"}, "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-88e432a4e2e13d90", "name": "Commented-code block (6 lines) in apps/backend/src/features/public-api/claim-context.test.ts:13", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/features/public-api/claim-context.test.ts:13"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-df2c147f1470a998", "name": "Commented-code block (5 lines) in apps/backend/src/features/public-api/routes.ts:46", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/public-api/routes.ts:46"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-514c696cda928bd9", "name": "Commented-code block (9 lines) in apps/backend/src/features/public-api/handlers.ts:510", "shortDescription": {"text": "Commented-code block (9 lines) in apps/backend/src/features/public-api/handlers.ts:510"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-18e783f140d3e079", "name": "Commented-code block (5 lines) in apps/backend/src/features/agents/conversation-summary-service.test.ts:32", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/agents/conversation-summary-service.test.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-08e82216c6bdacd2", "name": "Commented-code block (5 lines) in apps/backend/src/features/agents/persona-agent-worker.ts:61", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/agents/persona-agent-worker.ts:61"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f22f691851992d96", "name": "Commented-code block (6 lines) in apps/backend/src/features/agents/mention-invoke-outbox-handler.ts:64", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/features/agents/mention-invoke-outbox-handler.ts:64"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-875a7551755cb646", "name": "Legacy-named symbol `session_old` in apps/backend/src/features/agents/message-mutation-outbox-handler.test.ts:81", "shortDescription": {"text": "Legacy-named symbol `session_old` in apps/backend/src/features/agents/message-mutation-outbox-handler.test.ts:81"}, "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-843755c2820b9863", "name": "Commented-code block (6 lines) in apps/backend/src/features/agents/conversation-summary-service.ts:47", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/features/agents/conversation-summary-service.ts:47"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8ff5e1d1f253c9a8", "name": "Commented-code block (6 lines) in apps/backend/src/features/agents/context-builder.ts:432", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/features/agents/context-builder.ts:432"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bb939ac584049f05", "name": "Commented-code block (8 lines) in apps/backend/src/features/agents/persona-agent.ts:302", "shortDescription": {"text": "Commented-code block (8 lines) in apps/backend/src/features/agents/persona-agent.ts:302"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ddf610a1df3f90f6", "name": "Commented-code block (6 lines) in apps/backend/src/features/agents/enclave-system-prompt.ts:63", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/features/agents/enclave-system-prompt.ts:63"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-baf3644f9bd2744c", "name": "Commented-code block (5 lines) in apps/backend/src/features/agents/trace-emitter.ts:246", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/agents/trace-emitter.ts:246"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c79ebeb2687a550c", "name": "Commented-code block (5 lines) in apps/backend/src/features/agents/persona-repository.ts:72", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/agents/persona-repository.ts:72"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-00f45db11d6da3c8", "name": "Commented-code block (7 lines) in apps/backend/src/features/agents/companion/strip-inaccessible-refs.ts:121", "shortDescription": {"text": "Commented-code block (7 lines) in apps/backend/src/features/agents/companion/strip-inaccessible-refs.ts:121"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-42874754a46add6c", "name": "Commented-code block (5 lines) in apps/backend/src/features/agents/companion/cross-surface-stitch.ts:105", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/agents/companion/cross-surface-stitch.ts:105"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2dd3ef51bb2f36f0", "name": "Commented-code block (5 lines) in apps/backend/src/features/agents/companion/context.ts:164", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/agents/companion/context.ts:164"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5bd2559c3ec864d7", "name": "Commented-code block (6 lines) in apps/backend/src/features/agents/runtime/session-trace-sink.ts:57", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/features/agents/runtime/session-trace-sink.ts:57"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-55c109378e9c26f0", "name": "Commented-code block (5 lines) in apps/backend/src/features/agents/researcher/researcher.ts:345", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/agents/researcher/researcher.ts:345"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e4769f145de626f4", "name": "Commented-code block (5 lines) in apps/backend/src/features/agents/researcher/context-formatter.ts:118", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/agents/researcher/context-formatter.ts:118"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b5dda729226ae56f", "name": "Commented-code block (6 lines) in apps/backend/src/features/agents/context-bag/resolve.ts:155", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/features/agents/context-bag/resolve.ts:155"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-20dc42e896fbf367", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/src/features/agents/context-bag/resolve.ts:122", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/src/features/agents/context-bag/resolve.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-f7e1d16cdb06a7db", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/src/features/agents/context-bag/precompute-service.ts:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/src/features/agents/context-bag/precompute-service.ts:79"}, "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-6f2c740db8954a73", "name": "Commented-code block (5 lines) in apps/backend/src/features/agents/context-bag/fetch-stream-bag.ts:128", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/agents/context-bag/fetch-stream-bag.ts:128"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0b764815b30f00e7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/src/features/agents/context-bag/types.ts:95", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/src/features/agents/context-bag/types.ts:95"}, "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-bec9bfc1bf3e1d48", "name": "Legacy-named symbol `msg_old` in apps/backend/src/features/agents/context-bag/resolvers/thread-resolver.test.ts:210", "shortDescription": {"text": "Legacy-named symbol `msg_old` in apps/backend/src/features/agents/context-bag/resolvers/thread-resolver.test.ts:210"}, "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-15359869141bfe92", "name": "Commented-code block (5 lines) in apps/backend/src/features/agents/context-bag/resolvers/thread-resolver.test.ts:222", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/agents/context-bag/resolvers/thread-resolver.test.ts:222"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-af9adca5e108cde6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/src/features/agents/context-bag/resolvers/thread-resolver.tes", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/src/features/agents/context-bag/resolvers/thread-resolver.test.ts:162"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-55b67d3b6356fddd", "name": "Commented-code block (5 lines) in apps/backend/src/features/agents/context-bag/resolvers/thread-resolver.ts:78", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/agents/context-bag/resolvers/thread-resolver.ts:78"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-11c677e9b38978b1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/src/features/agents/context-bag/resolvers/thread-resolver.ts:", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/src/features/agents/context-bag/resolvers/thread-resolver.ts:64"}, "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-d961685ced8b9823", "name": "Commented-code block (7 lines) in apps/backend/src/features/messaging/event-service.test.ts:247", "shortDescription": {"text": "Commented-code block (7 lines) in apps/backend/src/features/messaging/event-service.test.ts:247"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7c469577fce02245", "name": "Commented-code block (7 lines) in apps/backend/src/features/messaging/index.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in apps/backend/src/features/messaging/index.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-43fb08ea25de292f", "name": "Commented-code block (7 lines) in apps/backend/src/features/messaging/repository.ts:516", "shortDescription": {"text": "Commented-code block (7 lines) in apps/backend/src/features/messaging/repository.ts:516"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-166fee31694488e8", "name": "Commented-code block (5 lines) in apps/backend/src/features/messaging/handlers.ts:22", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/messaging/handlers.ts:22"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-06172128c513e37f", "name": "Commented-code block (6 lines) in apps/backend/src/features/messaging/repository.test.ts:86", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/features/messaging/repository.test.ts:86"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0ba2949e5616749c", "name": "Commented-code block (5 lines) in apps/backend/src/features/messaging/event-service.ts:276", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/messaging/event-service.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-a9413fe80ad1702a", "name": "Commented-code block (5 lines) in apps/backend/src/features/messaging/sharing/access-check.test.ts:164", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/messaging/sharing/access-check.test.ts:164"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-aa729e2f8d17bc25", "name": "Commented-code block (5 lines) in apps/backend/src/features/messaging/sharing/outbox-handler.ts:73", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/messaging/sharing/outbox-handler.ts:73"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8971e05d070d125b", "name": "Commented-code block (5 lines) in apps/backend/src/features/messaging/sharing/hydration.test.ts:217", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/messaging/sharing/hydration.test.ts:217"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c784574c5078f8ab", "name": "Commented-code block (5 lines) in apps/backend/src/features/messaging/sharing/hydration.ts:204", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/messaging/sharing/hydration.ts:204"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f9683af7918dc486", "name": "Commented-code block (7 lines) in apps/backend/src/features/messaging/sharing/service.ts:163", "shortDescription": {"text": "Commented-code block (7 lines) in apps/backend/src/features/messaging/sharing/service.ts:163"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b01cf2ed595783a5", "name": "Commented-code block (7 lines) in apps/backend/src/features/workspace-authz/service.ts:77", "shortDescription": {"text": "Commented-code block (7 lines) in apps/backend/src/features/workspace-authz/service.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-dca29c6548fcaf9c", "name": "Commented-code block (7 lines) in apps/backend/src/features/labels/service.ts:309", "shortDescription": {"text": "Commented-code block (7 lines) in apps/backend/src/features/labels/service.ts:309"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2f7490655697b197", "name": "Commented-code block (6 lines) in apps/backend/src/features/link-previews/github-preview.ts:15", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/features/link-previews/github-preview.ts:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-98ba851d5f08e980", "name": "Commented-code block (9 lines) in apps/backend/src/features/link-previews/worker.ts:282", "shortDescription": {"text": "Commented-code block (9 lines) in apps/backend/src/features/link-previews/worker.ts:282"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-de0e42ce4fe85bd8", "name": "Commented-code block (5 lines) in apps/backend/src/features/attachments/text/parsers/code-parser.ts:131", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/attachments/text/parsers/code-parser.ts:131"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5e851b48f3e97dfc", "name": "Commented-code block (5 lines) in apps/backend/src/features/bot-runtimes/socket-handler.ts:34", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/bot-runtimes/socket-handler.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-f99a6cd938511909", "name": "Legacy-named symbol `bot_old` in apps/backend/src/features/bot-runtimes/service.test.ts:232", "shortDescription": {"text": "Legacy-named symbol `bot_old` in apps/backend/src/features/bot-runtimes/service.test.ts:232"}, "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-e6a7e93dcbd172a2", "name": "Commented-code block (6 lines) in apps/backend/src/features/bot-runtimes/repository.ts:416", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/features/bot-runtimes/repository.ts:416"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6b932008d5e4a83a", "name": "Commented-code block (6 lines) in apps/backend/src/features/bot-runtimes/service.ts:141", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/features/bot-runtimes/service.ts:141"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4fdd09b34426187b", "name": "Commented-code block (6 lines) in apps/backend/src/features/scheduled-messages/service.test.ts:250", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/features/scheduled-messages/service.test.ts:250"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bdaa5209343f7f16", "name": "Commented-code block (8 lines) in apps/backend/src/features/scheduled-messages/repository.test.ts:214", "shortDescription": {"text": "Commented-code block (8 lines) in apps/backend/src/features/scheduled-messages/repository.test.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-8ca8b2720c6ad237", "name": "Commented-code block (5 lines) in apps/backend/src/features/scheduled-messages/service.ts:122", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/features/scheduled-messages/service.ts:122"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ba7f9d5b3d58927c", "name": "Commented-code block (7 lines) in apps/backoffice/src/components/ui/responsive-alert-dialog.tsx:27", "shortDescription": {"text": "Commented-code block (7 lines) in apps/backoffice/src/components/ui/responsive-alert-dialog.tsx:27"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ec166ef7f964ed22", "name": "Commented-code block (5 lines) in scripts/dev-test.ts:213", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/dev-test.ts: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-ef511fb609fd3a33", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sync-workos-permissions.ts:82", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sync-workos-permissions.ts:82"}, "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-c661a6d94fb27834", "name": "Commented-code block (5 lines) in scripts/dev.ts:366", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/dev.ts:366"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-957b0afaa993d5c9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/staging-kv-cleanup.ts:61", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/staging-kv-cleanup.ts:61"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-759f1b9dd9de1c2e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/analyze-conversation-boundaries.ts:41", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/analyze-conversation-boundaries.ts:41"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f4eaa45b31f4365b", "name": "Commented-code block (5 lines) in scripts/staging-pr.ts:162", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/staging-pr.ts:162"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4d1420d7a897aeab", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/staging-pr.ts:492", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/staging-pr.ts:492"}, "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-2c7deef4565fcd13", "name": "Commented-code block (5 lines) in extensions/pi-remote/src/threa-remote.ts:239", "shortDescription": {"text": "Commented-code block (5 lines) in extensions/pi-remote/src/threa-remote.ts:239"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-150f6e950cd08ddb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 extensions/pi-remote/src/threa-remote.ts:1202", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 extensions/pi-remote/src/threa-remote.ts:1202"}, "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-043d2db01000e927", "name": "Commented-code block (5 lines) in extensions/pi-remote/src/threa-remote.test.ts:586", "shortDescription": {"text": "Commented-code block (5 lines) in extensions/pi-remote/src/threa-remote.test.ts:586"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8da4644ab3a69d2a", "name": "Commented-code block (5 lines) in packages/types/src/feature-flags.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/types/src/feature-flags.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dfa97689b1eb6112", "name": "Commented-code block (6 lines) in packages/types/src/workspace-settings.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in packages/types/src/workspace-settings.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c4149c79f619ebb", "name": "Commented-code block (6 lines) in packages/types/src/sidebar.ts:251", "shortDescription": {"text": "Commented-code block (6 lines) in packages/types/src/sidebar.ts:251"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-47c9553c61e1752c", "name": "Commented-code block (6 lines) in packages/types/src/user-status.ts:7", "shortDescription": {"text": "Commented-code block (6 lines) in packages/types/src/user-status.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-74cfff3a47c7a491", "name": "Commented-code block (8 lines) in packages/types/src/preferences.ts:122", "shortDescription": {"text": "Commented-code block (8 lines) in packages/types/src/preferences.ts:122"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e4d6d8fb3f061cfa", "name": "Commented-code block (5 lines) in packages/types/src/constants.ts:24", "shortDescription": {"text": "Commented-code block (5 lines) in packages/types/src/constants.ts:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-462662804cb36cae", "name": "Commented-code block (7 lines) in packages/types/src/work-schedule.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in packages/types/src/work-schedule.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fc3aa6fe8e9745a5", "name": "Commented-code block (6 lines) in packages/agent-runtime/src/logger.ts:19", "shortDescription": {"text": "Commented-code block (6 lines) in packages/agent-runtime/src/logger.ts: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-7013a36307e51c0f", "name": "Commented-code block (6 lines) in packages/agent-runtime/src/runtime/agent-runtime.ts:512", "shortDescription": {"text": "Commented-code block (6 lines) in packages/agent-runtime/src/runtime/agent-runtime.ts:512"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-28c048482ae49f04", "name": "Legacy-named symbol `msg_unused` in packages/agent-runtime/src/runtime/agent-runtime.test.ts:49", "shortDescription": {"text": "Legacy-named symbol `msg_unused` in packages/agent-runtime/src/runtime/agent-runtime.test.ts:49"}, "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-ef19791b6e0e1a95", "name": "Commented-code block (7 lines) in packages/agent-runtime/src/runtime/enclave-runtime.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in packages/agent-runtime/src/runtime/enclave-runtime.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-45142bf8bf9a25b8", "name": "Commented-code block (7 lines) in packages/agent-runtime/src/runtime/turn-driver.ts:14", "shortDescription": {"text": "Commented-code block (7 lines) in packages/agent-runtime/src/runtime/turn-driver.ts:14"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d4439e8c6da53e58", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/agent-runtime/src/tools/read-url-tool.ts:172", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/agent-runtime/src/tools/read-url-tool.ts:172"}, "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-383ccf729ec1403e", "name": "Commented-code block (7 lines) in packages/backend-common/src/cookies.ts:53", "shortDescription": {"text": "Commented-code block (7 lines) in packages/backend-common/src/cookies.ts:53"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-76f08ab1a2cecf05", "name": "Commented-code block (10 lines) in packages/backend-common/src/auth/auth-service.stub.ts:4", "shortDescription": {"text": "Commented-code block (10 lines) in packages/backend-common/src/auth/auth-service.stub.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3b949ad3f3513980", "name": "Commented-code block (6 lines) in packages/backend-common/src/db/index.ts:107", "shortDescription": {"text": "Commented-code block (6 lines) in packages/backend-common/src/db/index.ts:107"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-02a378c2781801dd", "name": "Commented-code block (5 lines) in packages/prosemirror/src/markdown.ts:130", "shortDescription": {"text": "Commented-code block (5 lines) in packages/prosemirror/src/markdown.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-3b5eba59879008c9", "name": "104 env vars used in code but missing from .env.example", "shortDescription": {"text": "104 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `AI_EXTRACTION_MODEL`, `AI_NAMING_MODEL`, `ALLOWED_REDIRECT_DOMAIN`, `ATTACHMENT_MALWARE_SCAN_ENABLED`, `AUTH_RATE_LIMIT_MAX`, `BACKEND_BASE_URL`, `BASE_REF`, `BUILD_HASH` + 96 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c81181621ca8f3fc", "name": "Frontend route `/w/:workspaceId/*` has no Link/navigate to it \u2014 apps/frontend/src/components/attachment-explorer/attachm", "shortDescription": {"text": "Frontend route `/w/:workspaceId/*` has no Link/navigate to it \u2014 apps/frontend/src/components/attachment-explorer/attachment-explorer.integration.test.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2cb3cf91ab663dec", "name": "Frontend route `/w/:workspaceId/memos/:memoId` has no Link/navigate to it \u2014 apps/frontend/src/routes/index.test.tsx", "shortDescription": {"text": "Frontend route `/w/:workspaceId/memos/:memoId` has no Link/navigate to it \u2014 apps/frontend/src/routes/index.test.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c065289f0abab1fd", "name": "Frontend route `/w/:workspaceId/memory` has no Link/navigate to it \u2014 apps/frontend/src/pages/memory.test.tsx", "shortDescription": {"text": "Frontend route `/w/:workspaceId/memory` has no Link/navigate to it \u2014 apps/frontend/src/pages/memory.test.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-103427ad252a701f", "name": "Frontend route `/w/:workspaceId/labels/:labelId` has no Link/navigate to it \u2014 apps/frontend/src/pages/label-detail.test.", "shortDescription": {"text": "Frontend route `/w/:workspaceId/labels/:labelId` has no Link/navigate to it \u2014 apps/frontend/src/pages/label-detail.test.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-94354e0be28916f0", "name": "Frontend route `/workspaces/:id/members` has no Link/navigate to it \u2014 apps/backoffice/src/pages/workspace-detail-members", "shortDescription": {"text": "Frontend route `/workspaces/:id/members` has no Link/navigate to it \u2014 apps/backoffice/src/pages/workspace-detail-members.test.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-81df3796f24b0659", "name": "Dangling fetch: GET https://jsonplaceholder.typicode.com/users (apps/frontend/src/components/editor/multiline-blocks.tes", "shortDescription": {"text": "Dangling fetch: GET https://jsonplaceholder.typicode.com/users (apps/frontend/src/components/editor/multiline-blocks.test.ts:535)"}, "fullDescription": {"text": "`apps/frontend/src/components/editor/multiline-blocks.test.ts:535` calls `GET https://jsonplaceholder.typicode.com/users` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/jsonplaceholder.typicode.com/users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ae388250b6d89156", "name": "Dangling fetch: GET /version.json (apps/frontend/src/hooks/use-app-update.ts:108)", "shortDescription": {"text": "Dangling fetch: GET /version.json (apps/frontend/src/hooks/use-app-update.ts:108)"}, "fullDescription": {"text": "`apps/frontend/src/hooks/use-app-update.ts:108` calls `GET /version.json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/version.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-97325a51f28cd794", "name": "Dangling fetch: GET /api/data (apps/backend/evals/suites/companion/cases.ts:646)", "shortDescription": {"text": "Dangling fetch: GET /api/data (apps/backend/evals/suites/companion/cases.ts:646)"}, "fullDescription": {"text": "`apps/backend/evals/suites/companion/cases.ts:646` calls `GET /api/data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/data`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1160a8e3a9a5babe", "name": "Dangling fetch: GET http://${MINIO_HOST}:${MINIO_PORT}/minio/health/live (scripts/dev.ts:240)", "shortDescription": {"text": "Dangling fetch: GET http://${MINIO_HOST}:${MINIO_PORT}/minio/health/live (scripts/dev.ts:240)"}, "fullDescription": {"text": "`scripts/dev.ts:240` calls `GET http://${MINIO_HOST}:${MINIO_PORT}/minio/health/live` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/<p>:/<p>/minio/health/live`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7b3b737f319fff81", "name": "Dangling fetch: POST https://api.tavily.com/search (packages/agent-runtime/src/tools/web-search-tool.ts:98)", "shortDescription": {"text": "Dangling fetch: POST https://api.tavily.com/search (packages/agent-runtime/src/tools/web-search-tool.ts:98)"}, "fullDescription": {"text": "`packages/agent-runtime/src/tools/web-search-tool.ts:98` calls `POST https://api.tavily.com/search` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.tavily.com/search`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7e3f71caf6c981e5", "name": "Unused endpoint: GET /api/accounts", "shortDescription": {"text": "Unused endpoint: GET /api/accounts"}, "fullDescription": {"text": "`apps/frontend/src/api/accounts.ts` declares `GET /api/accounts` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6f43abfdadc7e9ca", "name": "Unused endpoint: POST /api/accounts/remove", "shortDescription": {"text": "Unused endpoint: POST /api/accounts/remove"}, "fullDescription": {"text": "`apps/frontend/src/api/accounts.ts` declares `POST /api/accounts/remove` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-23a8949f07e01898", "name": "Unused endpoint: POST /api/auth/magic/send", "shortDescription": {"text": "Unused endpoint: POST /api/auth/magic/send"}, "fullDescription": {"text": "`apps/frontend/src/pages/add-account.tsx` declares `POST /api/auth/magic/send` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1bb3714794b14146", "name": "Unused endpoint: POST /query", "shortDescription": {"text": "Unused endpoint: POST /query"}, "fullDescription": {"text": "`apps/db-read-proxy/src/app.ts` declares `POST /query` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-948b9665910224cb", "name": "Unused endpoint: GET /api/auth/login", "shortDescription": {"text": "Unused endpoint: GET /api/auth/login"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `GET /api/auth/login` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-44636634a2e382d1", "name": "Unused endpoint: ALL /api/auth/callback", "shortDescription": {"text": "Unused endpoint: ALL /api/auth/callback"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `ALL /api/auth/callback` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8d0ebcc45f7aa63f", "name": "Unused endpoint: GET /api/auth/logout", "shortDescription": {"text": "Unused endpoint: GET /api/auth/logout"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `GET /api/auth/logout` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f3552364f856ea66", "name": "Unused endpoint: POST /api/auth/magic/verify", "shortDescription": {"text": "Unused endpoint: POST /api/auth/magic/verify"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `POST /api/auth/magic/verify` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-acc49e9d7a4e06af", "name": "Unused endpoint: POST /api/waitlist", "shortDescription": {"text": "Unused endpoint: POST /api/waitlist"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `POST /api/waitlist` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5b698aba957581b9", "name": "Unused endpoint: GET /test-auth-login", "shortDescription": {"text": "Unused endpoint: GET /test-auth-login"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `GET /test-auth-login` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d3bb83b4c3e7ebaa", "name": "Unused endpoint: POST /test-auth-login", "shortDescription": {"text": "Unused endpoint: POST /test-auth-login"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `POST /test-auth-login` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-add853373e1a15fb", "name": "Unused endpoint: POST /api/dev/login", "shortDescription": {"text": "Unused endpoint: POST /api/dev/login"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `POST /api/dev/login` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ee4aa5ddab88c9dc", "name": "Unused endpoint: GET /api/auth/me", "shortDescription": {"text": "Unused endpoint: GET /api/auth/me"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `GET /api/auth/me` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0a56f9e3411f1566", "name": "Unused endpoint: GET /api/integrations/github/callback", "shortDescription": {"text": "Unused endpoint: GET /api/integrations/github/callback"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `GET /api/integrations/github/callback` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ca2cd240d8a7b70a", "name": "Unused endpoint: GET /api/integrations/linear/callback", "shortDescription": {"text": "Unused endpoint: GET /api/integrations/linear/callback"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `GET /api/integrations/linear/callback` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6873451af2b51a32", "name": "Unused endpoint: GET /api/accounts/resolve", "shortDescription": {"text": "Unused endpoint: GET /api/accounts/resolve"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `GET /api/accounts/resolve` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c6edbb61fe040027", "name": "Unused endpoint: POST /api/accounts/switch", "shortDescription": {"text": "Unused endpoint: POST /api/accounts/switch"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `POST /api/accounts/switch` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2750fce66c46963f", "name": "Unused endpoint: GET /api/workspaces", "shortDescription": {"text": "Unused endpoint: GET /api/workspaces"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `GET /api/workspaces` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-33f9e977f636cde7", "name": "Unused endpoint: POST /api/workspaces", "shortDescription": {"text": "Unused endpoint: POST /api/workspaces"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `POST /api/workspaces` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cffb14b87ab683f5", "name": "Unused endpoint: GET /api/regions", "shortDescription": {"text": "Unused endpoint: GET /api/regions"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `GET /api/regions` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-328e362b14848ecc", "name": "Unused endpoint: POST /api/invitations/:id/accept", "shortDescription": {"text": "Unused endpoint: POST /api/invitations/:id/accept"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `POST /api/invitations/:id/accept` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-706aaf83118899a9", "name": "Unused endpoint: GET /api/invitations/lookup", "shortDescription": {"text": "Unused endpoint: GET /api/invitations/lookup"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `GET /api/invitations/lookup` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b164d9ae4befa177", "name": "Unused endpoint: POST /api/invitations/claim", "shortDescription": {"text": "Unused endpoint: POST /api/invitations/claim"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `POST /api/invitations/claim` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-563ffac8209fba7f", "name": "Unused endpoint: GET /api/backoffice/me", "shortDescription": {"text": "Unused endpoint: GET /api/backoffice/me"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `GET /api/backoffice/me` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-452ceea82a287bdb", "name": "Unused endpoint: GET /api/backoffice/config", "shortDescription": {"text": "Unused endpoint: GET /api/backoffice/config"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `GET /api/backoffice/config` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4ee52fed0f14cdfd", "name": "Unused endpoint: GET /api/backoffice/workspaces", "shortDescription": {"text": "Unused endpoint: GET /api/backoffice/workspaces"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `GET /api/backoffice/workspaces` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-35abb9609681650a", "name": "Unused endpoint: GET /api/backoffice/workspaces/:id", "shortDescription": {"text": "Unused endpoint: GET /api/backoffice/workspaces/:id"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `GET /api/backoffice/workspaces/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-694f4ad1aa84d016", "name": "Unused endpoint: GET /api/backoffice/workspaces/:id/members", "shortDescription": {"text": "Unused endpoint: GET /api/backoffice/workspaces/:id/members"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `GET /api/backoffice/workspaces/:id/members` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d5082f6dc9779162", "name": "Unused endpoint: POST /api/backoffice/workspaces/:id/members/resync", "shortDescription": {"text": "Unused endpoint: POST /api/backoffice/workspaces/:id/members/resync"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `POST /api/backoffice/workspaces/:id/members/resync` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dd03938af1b6c06a", "name": "Unused endpoint: GET /api/backoffice/outbox-events/status", "shortDescription": {"text": "Unused endpoint: GET /api/backoffice/outbox-events/status"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `GET /api/backoffice/outbox-events/status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7fb341363f670532", "name": "Unused endpoint: GET /api/backoffice/workspaces/:id/feature-flags", "shortDescription": {"text": "Unused endpoint: GET /api/backoffice/workspaces/:id/feature-flags"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `GET /api/backoffice/workspaces/:id/feature-flags` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-84bccffb4888a331", "name": "Unused endpoint: PUT /api/backoffice/workspaces/:id/feature-flags", "shortDescription": {"text": "Unused endpoint: PUT /api/backoffice/workspaces/:id/feature-flags"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `PUT /api/backoffice/workspaces/:id/feature-flags` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f4c0194dbec4fab7", "name": "Unused endpoint: GET /api/backoffice/waitlist", "shortDescription": {"text": "Unused endpoint: GET /api/backoffice/waitlist"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `GET /api/backoffice/waitlist` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-06a51d5c02778a07", "name": "Unused endpoint: GET /api/backoffice/workspaces/:id/invitations", "shortDescription": {"text": "Unused endpoint: GET /api/backoffice/workspaces/:id/invitations"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `GET /api/backoffice/workspaces/:id/invitations` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ec40c11d659ff0f4", "name": "Unused endpoint: GET /api/backoffice/workspace-owner-invitations", "shortDescription": {"text": "Unused endpoint: GET /api/backoffice/workspace-owner-invitations"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `GET /api/backoffice/workspace-owner-invitations` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dd3e6406754249a6", "name": "Unused endpoint: POST /api/backoffice/workspace-owner-invitations", "shortDescription": {"text": "Unused endpoint: POST /api/backoffice/workspace-owner-invitations"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `POST /api/backoffice/workspace-owner-invitations` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d23d8fd13ff84a7a", "name": "Unused endpoint: POST /api/backoffice/workspace-owner-invitations/:id/resend", "shortDescription": {"text": "Unused endpoint: POST /api/backoffice/workspace-owner-invitations/:id/resend"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `POST /api/backoffice/workspace-owner-invitations/:id/resend` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ca6414c342237b5c", "name": "Unused endpoint: POST /api/backoffice/workspace-owner-invitations/:id/revoke", "shortDescription": {"text": "Unused endpoint: POST /api/backoffice/workspace-owner-invitations/:id/revoke"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `POST /api/backoffice/workspace-owner-invitations/:id/revoke` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bc2445001efb8da0", "name": "Unused endpoint: POST /api/backoffice/workspaces/:id/members", "shortDescription": {"text": "Unused endpoint: POST /api/backoffice/workspaces/:id/members"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `POST /api/backoffice/workspaces/:id/members` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6660fd4abe221b88", "name": "Unused endpoint: POST /api/backoffice/workspaces/:id/members/:userId/role", "shortDescription": {"text": "Unused endpoint: POST /api/backoffice/workspaces/:id/members/:userId/role"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `POST /api/backoffice/workspaces/:id/members/:userId/role` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4c02e03ae471c166", "name": "Unused endpoint: DELETE /api/backoffice/workspaces/:id/members/:userId", "shortDescription": {"text": "Unused endpoint: DELETE /api/backoffice/workspaces/:id/members/:userId"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `DELETE /api/backoffice/workspaces/:id/members/:userId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-edd179847d568b5f", "name": "Unused endpoint: GET /internal/workspaces/:workspaceId/region", "shortDescription": {"text": "Unused endpoint: GET /internal/workspaces/:workspaceId/region"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `GET /internal/workspaces/:workspaceId/region` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-27a4a570cb1d49b2", "name": "Unused endpoint: GET /internal/workspaces/:workspaceId/members/:workosUserId", "shortDescription": {"text": "Unused endpoint: GET /internal/workspaces/:workspaceId/members/:workosUserId"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `GET /internal/workspaces/:workspaceId/members/:workosUserId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-df8b2a15afbb812f", "name": "Unused endpoint: POST /internal/invitation-shadows", "shortDescription": {"text": "Unused endpoint: POST /internal/invitation-shadows"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `POST /internal/invitation-shadows` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b4298e50725183d6", "name": "Unused endpoint: PATCH /internal/invitation-shadows/:id", "shortDescription": {"text": "Unused endpoint: PATCH /internal/invitation-shadows/:id"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `PATCH /internal/invitation-shadows/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6f2d4731c7f04e9c", "name": "Unused endpoint: POST /internal/invitation-shadows/:id/claim", "shortDescription": {"text": "Unused endpoint: POST /internal/invitation-shadows/:id/claim"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `POST /internal/invitation-shadows/:id/claim` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-359564da417599fc", "name": "Unused endpoint: POST /internal/workspaces/:workspaceId/members/:userId/role", "shortDescription": {"text": "Unused endpoint: POST /internal/workspaces/:workspaceId/members/:userId/role"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `POST /internal/workspaces/:workspaceId/members/:userId/role` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a6871878bd417851", "name": "Unused endpoint: DELETE /internal/workspaces/:workspaceId/members/:userId", "shortDescription": {"text": "Unused endpoint: DELETE /internal/workspaces/:workspaceId/members/:userId"}, "fullDescription": {"text": "`apps/control-plane/src/routes.ts` declares `DELETE /internal/workspaces/:workspaceId/members/:userId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e15e12874b309ce3", "name": "Unused endpoint: GET /pubkey", "shortDescription": {"text": "Unused endpoint: GET /pubkey"}, "fullDescription": {"text": "`apps/enclave/src/index.ts` declares `GET /pubkey` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-237d5a59b07db0fd", "name": "Unused endpoint: GET /attestation", "shortDescription": {"text": "Unused endpoint: GET /attestation"}, "fullDescription": {"text": "`apps/enclave/src/index.ts` declares `GET /attestation` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/21273"}, "properties": {"repository": "threahq/threa", "repoUrl": "https://github.com/threahq/threa", "branch": "main"}, "results": [{"ruleId": "scanner-ae473f2c7073d0f2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 playwright.config.ts:92"}, "properties": {"repobilityId": "4ada8a24da9e4049", "scanner": "scanner-primary", "fingerprint": "ae473f2c7073d0f2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9505c0da0eb67c82", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/browser/stream-not-found.spec.ts:37"}, "properties": {"repobilityId": "6eceb43398e48282", "scanner": "scanner-primary", "fingerprint": "9505c0da0eb67c82", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-692fcfed86e010e6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/browser/global-setup.ts:84"}, "properties": {"repobilityId": "ee6fe96cab216aac", "scanner": "scanner-primary", "fingerprint": "692fcfed86e010e6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-707c28f93eda0e94", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/settings/notifications-settings.tsx:379"}, "properties": {"repobilityId": "3e3fd9450dd1ac29", "scanner": "scanner-primary", "fingerprint": "707c28f93eda0e94", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1b712a5ec3222fcb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/layout/page-header-tabs.tsx:55"}, "properties": {"repobilityId": "e9621406b6b99c7f", "scanner": "scanner-primary", "fingerprint": "1b712a5ec3222fcb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b3a9d4cb263bd65e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/layout/sidebar/getting-started.tsx:179"}, "properties": {"repobilityId": "6a1d08051f5e1894", "scanner": "scanner-primary", "fingerprint": "b3a9d4cb263bd65e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-69de71b74038893c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/layout/sidebar/sections.tsx:108"}, "properties": {"repobilityId": "1e062ace6341f79e", "scanner": "scanner-primary", "fingerprint": "69de71b74038893c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5ea1a294cab8fb1e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/layout/sidebar/sidebar-header.tsx:44"}, "properties": {"repobilityId": "2977f0e8f70cbbe6", "scanner": "scanner-primary", "fingerprint": "5ea1a294cab8fb1e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2e31489be654c1ef", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/layout/sidebar/stream-item.tsx:168"}, "properties": {"repobilityId": "9c420c8c263935e8", "scanner": "scanner-primary", "fingerprint": "2e31489be654c1ef", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-07b1285407b65210", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/layout/sidebar/sidebar-editor.tsx:456"}, "properties": {"repobilityId": "c6b2a65992cd8e7d", "scanner": "scanner-primary", "fingerprint": "07b1285407b65210", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-13658edbae1637a9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/layout/sidebar/sidebar-actions.tsx:91"}, "properties": {"repobilityId": "c0412eff4bd67445", "scanner": "scanner-primary", "fingerprint": "13658edbae1637a9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a8dd4d4d092961e5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/layout/sidebar/sidebar-footer.tsx:140"}, "properties": {"repobilityId": "5b1bdc7ffaee43e1", "scanner": "scanner-primary", "fingerprint": "a8dd4d4d092961e5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-008e59f8bc4132ef", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/layout/sidebar/section-picker.tsx:86"}, "properties": {"repobilityId": "17e416b78a73da9e", "scanner": "scanner-primary", "fingerprint": "008e59f8bc4132ef", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c6788322c0d7acbd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/thread/stream-panel.tsx:514"}, "properties": {"repobilityId": "c2979e6219fdf4a3", "scanner": "scanner-primary", "fingerprint": "c6788322c0d7acbd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-97119e13a81fe1a6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/thread/responsive-breadcrumbs.tsx:185"}, "properties": {"repobilityId": "4dd1fbe32c3e1125", "scanner": "scanner-primary", "fingerprint": "97119e13a81fe1a6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b2bbabe1888f396e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/thread/breadcrumb-helpers.tsx:73"}, "properties": {"repobilityId": "c26aa61497f51f1e", "scanner": "scanner-primary", "fingerprint": "b2bbabe1888f396e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d3bbffc6326a43d0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/composer/composer-action-bar.tsx:244"}, "properties": {"repobilityId": "be9491b69a1e7cac", "scanner": "scanner-primary", "fingerprint": "d3bbffc6326a43d0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-68d2cb7521599c3a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/composer/message-composer.tsx:1056"}, "properties": {"repobilityId": "27a280ac981ba52e", "scanner": "scanner-primary", "fingerprint": "68d2cb7521599c3a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e8dd0ddc2a3190fa", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/notifications/pause-notifications-dialog.tsx:66"}, "properties": {"repobilityId": "65ffd008f320d857", "scanner": "scanner-primary", "fingerprint": "e8dd0ddc2a3190fa", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cbab20d79b7fbee5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/stream-settings/members-tab.tsx:145"}, "properties": {"repobilityId": "c010fe117fe2870b", "scanner": "scanner-primary", "fingerprint": "cbab20d79b7fbee5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6d5a738bba99c46e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/attachment-explorer/explorer-row.tsx:69"}, "properties": {"repobilityId": "deabbee37551ab7f", "scanner": "scanner-primary", "fingerprint": "6d5a738bba99c46e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f024f6d444614e94", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/attachment-explorer/explorer-filters.tsx:243"}, "properties": {"repobilityId": "53eb069ed415d1ae", "scanner": "scanner-primary", "fingerprint": "f024f6d444614e94", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f18b0ec5ef04f05b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/trace/trace-dialog.tsx:152"}, "properties": {"repobilityId": "22b6a16b9b1162ae", "scanner": "scanner-primary", "fingerprint": "f18b0ec5ef04f05b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8e39eae51d5ba367", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/saved/saved-suggestion-item.tsx:43"}, "properties": {"repobilityId": "17a0e4143c02fa0e", "scanner": "scanner-primary", "fingerprint": "8e39eae51d5ba367", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-996bf2c4a7b3b319", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/saved/saved-edit-dialog.tsx:206"}, "properties": {"repobilityId": "df4ea915ce858414", "scanner": "scanner-primary", "fingerprint": "996bf2c4a7b3b319", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-380de37576ed7a4c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/saved/saved-item.tsx:53"}, "properties": {"repobilityId": "e7619cc14ff4e13a", "scanner": "scanner-primary", "fingerprint": "380de37576ed7a4c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bf28aba9f6649882", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/account-switcher/logout-scope-dialog.tsx:91"}, "properties": {"repobilityId": "95bfadb89d83fce2", "scanner": "scanner-primary", "fingerprint": "bf28aba9f6649882", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cb3c2cf91bdf8259", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/account-switcher/account-switcher-dialog.tsx:39"}, "properties": {"repobilityId": "ab9f398a41911706", "scanner": "scanner-primary", "fingerprint": "cb3c2cf91bdf8259", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-311880cf17a00565", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/activity/activity-content.tsx:40"}, "properties": {"repobilityId": "72436324ac2f13e3", "scanner": "scanner-primary", "fingerprint": "311880cf17a00565", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-719d87384d0804a5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/scheduled/scheduled-item.tsx:87"}, "properties": {"repobilityId": "738524ee3e3faf91", "scanner": "scanner-primary", "fingerprint": "719d87384d0804a5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-05728d86147a0516", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/ui/locale-picker.tsx:96"}, "properties": {"repobilityId": "ca14348bca37faf2", "scanner": "scanner-primary", "fingerprint": "05728d86147a0516", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4ebaecc3c149c2fc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/ui/user-list-item.tsx:20"}, "properties": {"repobilityId": "26b6fda7972847f1", "scanner": "scanner-primary", "fingerprint": "4ebaecc3c149c2fc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0090c83c97f47c91", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/frontend/src/components/ui/chart.tsx:70"}, "properties": {"repobilityId": "1db38bde70a48441", "scanner": "scanner-primary", "fingerprint": "0090c83c97f47c91", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-0c201f17bf65bf93", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/ui/searchable-select.tsx:81"}, "properties": {"repobilityId": "56e46b245a26845f", "scanner": "scanner-primary", "fingerprint": "0c201f17bf65bf93", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-993d9730115735e6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/conversations/conversation-item.tsx:49"}, "properties": {"repobilityId": "713a4fb21b2857ba", "scanner": "scanner-primary", "fingerprint": "993d9730115735e6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1f3d0cae02b63f52", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/agent-session-event.tsx:304"}, "properties": {"repobilityId": "faf790b6c769a899", "scanner": "scanner-primary", "fingerprint": "1f3d0cae02b63f52", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cb379f863ac2a479", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/moved-messages-drawer.tsx:78"}, "properties": {"repobilityId": "1a3b5fa4782073b2", "scanner": "scanner-primary", "fingerprint": "cb379f863ac2a479", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-446aa656121f06f3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/message-link-preview-card.tsx:109"}, "properties": {"repobilityId": "15dc82ce6aad60fe", "scanner": "scanner-primary", "fingerprint": "446aa656121f06f3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7014893361202477", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/active-bot-status-strip.tsx:54"}, "properties": {"repobilityId": "ffc06b15a9837010", "scanner": "scanner-primary", "fingerprint": "7014893361202477", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-371aa372db9175ef", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/message-action-drawer.tsx:183"}, "properties": {"repobilityId": "6e71d3ec2113291b", "scanner": "scanner-primary", "fingerprint": "371aa372db9175ef", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-27615a77640de654", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/reaction-details.tsx:100"}, "properties": {"repobilityId": "0a07ecc163f82bda", "scanner": "scanner-primary", "fingerprint": "27615a77640de654", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0627d894eea7d7c1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/e2e-attachment-list.tsx:99"}, "properties": {"repobilityId": "178415ebded9d156", "scanner": "scanner-primary", "fingerprint": "0627d894eea7d7c1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-23665ccb99d6fef3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/link-preview-card.tsx:172"}, "properties": {"repobilityId": "6964499755a8022a", "scanner": "scanner-primary", "fingerprint": "23665ccb99d6fef3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dc016a464ddf4c58", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/reaction-emoji-picker.tsx:524"}, "properties": {"repobilityId": "f1da801ec0a6181a", "scanner": "scanner-primary", "fingerprint": "dc016a464ddf4c58", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8a9e0e7941fd8adb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/thread-slot.tsx:150"}, "properties": {"repobilityId": "8205892f44bcd6fa", "scanner": "scanner-primary", "fingerprint": "8a9e0e7941fd8adb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b0672a6c5ee4c45f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/thread-card.tsx:103"}, "properties": {"repobilityId": "c7e3a91fb7338fc8", "scanner": "scanner-primary", "fingerprint": "b0672a6c5ee4c45f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c10331f926cd364d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/stream-content.tsx:2338"}, "properties": {"repobilityId": "91a63ed310e856c1", "scanner": "scanner-primary", "fingerprint": "c10331f926cd364d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b17f6136b61338a9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/attachment-list.tsx:99"}, "properties": {"repobilityId": "1ddd3a1a16bd75bc", "scanner": "scanner-primary", "fingerprint": "b17f6136b61338a9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c588453144637b7e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/timeline/conversation-overlay/conversation-overlay.tsx:81"}, "properties": {"repobilityId": "45bcf815f210c54e", "scanner": "scanner-primary", "fingerprint": "c588453144637b7e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0b3e8e7a8f0a2214", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/memo-embed/card-body.tsx:67"}, "properties": {"repobilityId": "7f749a07efe71b06", "scanner": "scanner-primary", "fingerprint": "0b3e8e7a8f0a2214", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-52c430cfead88d74", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/memo-embed/memo-chip.tsx:22"}, "properties": {"repobilityId": "de297ac23f2848c3", "scanner": "scanner-primary", "fingerprint": "52c430cfead88d74", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4df65bca674bc060", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/memo/memo-detail.tsx:132"}, "properties": {"repobilityId": "0294796b809222e1", "scanner": "scanner-primary", "fingerprint": "4df65bca674bc060", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-75456ff68bb22953", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/search/search-results.tsx:163"}, "properties": {"repobilityId": "e8bcbd66abac0c05", "scanner": "scanner-primary", "fingerprint": "75456ff68bb22953", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f349fad5a4db0f2a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/search/search-filter-menu.tsx:240"}, "properties": {"repobilityId": "b6c19562b2b52a9e", "scanner": "scanner-primary", "fingerprint": "f349fad5a4db0f2a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4683ec2210c0cf48", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/quick-switcher/item-list.tsx:115"}, "properties": {"repobilityId": "bf131bca2080f505", "scanner": "scanner-primary", "fingerprint": "4683ec2210c0cf48", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cdb39fbcec6895da", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/status/status-picker.tsx:270"}, "properties": {"repobilityId": "310fc27fdba89914", "scanner": "scanner-primary", "fingerprint": "cdb39fbcec6895da", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c58c9e5cb7617492", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/editor/attachment-reference-view.tsx:72"}, "properties": {"repobilityId": "6aac1d8f5874143d", "scanner": "scanner-primary", "fingerprint": "c58c9e5cb7617492", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4de5342fee12812a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 apps/frontend/src/components/editor/attachment-reference-view.tsx:61"}, "properties": {"repobilityId": "ccea94867246c33c", "scanner": "scanner-primary", "fingerprint": "4de5342fee12812a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-e37f77d04021e23c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/editor/triggers/command-list.tsx:23"}, "properties": {"repobilityId": "c462ecd377e47312", "scanner": "scanner-primary", "fingerprint": "e37f77d04021e23c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f94fb9d26af55924", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/editor/triggers/status-filter-list.tsx:47"}, "properties": {"repobilityId": "6762a2f2dcf2170d", "scanner": "scanner-primary", "fingerprint": "f94fb9d26af55924", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-432ef17b2acaa0b1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/editor/triggers/mention-list.tsx:55"}, "properties": {"repobilityId": "c2304e37a068bf15", "scanner": "scanner-primary", "fingerprint": "432ef17b2acaa0b1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2d204b2506aae200", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/editor/triggers/emoji-grid.tsx:273"}, "properties": {"repobilityId": "ab8a7fdd244831b4", "scanner": "scanner-primary", "fingerprint": "2d204b2506aae200", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-435598a310651370", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/editor/triggers/filter-type-list.tsx:49"}, "properties": {"repobilityId": "1dde645de5651865", "scanner": "scanner-primary", "fingerprint": "435598a310651370", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bfd85d4a788409da", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/editor/triggers/memo-suggestion-list.tsx:27"}, "properties": {"repobilityId": "ecdd9786e4c44f6f", "scanner": "scanner-primary", "fingerprint": "bfd85d4a788409da", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ef354e68dbee44fe", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/labels/label-chip.tsx:67"}, "properties": {"repobilityId": "ab07b9a95d3cb6d1", "scanner": "scanner-primary", "fingerprint": "ef354e68dbee44fe", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-17f9df64adb50c60", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/labels/label-picker.tsx:100"}, "properties": {"repobilityId": "57bf79582b25eb05", "scanner": "scanner-primary", "fingerprint": "17f9df64adb50c60", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-473fa02b845fe921", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/giphy/gif-chip.tsx:23"}, "properties": {"repobilityId": "1f61006b0bec42b8", "scanner": "scanner-primary", "fingerprint": "473fa02b845fe921", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a7c36a61db49cf55", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/workspace-settings/bots-tab.tsx:101"}, "properties": {"repobilityId": "27226db5f7517322", "scanner": "scanner-primary", "fingerprint": "a7c36a61db49cf55", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-139ff2297a051056", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/workspace-settings/user-api-keys-section.tsx:290"}, "properties": {"repobilityId": "5cf4f2c6727daa42", "scanner": "scanner-primary", "fingerprint": "139ff2297a051056", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-beb9268f4300f1a5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/workspace-settings/users-tab.tsx:190"}, "properties": {"repobilityId": "3ae1874b14161a90", "scanner": "scanner-primary", "fingerprint": "beb9268f4300f1a5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a5fb6653abbccd21", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/workspace-settings/bot-channels-section.tsx:78"}, "properties": {"repobilityId": "90d0ca9fa5e67ffb", "scanner": "scanner-primary", "fingerprint": "a5fb6653abbccd21", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-574f981db902b566", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/workspace-settings/bot-keys-section.tsx:270"}, "properties": {"repobilityId": "6edf350b539c58eb", "scanner": "scanner-primary", "fingerprint": "574f981db902b566", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3af935a682120e51", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/ai-usage/budget-controls-panel.tsx:166"}, "properties": {"repobilityId": "597777c5f82617c2", "scanner": "scanner-primary", "fingerprint": "3af935a682120e51", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-41e046dc771b865d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/components/ai-usage/usage-breakdown.tsx:152"}, "properties": {"repobilityId": "4acecbf72756ac42", "scanner": "scanner-primary", "fingerprint": "41e046dc771b865d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-69e0a43386969e01", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/frontend/src/contexts/socket-context.tsx:100"}, "properties": {"repobilityId": "162329e0882a3182", "scanner": "scanner-primary", "fingerprint": "69e0a43386969e01", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-da4d1a0f24443e23", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/frontend/src/lib/bootstrap-debug.ts:66"}, "properties": {"repobilityId": "35ed819e062db3ad", "scanner": "scanner-primary", "fingerprint": "da4d1a0f24443e23", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b430cca3686292b9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/lib/markdown/code-block.tsx:158"}, "properties": {"repobilityId": "f2619f879ab110d7", "scanner": "scanner-primary", "fingerprint": "b430cca3686292b9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b333188948250d32", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/frontend/src/lib/markdown/code-block.tsx:213"}, "properties": {"repobilityId": "073204c6aadd5bc6", "scanner": "scanner-primary", "fingerprint": "b333188948250d32", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-6a341fe26f41e2fd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/pages/label-detail.tsx:133"}, "properties": {"repobilityId": "a4b580b68682f497", "scanner": "scanner-primary", "fingerprint": "6a341fe26f41e2fd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0da215a5d0122de6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/pages/labels.tsx:82"}, "properties": {"repobilityId": "21ec27957dade4a3", "scanner": "scanner-primary", "fingerprint": "0da215a5d0122de6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-02f1886cdc20b00c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/pages/workspace-select.tsx:132"}, "properties": {"repobilityId": "c950e75c6179725a", "scanner": "scanner-primary", "fingerprint": "02f1886cdc20b00c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e86fb5d650168b81", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/pages/stream.tsx:449"}, "properties": {"repobilityId": "b7424b683d3b290a", "scanner": "scanner-primary", "fingerprint": "e86fb5d650168b81", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-851e1480c34cb2bb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/frontend/src/pages/memory.tsx:88"}, "properties": {"repobilityId": "7408f75c2ea6264f", "scanner": "scanner-primary", "fingerprint": "851e1480c34cb2bb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-49ca9672cd1267d0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/control-plane/tests/setup.ts:29"}, "properties": {"repobilityId": "3935e5c15ede99bf", "scanner": "scanner-primary", "fingerprint": "49ca9672cd1267d0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e4582e48633fa5db", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/control-plane/scripts/backfill-workspace-owners.ts:45"}, "properties": {"repobilityId": "5a98fc3ec6730673", "scanner": "scanner-primary", "fingerprint": "e4582e48633fa5db", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a30a188aa25f7d6b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/control-plane/scripts/backfill-workos-authz.ts:48"}, "properties": {"repobilityId": "c14613de28ea2790", "scanner": "scanner-primary", "fingerprint": "a30a188aa25f7d6b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d0d265112a7a48d6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/tests/test-server.ts:65"}, "properties": {"repobilityId": "256243a9596b3270", "scanner": "scanner-primary", "fingerprint": "d0d265112a7a48d6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-07fdee7e08ac6a59", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/tests/setup.ts:29"}, "properties": {"repobilityId": "a4dae87440d81d4a", "scanner": "scanner-primary", "fingerprint": "07fdee7e08ac6a59", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e4338cbfee1f07f6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/workos-cleanup-orgs.ts:23"}, "properties": {"repobilityId": "8c2d31f87e3a083f", "scanner": "scanner-primary", "fingerprint": "e4338cbfee1f07f6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b88a7aab5c72bd3c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/test-cost-capture.ts:23"}, "properties": {"repobilityId": "4e2e0af698be3a50", "scanner": "scanner-primary", "fingerprint": "b88a7aab5c72bd3c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-57e357f8626ed1fe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/add-emoji-groups.ts:39"}, "properties": {"repobilityId": "d3ae3c3a099d06d0", "scanner": "scanner-primary", "fingerprint": "57e357f8626ed1fe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-16712b4d6748ada7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/test-idle-timeout.ts:26"}, "properties": {"repobilityId": "0ddc803de93ccd4f", "scanner": "scanner-primary", "fingerprint": "16712b4d6748ada7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6c05fac85dd6259c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/generate-api-docs.ts:263"}, "properties": {"repobilityId": "a1f536b81efb3b81", "scanner": "scanner-primary", "fingerprint": "6c05fac85dd6259c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2b03a4a92ca147ae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/backfill-thread-names.ts:37"}, "properties": {"repobilityId": "8d4e0661380f96e7", "scanner": "scanner-primary", "fingerprint": "2b03a4a92ca147ae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bfca509e90d78f54", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/evals/run.ts:35"}, "properties": {"repobilityId": "5f26610d162e0a47", "scanner": "scanner-primary", "fingerprint": "bfca509e90d78f54", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2da18c9adbd264ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/evals/suites/companion/cases.ts:648"}, "properties": {"repobilityId": "ca788f021178a99e", "scanner": "scanner-primary", "fingerprint": "2da18c9adbd264ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9c1337547745bfb8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/evals/framework/runner.ts:277"}, "properties": {"repobilityId": "26dbca97c8a80c57", "scanner": "scanner-primary", "fingerprint": "9c1337547745bfb8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-413a2bca1680fa4b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 apps/backend/src/features/streams/service.ts:1611"}, "properties": {"repobilityId": "89e4f88c5b86aed8", "scanner": "scanner-primary", "fingerprint": "413a2bca1680fa4b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-3b375dee96f137f6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/src/features/attachments/text/parsers/parsers.test.ts:63"}, "properties": {"repobilityId": "2b3c183857a1d94e", "scanner": "scanner-primary", "fingerprint": "3b375dee96f137f6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a5151b76559ec6c3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/public-site/scripts/build-llms.ts:367"}, "properties": {"repobilityId": "0e628aa06b22fe8e", "scanner": "scanner-primary", "fingerprint": "a5151b76559ec6c3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-98c301499194c6cc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/backoffice/src/components/layout/user-menu.tsx:56"}, "properties": {"repobilityId": "d185779fd9fe9217", "scanner": "scanner-primary", "fingerprint": "98c301499194c6cc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2a3c92131de306cb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/backoffice/src/pages/welcome.tsx:93"}, "properties": {"repobilityId": "99c560cc021bf4b9", "scanner": "scanner-primary", "fingerprint": "2a3c92131de306cb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4d27a1992f27af3d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/backoffice/src/pages/waitlist.tsx:118"}, "properties": {"repobilityId": "68d006e9dc498114", "scanner": "scanner-primary", "fingerprint": "4d27a1992f27af3d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9a6a9b91ef515a6c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/backoffice/src/pages/workspaces.tsx:90"}, "properties": {"repobilityId": "1086e12fd9a9a962", "scanner": "scanner-primary", "fingerprint": "9a6a9b91ef515a6c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a9611f228f4fc513", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/backoffice/src/pages/invite-workspace-owner.tsx:272"}, "properties": {"repobilityId": "7681dc25bd35d4fc", "scanner": "scanner-primary", "fingerprint": "a9611f228f4fc513", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-43cb89db5f1176dd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/backoffice/src/pages/workspace-detail-flags.tsx:157"}, "properties": {"repobilityId": "ee10a65887cfd242", "scanner": "scanner-primary", "fingerprint": "43cb89db5f1176dd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dd5f2265476f5583", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/backoffice/src/pages/workspace-detail-members.tsx:569"}, "properties": {"repobilityId": "18b23be950ab3102", "scanner": "scanner-primary", "fingerprint": "dd5f2265476f5583", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ddd5f655f1992d9f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev-test.ts:36"}, "properties": {"repobilityId": "207dfd468336ea77", "scanner": "scanner-primary", "fingerprint": "ddd5f655f1992d9f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eb5efe726c2dd0db", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sync-workos-permissions.ts:286"}, "properties": {"repobilityId": "b78462f49b4932e5", "scanner": "scanner-primary", "fingerprint": "eb5efe726c2dd0db", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d7039b366ccf38fb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-migrations.ts:156"}, "properties": {"repobilityId": "89f95b3404b86078", "scanner": "scanner-primary", "fingerprint": "d7039b366ccf38fb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5e6803c95f257b90", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev.ts:162"}, "properties": {"repobilityId": "b7c31b87fd1e1cc7", "scanner": "scanner-primary", "fingerprint": "5e6803c95f257b90", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3f8eeb853accf87f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup-worktree.ts:110"}, "properties": {"repobilityId": "93d41d398e1b02e4", "scanner": "scanner-primary", "fingerprint": "3f8eeb853accf87f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b8a05b07e949bc13", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/staging-kv-cleanup.ts:89"}, "properties": {"repobilityId": "845d8f249d01b3e8", "scanner": "scanner-primary", "fingerprint": "b8a05b07e949bc13", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5fbfcaa81c6b8a04", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/analyze-conversation-boundaries.ts:317"}, "properties": {"repobilityId": "4511933106e6cdc5", "scanner": "scanner-primary", "fingerprint": "5fbfcaa81c6b8a04", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4b2edd3b99c49db0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-silent.ts:430"}, "properties": {"repobilityId": "bd651184b3d276ab", "scanner": "scanner-primary", "fingerprint": "4b2edd3b99c49db0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1cae41aa98f15b07", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-control-plane.ts:40"}, "properties": {"repobilityId": "a8bb86716c948495", "scanner": "scanner-primary", "fingerprint": "1cae41aa98f15b07", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e20f6123be91e8c7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/staging-pr.ts:167"}, "properties": {"repobilityId": "3eb03382beae3f01", "scanner": "scanner-primary", "fingerprint": "e20f6123be91e8c7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b0f02bd6a8a2a5ad", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-dockerfile-workspaces.ts:82"}, "properties": {"repobilityId": "ba585a157c08726e", "scanner": "scanner-primary", "fingerprint": "b0f02bd6a8a2a5ad", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2a5ef137f0dddcca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/grant-platform-role.ts:78"}, "properties": {"repobilityId": "eb464ec57c892f43", "scanner": "scanner-primary", "fingerprint": "2a5ef137f0dddcca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-892511fe6f9d45a4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/agent-runtime/src/tools/read-url-tool.test.ts:32"}, "properties": {"repobilityId": "b80a7dd993fedc89", "scanner": "scanner-primary", "fingerprint": "892511fe6f9d45a4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2de556d760868f0a", "level": "warning", "message": {"text": "Privileged port 12 in use"}, "properties": {"repobilityId": "65e7eefa33f2def4", "scanner": "scanner-primary", "fingerprint": "2de556d760868f0a", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"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-d052eecac348b8d3", "level": "error", "message": {"text": "Runtime dotenv file present in repo: .env.remote-dev"}, "properties": {"repobilityId": "2ac5038c770df06b", "scanner": "scanner-primary", "fingerprint": "d052eecac348b8d3", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets", "config", "env-file", "runtime-env", "env_file_with_secret"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".env.remote-dev"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7ce6ba6ba048ed33", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in .coderabbit.yaml:63"}, "properties": {"repobilityId": "77d338624ea33629", "scanner": "scanner-primary", "fingerprint": "7ce6ba6ba048ed33", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".coderabbit.yaml"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-220a59333ae216d9", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in apps/frontend/vite.config.ts:5"}, "properties": {"repobilityId": "872bf3d3aeb146b7", "scanner": "scanner-primary", "fingerprint": "220a59333ae216d9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/frontend/vite.config.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-d6d2609f9e1c1ca7", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/frontend/src/components/ui/chart.tsx:70"}, "properties": {"repobilityId": "f2b74ee7af146bcf", "scanner": "scanner-primary", "fingerprint": "d6d2609f9e1c1ca7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/frontend/src/components/ui/chart.tsx"}, "region": {"startLine": 70}}}]}, {"ruleId": "scanner-5a56508779297eff", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/frontend/src/lib/markdown/code-block.tsx:213"}, "properties": {"repobilityId": "c9c96b7a23202971", "scanner": "scanner-primary", "fingerprint": "5a56508779297eff", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/frontend/src/lib/markdown/code-block.tsx"}, "region": {"startLine": 213}}}]}, {"ruleId": "scanner-9abc6aaa7670ce66", "level": "error", "message": {"text": "Possible secret in apps/public-site/src/scripts/playground.ts"}, "properties": {"repobilityId": "92e9b44f5da6c697", "scanner": "scanner-primary", "fingerprint": "9abc6aaa7670ce66", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/public-site/src/scripts/playground.ts"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-db0abde8d3585ad3", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/test-silent.ts:1"}, "properties": {"repobilityId": "88e5f468acfa9568", "scanner": "scanner-primary", "fingerprint": "db0abde8d3585ad3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-silent.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4c8c2d3d97ed543e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in extensions/pi-remote/src/threa-remote.ts:1"}, "properties": {"repobilityId": "34be4eae2b1e5eba", "scanner": "scanner-primary", "fingerprint": "4c8c2d3d97ed543e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extensions/pi-remote/src/threa-remote.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7a973ec877f6704d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1bf6915dadd7ff07", "scanner": "scanner-primary", "fingerprint": "7a973ec877f6704d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/browser-tests.yml"}, "region": {"startLine": 92}}}]}, {"ruleId": "scanner-7a973ec877f6704d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "89fa5a18a47e2465", "scanner": "scanner-primary", "fingerprint": "7a973ec877f6704d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/browser-tests.yml"}, "region": {"startLine": 186}}}]}, {"ruleId": "scanner-7a973ec877f6704d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "89fa5a18a47e2465", "scanner": "scanner-primary", "fingerprint": "7a973ec877f6704d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/browser-tests.yml"}, "region": {"startLine": 195}}}]}, {"ruleId": "scanner-7a973ec877f6704d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "89fa5a18a47e2465", "scanner": "scanner-primary", "fingerprint": "7a973ec877f6704d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/browser-tests.yml"}, "region": {"startLine": 204}}}]}, {"ruleId": "scanner-7a973ec877f6704d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e80ce3ba212a8e80", "scanner": "scanner-primary", "fingerprint": "7a973ec877f6704d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/browser-tests.yml"}, "region": {"startLine": 218}}}]}, {"ruleId": "scanner-7a973ec877f6704d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e80ce3ba212a8e80", "scanner": "scanner-primary", "fingerprint": "7a973ec877f6704d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/browser-tests.yml"}, "region": {"startLine": 279}}}]}, {"ruleId": "scanner-7a973ec877f6704d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "89fa5a18a47e2465", "scanner": "scanner-primary", "fingerprint": "7a973ec877f6704d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/browser-tests.yml"}, "region": {"startLine": 291}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae16880318b99912", "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": 23}}}]}, {"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": 26}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae16880318b99912", "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": 66}}}]}, {"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": 69}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae16880318b99912", "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": 134}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "21ed6976f1304681", "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": 139}}}]}, {"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": 148}}}]}, {"ruleId": "scanner-b1e21e961ae76acc", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3053cdb4e93ae5dd", "scanner": "scanner-primary", "fingerprint": "b1e21e961ae76acc", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/slash-commands.yml"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-b1e21e961ae76acc", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3053cdb4e93ae5dd", "scanner": "scanner-primary", "fingerprint": "b1e21e961ae76acc", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/slash-commands.yml"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-b1e21e961ae76acc", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3053cdb4e93ae5dd", "scanner": "scanner-primary", "fingerprint": "b1e21e961ae76acc", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/slash-commands.yml"}, "region": {"startLine": 67}}}]}, {"ruleId": "scanner-b1e21e961ae76acc", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3053cdb4e93ae5dd", "scanner": "scanner-primary", "fingerprint": "b1e21e961ae76acc", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/slash-commands.yml"}, "region": {"startLine": 114}}}]}, {"ruleId": "scanner-b1e21e961ae76acc", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3053cdb4e93ae5dd", "scanner": "scanner-primary", "fingerprint": "b1e21e961ae76acc", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/slash-commands.yml"}, "region": {"startLine": 128}}}]}, {"ruleId": "scanner-3614e1d7e453e785", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "76204cee7bca2cf7", "scanner": "scanner-primary", "fingerprint": "3614e1d7e453e785", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/staging.yml"}, "region": {"startLine": 113}}}]}, {"ruleId": "scanner-5c448e09bc1f1dcb", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "01bf25730af8703e", "scanner": "scanner-primary", "fingerprint": "5c448e09bc1f1dcb", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-cloudflare.yml"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-5c448e09bc1f1dcb", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fa878a155b7ea556", "scanner": "scanner-primary", "fingerprint": "5c448e09bc1f1dcb", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-cloudflare.yml"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-5c448e09bc1f1dcb", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c6416938221981b2", "scanner": "scanner-primary", "fingerprint": "5c448e09bc1f1dcb", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-cloudflare.yml"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-5c448e09bc1f1dcb", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "99947a22a4200753", "scanner": "scanner-primary", "fingerprint": "5c448e09bc1f1dcb", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-cloudflare.yml"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-5c448e09bc1f1dcb", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "01bf25730af8703e", "scanner": "scanner-primary", "fingerprint": "5c448e09bc1f1dcb", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-cloudflare.yml"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-5c448e09bc1f1dcb", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fa878a155b7ea556", "scanner": "scanner-primary", "fingerprint": "5c448e09bc1f1dcb", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-cloudflare.yml"}, "region": {"startLine": 62}}}]}, {"ruleId": "scanner-5c448e09bc1f1dcb", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c6416938221981b2", "scanner": "scanner-primary", "fingerprint": "5c448e09bc1f1dcb", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-cloudflare.yml"}, "region": {"startLine": 67}}}]}, {"ruleId": "scanner-5c448e09bc1f1dcb", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "99947a22a4200753", "scanner": "scanner-primary", "fingerprint": "5c448e09bc1f1dcb", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-cloudflare.yml"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-5c448e09bc1f1dcb", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "01bf25730af8703e", "scanner": "scanner-primary", "fingerprint": "5c448e09bc1f1dcb", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-cloudflare.yml"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-5c448e09bc1f1dcb", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fa878a155b7ea556", "scanner": "scanner-primary", "fingerprint": "5c448e09bc1f1dcb", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-cloudflare.yml"}, "region": {"startLine": 100}}}]}, {"ruleId": "scanner-5c448e09bc1f1dcb", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c6416938221981b2", "scanner": "scanner-primary", "fingerprint": "5c448e09bc1f1dcb", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-cloudflare.yml"}, "region": {"startLine": 105}}}]}, {"ruleId": "scanner-5c448e09bc1f1dcb", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "99947a22a4200753", "scanner": "scanner-primary", "fingerprint": "5c448e09bc1f1dcb", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-cloudflare.yml"}, "region": {"startLine": 113}}}]}, {"ruleId": "scanner-5c448e09bc1f1dcb", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "01bf25730af8703e", "scanner": "scanner-primary", "fingerprint": "5c448e09bc1f1dcb", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-cloudflare.yml"}, "region": {"startLine": 130}}}]}, {"ruleId": "scanner-5c448e09bc1f1dcb", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fa878a155b7ea556", "scanner": "scanner-primary", "fingerprint": "5c448e09bc1f1dcb", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-cloudflare.yml"}, "region": {"startLine": 135}}}]}, {"ruleId": "scanner-5c448e09bc1f1dcb", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c6416938221981b2", "scanner": "scanner-primary", "fingerprint": "5c448e09bc1f1dcb", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-cloudflare.yml"}, "region": {"startLine": 140}}}]}, {"ruleId": "scanner-5c448e09bc1f1dcb", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "99947a22a4200753", "scanner": "scanner-primary", "fingerprint": "5c448e09bc1f1dcb", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-cloudflare.yml"}, "region": {"startLine": 151}}}]}, {"ruleId": "scanner-5c448e09bc1f1dcb", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "01bf25730af8703e", "scanner": "scanner-primary", "fingerprint": "5c448e09bc1f1dcb", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-cloudflare.yml"}, "region": {"startLine": 168}}}]}, {"ruleId": "scanner-5c448e09bc1f1dcb", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fa878a155b7ea556", "scanner": "scanner-primary", "fingerprint": "5c448e09bc1f1dcb", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-cloudflare.yml"}, "region": {"startLine": 173}}}]}, {"ruleId": "scanner-5c448e09bc1f1dcb", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c6416938221981b2", "scanner": "scanner-primary", "fingerprint": "5c448e09bc1f1dcb", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-cloudflare.yml"}, "region": {"startLine": 178}}}]}, {"ruleId": "scanner-5c448e09bc1f1dcb", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "99947a22a4200753", "scanner": "scanner-primary", "fingerprint": "5c448e09bc1f1dcb", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-cloudflare.yml"}, "region": {"startLine": 186}}}]}, {"ruleId": "scanner-cb639d9a10a47b23", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "b86179956da3a4a8", "scanner": "scanner-primary", "fingerprint": "cb639d9a10a47b23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5e277b74212e96dc", "level": "note", "message": {"text": "Very large file: apps/frontend/src/sync/sync-engine.test.ts (1665 lines)"}, "properties": {"repobilityId": "c5824adef5111943", "scanner": "scanner-primary", "fingerprint": "5e277b74212e96dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-218e836c414b4ef8", "level": "note", "message": {"text": "Very large file: apps/frontend/src/sync/sync-engine.ts (1289 lines)"}, "properties": {"repobilityId": "ec8fa7e3e9969c7c", "scanner": "scanner-primary", "fingerprint": "218e836c414b4ef8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f07a05e089a0aa9b", "level": "note", "message": {"text": "Very large file: apps/frontend/src/sync/workspace-sync.test.ts (1669 lines)"}, "properties": {"repobilityId": "20cbed573dca7552", "scanner": "scanner-primary", "fingerprint": "f07a05e089a0aa9b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-65ea5cb08e15b4fe", "level": "note", "message": {"text": "Very large file: apps/frontend/src/sync/workspace-sync.ts (2377 lines)"}, "properties": {"repobilityId": "734c03c55a99eae8", "scanner": "scanner-primary", "fingerprint": "65ea5cb08e15b4fe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f4f9bd2170682334", "level": "note", "message": {"text": "Very large file: apps/frontend/src/sync/stream-sync.test.ts (1523 lines)"}, "properties": {"repobilityId": "1df54417875481c0", "scanner": "scanner-primary", "fingerprint": "f4f9bd2170682334", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-70c6a13e8ccffce0", "level": "note", "message": {"text": "Very large file: apps/frontend/src/components/timeline/message-event.tsx (1822 lines)"}, "properties": {"repobilityId": "12ae7746a536454d", "scanner": "scanner-primary", "fingerprint": "70c6a13e8ccffce0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3a45dfd5708cda47", "level": "note", "message": {"text": "Very large file: apps/frontend/src/components/timeline/stream-content.tsx (2346 lines)"}, "properties": {"repobilityId": "c2a25253308a665f", "scanner": "scanner-primary", "fingerprint": "3a45dfd5708cda47", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-01b5aec395eb9619", "level": "note", "message": {"text": "Very large file: apps/backend/src/server.ts (1252 lines)"}, "properties": {"repobilityId": "74e59c2089a3fa37", "scanner": "scanner-primary", "fingerprint": "01b5aec395eb9619", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f7fa4f953526d038", "level": "note", "message": {"text": "Very large file: apps/backend/src/features/streams/service.test.ts (1352 lines)"}, "properties": {"repobilityId": "bd89f644cf2c6613", "scanner": "scanner-primary", "fingerprint": "f7fa4f953526d038", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0affda81571198e5", "level": "note", "message": {"text": "Very large file: apps/backend/src/features/streams/service.ts (1816 lines)"}, "properties": {"repobilityId": "bae13caebd61ed42", "scanner": "scanner-primary", "fingerprint": "0affda81571198e5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2d11269958de0e73", "level": "note", "message": {"text": "Very large file: apps/backend/src/features/public-api/handlers.ts (1923 lines)"}, "properties": {"repobilityId": "2d1889d565bd0ee5", "scanner": "scanner-primary", "fingerprint": "2d11269958de0e73", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-04d973372c4c6086", "level": "note", "message": {"text": "Very large file: apps/backend/src/features/agents/persona-agent.ts (1249 lines)"}, "properties": {"repobilityId": "b98771f05756b013", "scanner": "scanner-primary", "fingerprint": "04d973372c4c6086", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5b8d5a09de5f9423", "level": "note", "message": {"text": "Very large file: apps/backend/src/features/agents/researcher/researcher.ts (1539 lines)"}, "properties": {"repobilityId": "be9320fe2fb351ee", "scanner": "scanner-primary", "fingerprint": "5b8d5a09de5f9423", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5421f87395e566f0", "level": "note", "message": {"text": "Very large file: apps/backend/src/features/messaging/event-service.ts (1711 lines)"}, "properties": {"repobilityId": "b8e40655f03f5ff2", "scanner": "scanner-primary", "fingerprint": "5421f87395e566f0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-29d0df6b40302007", "level": "note", "message": {"text": "Very large file: extensions/pi-remote/src/threa-remote.ts (2519 lines)"}, "properties": {"repobilityId": "b3d456008e7bd302", "scanner": "scanner-primary", "fingerprint": "29d0df6b40302007", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0445af1f790beab5", "level": "note", "message": {"text": "Very large file: packages/types/src/api.ts (2027 lines)"}, "properties": {"repobilityId": "8d6cbaba73a5c4b2", "scanner": "scanner-primary", "fingerprint": "0445af1f790beab5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "7596e49756eae525", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3f02143ce17b7bf9", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/frontend/package.json"}, "properties": {"repobilityId": "8293ac8b769dc370", "scanner": "scanner-primary", "fingerprint": "3f02143ce17b7bf9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0b8ccf231177e516", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/workspace-router/package.json"}, "properties": {"repobilityId": "ab59aa96516b8bfb", "scanner": "scanner-primary", "fingerprint": "0b8ccf231177e516", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/workspace-router/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-13280d6b7dd9b875", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/backoffice-router/package.json"}, "properties": {"repobilityId": "7fff1878c2821507", "scanner": "scanner-primary", "fingerprint": "13280d6b7dd9b875", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/backoffice-router/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d18e5c6bb8fe2cf3", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/db-read-proxy/package.json"}, "properties": {"repobilityId": "ff3064a466ee22a1", "scanner": "scanner-primary", "fingerprint": "d18e5c6bb8fe2cf3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/db-read-proxy/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e8366934a29c2e03", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/control-plane/package.json"}, "properties": {"repobilityId": "e8e900b5f9ec2a82", "scanner": "scanner-primary", "fingerprint": "e8366934a29c2e03", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/control-plane/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-921806de15828b00", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/enclave/package.json"}, "properties": {"repobilityId": "72f01827af7680b8", "scanner": "scanner-primary", "fingerprint": "921806de15828b00", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/enclave/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-53a7af2536f80bd8", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/backend/package.json"}, "properties": {"repobilityId": "637f248c83215574", "scanner": "scanner-primary", "fingerprint": "53a7af2536f80bd8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/backend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9f7899f58ca769c0", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/public-site/package.json"}, "properties": {"repobilityId": "b39db3b90707db5e", "scanner": "scanner-primary", "fingerprint": "9f7899f58ca769c0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/public-site/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-17d376e6de519e2c", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/backoffice/package.json"}, "properties": {"repobilityId": "84260a4983ec95a1", "scanner": "scanner-primary", "fingerprint": "17d376e6de519e2c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/backoffice/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d84319aa5fdc393d", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: extensions/pi-remote/package.json"}, "properties": {"repobilityId": "11280c7e92f08aa1", "scanner": "scanner-primary", "fingerprint": "d84319aa5fdc393d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "extensions/pi-remote/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cb3e52667c84fb86", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/types/package.json"}, "properties": {"repobilityId": "b5e2784f829944e6", "scanner": "scanner-primary", "fingerprint": "cb3e52667c84fb86", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/types/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7b85b0a5c9a918e4", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/crypto/package.json"}, "properties": {"repobilityId": "316ceb684a4f38c1", "scanner": "scanner-primary", "fingerprint": "7b85b0a5c9a918e4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/crypto/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ce45dd1b8dcb2452", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/agent-runtime/package.json"}, "properties": {"repobilityId": "c6a4ab401c2554af", "scanner": "scanner-primary", "fingerprint": "ce45dd1b8dcb2452", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/agent-runtime/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-71251830eeed6f98", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/backend-common/package.json"}, "properties": {"repobilityId": "86c9f3266dc55d2f", "scanner": "scanner-primary", "fingerprint": "71251830eeed6f98", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/backend-common/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-320d5ac2034e70f2", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/prosemirror/package.json"}, "properties": {"repobilityId": "8775900b110e9f03", "scanner": "scanner-primary", "fingerprint": "320d5ac2034e70f2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/prosemirror/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "b662680fac59e393", "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": "f0aa8935bfa42789", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "1e2e5debf470cb75", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "1d340f6b943902cb", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "7772b3474bf94151", "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": "36741fc90ae1dab8", "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": "f7d64440813781bb", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-cc55229a7a3c078d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .mcp.json"}, "properties": {"repobilityId": "51942fb3d5b8b5b4", "scanner": "scanner-primary", "fingerprint": "cc55229a7a3c078d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "mcp_config"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".mcp.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-17d866d91a7c451e", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: CLAUDE.md"}, "properties": {"repobilityId": "ccce5984e58a48f0", "scanner": "scanner-primary", "fingerprint": "17d866d91a7c451e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "CLAUDE.md"}, "region": {"startLine": 311}}}]}, {"ruleId": "scanner-78428a7cacf6d980", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: apps/frontend/AGENTS.md"}, "properties": {"repobilityId": "6fb7e8defae41f6c", "scanner": "scanner-primary", "fingerprint": "78428a7cacf6d980", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "agents_md"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/frontend/AGENTS.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-122f91b7f2906dc4", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/settings.json"}, "properties": {"repobilityId": "a2967269048b6a9d", "scanner": "scanner-primary", "fingerprint": "122f91b7f2906dc4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/settings.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cad6bde2ba30f688", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/pr-review-response.md"}, "properties": {"repobilityId": "a02749440c313359", "scanner": "scanner-primary", "fingerprint": "cad6bde2ba30f688", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/pr-review-response.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b328787ff6dd657c", "level": "none", "message": {"text": "Commented-code block (6 lines) in playwright.config.ts:72"}, "properties": {"repobilityId": "69eb01f60b7cd599", "scanner": "scanner-primary", "fingerprint": "b328787ff6dd657c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0388db36b9f10019", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/browser/sidebar-preview.spec.ts:80"}, "properties": {"repobilityId": "862444177e4d37dc", "scanner": "scanner-primary", "fingerprint": "0388db36b9f10019", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76e8120fba967a17", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/browser/conversation-overlay.spec.ts:57"}, "properties": {"repobilityId": "9b6058148e511b09", "scanner": "scanner-primary", "fingerprint": "76e8120fba967a17", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a24807ccee72b919", "level": "none", "message": {"text": "Commented-code block (8 lines) in tests/browser/reconnect-rehydrate.spec.ts:220"}, "properties": {"repobilityId": "1c7f496d06d06e13", "scanner": "scanner-primary", "fingerprint": "a24807ccee72b919", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4060ef4844bacea0", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/browser/message-share-cross-stream.spec.ts:211"}, "properties": {"repobilityId": "b468b4a152dd694d", "scanner": "scanner-primary", "fingerprint": "4060ef4844bacea0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a671c78f60abe8d0", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/browser/e2e-encrypted-scratchpads.spec.ts:148"}, "properties": {"repobilityId": "d5850dbe024d4e42", "scanner": "scanner-primary", "fingerprint": "a671c78f60abe8d0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8cc152d1ab401c52", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/browser/infinite-scroll.spec.ts:88"}, "properties": {"repobilityId": "03185775ebd1cf38", "scanner": "scanner-primary", "fingerprint": "8cc152d1ab401c52", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-162f2a487e85c291", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/browser/invitation-flow.spec.ts:57"}, "properties": {"repobilityId": "25e72712142ef14e", "scanner": "scanner-primary", "fingerprint": "162f2a487e85c291", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a241837c182776e7", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/vite.config.ts:109"}, "properties": {"repobilityId": "7dd0f5b33d0b4208", "scanner": "scanner-primary", "fingerprint": "a241837c182776e7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dfd7e645f2d778f4", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/public/worklets/pcm16-processor.js:3"}, "properties": {"repobilityId": "db2f03b094b7608e", "scanner": "scanner-primary", "fingerprint": "dfd7e645f2d778f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e7b10e051ee73d10", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/main.tsx:40"}, "properties": {"repobilityId": "b5c9d8e279ab39b9", "scanner": "scanner-primary", "fingerprint": "e7b10e051ee73d10", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-59ab1a96c6a24d4c", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/frontend/src/sw.ts:50"}, "properties": {"repobilityId": "9c832b2daa574c6f", "scanner": "scanner-primary", "fingerprint": "59ab1a96c6a24d4c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9805df40072a137b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/frontend/src/sw.ts:142"}, "properties": {"repobilityId": "0c16c86a4c2b37be", "scanner": "scanner-primary", "fingerprint": "9805df40072a137b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1b0598a2a19b3bbc", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/frontend/src/stores/stream-store.ts:35"}, "properties": {"repobilityId": "92b61d97a4bfc62b", "scanner": "scanner-primary", "fingerprint": "1b0598a2a19b3bbc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6e13d7227aeb29ec", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/stores/workspace-store.ts:31"}, "properties": {"repobilityId": "8badcbf1c4a8f12a", "scanner": "scanner-primary", "fingerprint": "6e13d7227aeb29ec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-41620062ea6da221", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/frontend/src/stores/e2e-session-store.ts:848"}, "properties": {"repobilityId": "59129688391901be", "scanner": "scanner-primary", "fingerprint": "41620062ea6da221", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d8bc89044884d9f4", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/sync/stream-sync.ts:162"}, "properties": {"repobilityId": "5ba26f47cd86226c", "scanner": "scanner-primary", "fingerprint": "d8bc89044884d9f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e7b8ccb02e160bad", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/frontend/src/sync/sync-engine.test.ts:639"}, "properties": {"repobilityId": "ce2e46d14825da5b", "scanner": "scanner-primary", "fingerprint": "e7b8ccb02e160bad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-469f1e53545347f3", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/sync/sync-engine.ts:137"}, "properties": {"repobilityId": "95364a06c2b43eff", "scanner": "scanner-primary", "fingerprint": "469f1e53545347f3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aab494f8df75142f", "level": "note", "message": {"text": "Legacy-named symbol `evt_old` in apps/frontend/src/sync/workspace-sync.test.ts:334"}, "properties": {"repobilityId": "70c8a484487a5a10", "scanner": "scanner-primary", "fingerprint": "aab494f8df75142f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-86ee2737be27282c", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/sync/workspace-sync.test.ts:797"}, "properties": {"repobilityId": "6bfebd0b65855e0b", "scanner": "scanner-primary", "fingerprint": "86ee2737be27282c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1a6f2535c747e968", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/frontend/src/sync/workspace-sync.test.ts:188"}, "properties": {"repobilityId": "0bc6d9fee6976948", "scanner": "scanner-primary", "fingerprint": "1a6f2535c747e968", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6d51d772fcec3085", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/sync/workspace-sync.ts:329"}, "properties": {"repobilityId": "f7aef09bc1ed91d4", "scanner": "scanner-primary", "fingerprint": "6d51d772fcec3085", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a9104a06811f257f", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/sync/operation-queue.ts:190"}, "properties": {"repobilityId": "564099efada6e774", "scanner": "scanner-primary", "fingerprint": "a9104a06811f257f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c50a5397fec3a588", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/sync/draft-sync.ts:386"}, "properties": {"repobilityId": "5cc37678b998915e", "scanner": "scanner-primary", "fingerprint": "c50a5397fec3a588", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-316231993ec011ea", "level": "note", "message": {"text": "Legacy-named symbol `evt_old` in apps/frontend/src/sync/stream-sync.test.ts:99"}, "properties": {"repobilityId": "b6b85e390bde0c35", "scanner": "scanner-primary", "fingerprint": "316231993ec011ea", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-047d9624ee836077", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/frontend/src/sync/stream-sync.test.ts:299"}, "properties": {"repobilityId": "7a81485d64e998bd", "scanner": "scanner-primary", "fingerprint": "047d9624ee836077", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e9629450ef54ae60", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/frontend/src/sync/stream-sync.test.ts:73"}, "properties": {"repobilityId": "981a1c894f978809", "scanner": "scanner-primary", "fingerprint": "e9629450ef54ae60", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0eff4c528cf55cd8", "level": "note", "message": {"text": "Legacy-named symbol `workspace_old` in apps/frontend/src/auth/context.test.tsx:174"}, "properties": {"repobilityId": "70c77105841f55f6", "scanner": "scanner-primary", "fingerprint": "0eff4c528cf55cd8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-addec3d66d641fbc", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/auth/account-scope.test.tsx:8"}, "properties": {"repobilityId": "c40088131d7d6bc2", "scanner": "scanner-primary", "fingerprint": "addec3d66d641fbc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dda6c749b9124b9d", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/auth/context.tsx:43"}, "properties": {"repobilityId": "2ca4b9346adf33d0", "scanner": "scanner-primary", "fingerprint": "dda6c749b9124b9d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-409699408faa1b1a", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/auth/account-scope.tsx:89"}, "properties": {"repobilityId": "eace3b589993864e", "scanner": "scanner-primary", "fingerprint": "409699408faa1b1a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eea3227b37ed3ba9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/frontend/src/auth/account-scope.tsx:162"}, "properties": {"repobilityId": "c4bf2b7d9cd78faa", "scanner": "scanner-primary", "fingerprint": "eea3227b37ed3ba9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-722247d09e7dc51b", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/api/accounts.ts:31"}, "properties": {"repobilityId": "0f83c21f709817f3", "scanner": "scanner-primary", "fingerprint": "722247d09e7dc51b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cd1efc4d8adcf91a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/frontend/src/api/bots.ts:90"}, "properties": {"repobilityId": "ef9f236900e249a3", "scanner": "scanner-primary", "fingerprint": "cd1efc4d8adcf91a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-286b8fd5090b99b6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/frontend/src/api/attachments.ts:82"}, "properties": {"repobilityId": "3bba2deb7bcf97f5", "scanner": "scanner-primary", "fingerprint": "286b8fd5090b99b6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2db5d78d9029958f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/frontend/src/api/workspaces.ts:128"}, "properties": {"repobilityId": "bd53bed07b59cc8a", "scanner": "scanner-primary", "fingerprint": "2db5d78d9029958f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7060fc137a8456bb", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/error-boundary.tsx:37"}, "properties": {"repobilityId": "235cca2f5ba62f2d", "scanner": "scanner-primary", "fingerprint": "7060fc137a8456bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-597bd9c811f3d8b3", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/frontend/src/components/image-gallery.tsx:183"}, "properties": {"repobilityId": "9b089ed982c29849", "scanner": "scanner-primary", "fingerprint": "597bd9c811f3d8b3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-36bb4ffb5868fe37", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/frontend/src/components/layout/app-shell.tsx:215"}, "properties": {"repobilityId": "970df87d741d5d68", "scanner": "scanner-primary", "fingerprint": "36bb4ffb5868fe37", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1f4cc79401c00aa9", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/layout/sidebar/sections.tsx:124"}, "properties": {"repobilityId": "4ae6a307837e24c7", "scanner": "scanner-primary", "fingerprint": "1f4cc79401c00aa9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2733aab19d0ef937", "level": "note", "message": {"text": "Legacy-named symbol `dm_old` in apps/frontend/src/components/layout/sidebar/resolve-sections.test.ts:137"}, "properties": {"repobilityId": "b9ff495cb803d8fd", "scanner": "scanner-primary", "fingerprint": "2733aab19d0ef937", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-449fc5132a33347f", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/layout/sidebar/sidebar.tsx:399"}, "properties": {"repobilityId": "d07d26f111d361c3", "scanner": "scanner-primary", "fingerprint": "449fc5132a33347f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-465de0e968edc1e0", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/layout/sidebar/use-urgency-tracking.ts:25"}, "properties": {"repobilityId": "6b5845b507617d3f", "scanner": "scanner-primary", "fingerprint": "465de0e968edc1e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f171541efc4b866c", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/layout/sidebar/utils.test.ts:165"}, "properties": {"repobilityId": "cf63a51443c9d2b5", "scanner": "scanner-primary", "fingerprint": "f171541efc4b866c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b6d5cb1d77c9f0b1", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/layout/sidebar/utils.ts:31"}, "properties": {"repobilityId": "c84522849a919ea3", "scanner": "scanner-primary", "fingerprint": "b6d5cb1d77c9f0b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c27838b855c0ea6", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/layout/sidebar/sidebar-footer.tsx:332"}, "properties": {"repobilityId": "57096cd8b9a1dcbe", "scanner": "scanner-primary", "fingerprint": "6c27838b855c0ea6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a8179769cb4376b8", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/thread/stream-panel.tsx:175"}, "properties": {"repobilityId": "3d5bcddd14339407", "scanner": "scanner-primary", "fingerprint": "a8179769cb4376b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-838ae7b892d6695e", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/composer/mic-button.tsx:12"}, "properties": {"repobilityId": "c873f43dee32080c", "scanner": "scanner-primary", "fingerprint": "838ae7b892d6695e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f67a4e66fe6979df", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/composer/attachment-pill.tsx:79"}, "properties": {"repobilityId": "3a13e07cf4a5af76", "scanner": "scanner-primary", "fingerprint": "f67a4e66fe6979df", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-15e595ea9b33610d", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/composer/scheduled-messages-picker.tsx:77"}, "properties": {"repobilityId": "9b4fb160066855fc", "scanner": "scanner-primary", "fingerprint": "15e595ea9b33610d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fcdd73d69a9c425b", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/composer/floating-composer-shell.tsx:22"}, "properties": {"repobilityId": "b53190dc109e8788", "scanner": "scanner-primary", "fingerprint": "fcdd73d69a9c425b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cad8b041f911d514", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/frontend/src/components/composer/message-composer.tsx:313"}, "properties": {"repobilityId": "1d487e29a3f45be0", "scanner": "scanner-primary", "fingerprint": "cad8b041f911d514", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-38df8e7c3cea5ee7", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/stream-settings/tool-policy-picker.tsx:10"}, "properties": {"repobilityId": "3914bc3d7f40f7ea", "scanner": "scanner-primary", "fingerprint": "38df8e7c3cea5ee7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-07585d4858701ffb", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/attachment-explorer/attachment-explorer.integration.test.tsx:121"}, "properties": {"repobilityId": "2cea85275215a63f", "scanner": "scanner-primary", "fingerprint": "07585d4858701ffb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac2df3d108604897", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/frontend/src/components/attachment-explorer/explorer-shell.tsx:39"}, "properties": {"repobilityId": "625978bdf04b7298", "scanner": "scanner-primary", "fingerprint": "ac2df3d108604897", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0ffaea999e533cb1", "level": "none", "message": {"text": "Commented-code block (11 lines) in apps/frontend/src/components/trace/trace-step.tsx:435"}, "properties": {"repobilityId": "a540571b110faaf0", "scanner": "scanner-primary", "fingerprint": "0ffaea999e533cb1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b9de3e024055189e", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/saved/saved-edit-dialog.tsx:83"}, "properties": {"repobilityId": "aa4b4240887f3734", "scanner": "scanner-primary", "fingerprint": "b9de3e024055189e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-79f04e5d150e47eb", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/saved/saved-item.tsx:37"}, "properties": {"repobilityId": "a0dbdd5d946bcf61", "scanner": "scanner-primary", "fingerprint": "79f04e5d150e47eb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d8acadbb481b3fdd", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/frontend/src/components/encryption/pin-unlock-modal.test.tsx:46"}, "properties": {"repobilityId": "bc5147c2c53fac5b", "scanner": "scanner-primary", "fingerprint": "d8acadbb481b3fdd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3c1a39a553ceb1dd", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/scheduled/scheduled-item.tsx:36"}, "properties": {"repobilityId": "f78abb554e9b904d", "scanner": "scanner-primary", "fingerprint": "3c1a39a553ceb1dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7e812b6a1706c7b2", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/scheduled/scheduled-edit-dialog.tsx:145"}, "properties": {"repobilityId": "1c3303b29681e405", "scanner": "scanner-primary", "fingerprint": "7e812b6a1706c7b2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6f1ff169fac0d99e", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/frontend/src/components/ui/responsive-mode.tsx:7"}, "properties": {"repobilityId": "261af6c5f76f15e0", "scanner": "scanner-primary", "fingerprint": "6f1ff169fac0d99e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b1249e19da55905e", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/ui/responsive-dialog.tsx:145"}, "properties": {"repobilityId": "cf65ecbbc6ef01f2", "scanner": "scanner-primary", "fingerprint": "b1249e19da55905e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b66e50b6fa9f4bf3", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/ui/searchable-select.tsx:133"}, "properties": {"repobilityId": "3ff55496c40d495d", "scanner": "scanner-primary", "fingerprint": "b66e50b6fa9f4bf3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c3115e0eaaaedea4", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/timeline/event-item.tsx:111"}, "properties": {"repobilityId": "b288db2467789b45", "scanner": "scanner-primary", "fingerprint": "c3115e0eaaaedea4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8f99c6d9eef3e9e4", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/timeline/event-list.tsx:789"}, "properties": {"repobilityId": "86a4fde9d4b4f642", "scanner": "scanner-primary", "fingerprint": "8f99c6d9eef3e9e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1e18029454c81e52", "level": "none", "message": {"text": "Commented-code block (11 lines) in apps/frontend/src/components/timeline/message-event.tsx:319"}, "properties": {"repobilityId": "d5758fd27efe59af", "scanner": "scanner-primary", "fingerprint": "1e18029454c81e52", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b6b3b50da17fe4c", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/timeline/message-input.test.tsx:47"}, "properties": {"repobilityId": "c1887c8964d1a8de", "scanner": "scanner-primary", "fingerprint": "6b6b3b50da17fe4c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-82400bb12ac5310b", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/timeline/unread-divider.tsx:8"}, "properties": {"repobilityId": "0de08b688a6e386d", "scanner": "scanner-primary", "fingerprint": "82400bb12ac5310b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6e6e17c615b5f637", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/timeline/message-context-menu.tsx:82"}, "properties": {"repobilityId": "047171b30eb6f295", "scanner": "scanner-primary", "fingerprint": "6e6e17c615b5f637", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8437bc617864898b", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/timeline/link-preview-body.test.tsx:78"}, "properties": {"repobilityId": "d8968ce895883a63", "scanner": "scanner-primary", "fingerprint": "8437bc617864898b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-78458ac9013990b7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/frontend/src/components/timeline/stream-content.test.ts:291"}, "properties": {"repobilityId": "6d6a1b15405796ed", "scanner": "scanner-primary", "fingerprint": "78458ac9013990b7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fbb197f489e444dc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/frontend/src/components/timeline/e2e-attachment-list.tsx:23"}, "properties": {"repobilityId": "280a5afdec0c6afe", "scanner": "scanner-primary", "fingerprint": "fbb197f489e444dc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b5dbd28faa5e874e", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/timeline/react-virtuoso-patch.test.ts:6"}, "properties": {"repobilityId": "e88668b3920dfff8", "scanner": "scanner-primary", "fingerprint": "b5dbd28faa5e874e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b1a798474755f46", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/timeline/message-input.tsx:305"}, "properties": {"repobilityId": "8fe2d71b32196b85", "scanner": "scanner-primary", "fingerprint": "0b1a798474755f46", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-658efaae64ba4f23", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/timeline/stream-content.tsx:285"}, "properties": {"repobilityId": "f75659ccc722e236", "scanner": "scanner-primary", "fingerprint": "658efaae64ba4f23", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b2f7dbd21f192811", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/timeline/unsent-message-edit-form.tsx:35"}, "properties": {"repobilityId": "6494ce0bb1c99661", "scanner": "scanner-primary", "fingerprint": "b2f7dbd21f192811", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-95e3aae86e4944d8", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/timeline/attachment-list.tsx:213"}, "properties": {"repobilityId": "5846e42cdc123f79", "scanner": "scanner-primary", "fingerprint": "95e3aae86e4944d8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7faa36c190d59923", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/timeline/conversation-overlay/conversation-overlay.tsx:53"}, "properties": {"repobilityId": "0a0850bd651af88e", "scanner": "scanner-primary", "fingerprint": "7faa36c190d59923", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e7828987ed11ede8", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/search/use-message-search.ts:92"}, "properties": {"repobilityId": "ce2e1176514cb481", "scanner": "scanner-primary", "fingerprint": "e7828987ed11ede8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-707917efc79edb70", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/frontend/src/components/quick-switcher/quick-switcher.tsx:162"}, "properties": {"repobilityId": "2011ac4d2c72c2b4", "scanner": "scanner-primary", "fingerprint": "707917efc79edb70", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0c237d60203e6dfb", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/quick-switcher/commands.test.ts:75"}, "properties": {"repobilityId": "d95b008a84727114", "scanner": "scanner-primary", "fingerprint": "0c237d60203e6dfb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a85a5d270a0c2961", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/gallery/zoomable-image.tsx:40"}, "properties": {"repobilityId": "5405b57e1763b8b2", "scanner": "scanner-primary", "fingerprint": "a85a5d270a0c2961", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2069feebceade084", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/gallery/markdown-viewer.tsx:16"}, "properties": {"repobilityId": "c7f44017fcb34fb7", "scanner": "scanner-primary", "fingerprint": "2069feebceade084", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1b8bdf16e0c27f11", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/shared-messages/card-body.tsx:32"}, "properties": {"repobilityId": "2f2915f1f8583965", "scanner": "scanner-primary", "fingerprint": "1b8bdf16e0c27f11", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-90217c1a3d30ce60", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/editor/editor-behaviors.ts:19"}, "properties": {"repobilityId": "8d58a88e677d651c", "scanner": "scanner-primary", "fingerprint": "90217c1a3d30ce60", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c69fb5220a1ba598", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/frontend/src/components/editor/atom-aware-input-rules-handler.test.ts:56"}, "properties": {"repobilityId": "46c00a288eb30c90", "scanner": "scanner-primary", "fingerprint": "c69fb5220a1ba598", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1203d4019777820d", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/editor/atom-aware-input-rules.ts:38"}, "properties": {"repobilityId": "1978dca9f0c40d24", "scanner": "scanner-primary", "fingerprint": "1203d4019777820d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bfc5c2cee6df33f5", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/editor/editor-toolbar.tsx:715"}, "properties": {"repobilityId": "ea5d839ba4a40596", "scanner": "scanner-primary", "fingerprint": "bfc5c2cee6df33f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6d4e5e7b003e4e19", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/editor/multiline-blocks.ts:721"}, "properties": {"repobilityId": "2f494f6eae172513", "scanner": "scanner-primary", "fingerprint": "6d4e5e7b003e4e19", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-60cba4a7e0dff894", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/editor/rich-editor.tsx:369"}, "properties": {"repobilityId": "a72e4cbad7d5837b", "scanner": "scanner-primary", "fingerprint": "60cba4a7e0dff894", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a4ccec1833529246", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/editor/giphy-picker-dialog.tsx:220"}, "properties": {"repobilityId": "f951e4bd3e5f75d0", "scanner": "scanner-primary", "fingerprint": "a4ccec1833529246", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd7e91b42af89dec", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/editor/editor-extensions.ts:102"}, "properties": {"repobilityId": "7171915cdee50304", "scanner": "scanner-primary", "fingerprint": "fd7e91b42af89dec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dd785e784ba658e3", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/editor/triggers/date-filter-list.tsx:23"}, "properties": {"repobilityId": "e174af3be3ab98d4", "scanner": "scanner-primary", "fingerprint": "dd785e784ba658e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d3506b324e5e1deb", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/editor/triggers/use-suggestion.tsx:82"}, "properties": {"repobilityId": "b5d05eeb0b4dc83d", "scanner": "scanner-primary", "fingerprint": "d3506b324e5e1deb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b872f37988290524", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/components/editor/triggers/in-channel-filter-extension.ts:50"}, "properties": {"repobilityId": "e84abb83899c138a", "scanner": "scanner-primary", "fingerprint": "b872f37988290524", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62330c4ab2f89bfa", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/components/editor/triggers/in-user-filter-extension.ts:49"}, "properties": {"repobilityId": "1af7e28c7acb6b21", "scanner": "scanner-primary", "fingerprint": "62330c4ab2f89bfa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53d51ffbfb7b49c5", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/frontend/src/components/giphy/giphy-image.tsx:48"}, "properties": {"repobilityId": "eff22d979a845a36", "scanner": "scanner-primary", "fingerprint": "53d51ffbfb7b49c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-583084a5590eac5e", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/contexts/coordinated-loading-context.test.tsx:431"}, "properties": {"repobilityId": "f11a13c375351550", "scanner": "scanner-primary", "fingerprint": "583084a5590eac5e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-296c080e28ffe033", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/contexts/coordinated-loading-context.tsx:124"}, "properties": {"repobilityId": "fea4df1137535b41", "scanner": "scanner-primary", "fingerprint": "296c080e28ffe033", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2148a57f9b275e86", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/contexts/socket-context.tsx:74"}, "properties": {"repobilityId": "660aa0c72c541829", "scanner": "scanner-primary", "fingerprint": "2148a57f9b275e86", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9e902e5602ba0b4d", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/lib/notification-intent.ts:1"}, "properties": {"repobilityId": "9f242519fbe88876", "scanner": "scanner-primary", "fingerprint": "9e902e5602ba0b4d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-20736f631e3886f4", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/lib/cached-ws-config.ts:1"}, "properties": {"repobilityId": "92963e13531b5f3c", "scanner": "scanner-primary", "fingerprint": "20736f631e3886f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c5490945bc8b9b45", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/lib/last-workspace.ts:1"}, "properties": {"repobilityId": "768b9f3fedc2bcc8", "scanner": "scanner-primary", "fingerprint": "c5490945bc8b9b45", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7e9dc06fb19e85a1", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/frontend/src/lib/app-update-version.ts:1"}, "properties": {"repobilityId": "169b6b49453ba236", "scanner": "scanner-primary", "fingerprint": "7e9dc06fb19e85a1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-686bdf8c388414ff", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/lib/cached-user.ts:3"}, "properties": {"repobilityId": "f14d37984d5e2d1b", "scanner": "scanner-primary", "fingerprint": "686bdf8c388414ff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3b510a77d981225b", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/lib/crypto/message-envelope.ts:217"}, "properties": {"repobilityId": "3bacfec2fd9a5162", "scanner": "scanner-primary", "fingerprint": "3b510a77d981225b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b4d1591f2ec3338b", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/frontend/src/lib/crypto/attachment-crypto.ts:41"}, "properties": {"repobilityId": "33eaa060913109ab", "scanner": "scanner-primary", "fingerprint": "b4d1591f2ec3338b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d991f4d38ccc9962", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/lib/markdown/use-block-collapse.ts:62"}, "properties": {"repobilityId": "70c7fe52c84e350c", "scanner": "scanner-primary", "fingerprint": "d991f4d38ccc9962", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d75b2b9e8260af41", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/lib/markdown/components.tsx:139"}, "properties": {"repobilityId": "4724e98d09b9e1d1", "scanner": "scanner-primary", "fingerprint": "d75b2b9e8260af41", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6de413412b92b935", "level": "note", "message": {"text": "Legacy-named symbol `msg_legacy` in apps/frontend/src/lib/markdown/collapse-cache.test.ts:60"}, "properties": {"repobilityId": "ece4980b1c4da370", "scanner": "scanner-primary", "fingerprint": "6de413412b92b935", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-02b890f22c21c497", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/pages/drafts.tsx:50"}, "properties": {"repobilityId": "ce6eac185edd9b63", "scanner": "scanner-primary", "fingerprint": "02b890f22c21c497", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-422e28018b345c5f", "level": "note", "message": {"text": "Legacy-named symbol `stream_old` in apps/frontend/src/pages/label-detail.test.tsx:104"}, "properties": {"repobilityId": "3815aac70d304378", "scanner": "scanner-primary", "fingerprint": "422e28018b345c5f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-74c55ca71c83fe22", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/pages/memory.test.tsx:170"}, "properties": {"repobilityId": "a38a7a8c541024a0", "scanner": "scanner-primary", "fingerprint": "74c55ca71c83fe22", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a9a80059308f53ca", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/pages/workspace-select.tsx:26"}, "properties": {"repobilityId": "4e6910c17af63a36", "scanner": "scanner-primary", "fingerprint": "a9a80059308f53ca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fe014044884b779a", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/frontend/src/pages/workspace-layout.tsx:284"}, "properties": {"repobilityId": "b6d5a1fa94e90e6e", "scanner": "scanner-primary", "fingerprint": "fe014044884b779a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b9104693e81e1ff3", "level": "none", "message": {"text": "Commented-code block (11 lines) in apps/frontend/src/pages/stream.tsx:327"}, "properties": {"repobilityId": "aa27ac49fda74b27", "scanner": "scanner-primary", "fingerprint": "b9104693e81e1ff3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2195d58ad5847141", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/pages/memory.tsx:53"}, "properties": {"repobilityId": "88203db4f28b8735", "scanner": "scanner-primary", "fingerprint": "2195d58ad5847141", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b74d1f718c52c2d0", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/frontend/src/hooks/use-unread-divider.ts:125"}, "properties": {"repobilityId": "56ebd2d7658aa8f5", "scanner": "scanner-primary", "fingerprint": "b74d1f718c52c2d0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-520173163967d850", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-conversations.ts:77"}, "properties": {"repobilityId": "78fcb66b6d76ae4b", "scanner": "scanner-primary", "fingerprint": "520173163967d850", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-348ed12e06c9ea71", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-draft-composer.ts:140"}, "properties": {"repobilityId": "2a0bc037731886d2", "scanner": "scanner-primary", "fingerprint": "348ed12e06c9ea71", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd0b62a1a49f4822", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-panel-layout.ts:8"}, "properties": {"repobilityId": "38c0e77e81372032", "scanner": "scanner-primary", "fingerprint": "fd0b62a1a49f4822", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b2163d8aee8e3950", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-decrypt-stream-names.test.tsx:14"}, "properties": {"repobilityId": "3be7ab637501eec3", "scanner": "scanner-primary", "fingerprint": "b2163d8aee8e3950", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb2eed745834af37", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-visual-viewport.ts:78"}, "properties": {"repobilityId": "d801644f2b474be1", "scanner": "scanner-primary", "fingerprint": "fb2eed745834af37", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e8353a5793cf8fc", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-visual-viewport.test.ts:134"}, "properties": {"repobilityId": "e0b99d2f09d1c889", "scanner": "scanner-primary", "fingerprint": "2e8353a5793cf8fc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f232a03971ba587b", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-stream-search.ts:195"}, "properties": {"repobilityId": "68b54731e4f90109", "scanner": "scanner-primary", "fingerprint": "f232a03971ba587b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a5a944cdff2d18b", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-shared-message-source.ts:149"}, "properties": {"repobilityId": "bc0abc83d7a2f53c", "scanner": "scanner-primary", "fingerprint": "2a5a944cdff2d18b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a4c515062208239c", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/hooks/use-decrypted-step-content.ts:56"}, "properties": {"repobilityId": "d6e1e50944282fdf", "scanner": "scanner-primary", "fingerprint": "a4c515062208239c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-853fc1ab207d1729", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-coordinated-stream-queries.ts:48"}, "properties": {"repobilityId": "b2cc7041805640ab", "scanner": "scanner-primary", "fingerprint": "853fc1ab207d1729", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cf48773c5219e43d", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-swipe-action.ts:137"}, "properties": {"repobilityId": "31820d3f1bdcfa1c", "scanner": "scanner-primary", "fingerprint": "cf48773c5219e43d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c44df77a382029b", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/frontend/src/hooks/use-stash-composer.ts:64"}, "properties": {"repobilityId": "e171a4c3f93b67a9", "scanner": "scanner-primary", "fingerprint": "7c44df77a382029b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7017a729fcafd3b3", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-element-width.ts:19"}, "properties": {"repobilityId": "77e695c3753e17a2", "scanner": "scanner-primary", "fingerprint": "7017a729fcafd3b3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5a9a85e903e2d982", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/frontend/src/hooks/use-labels.ts:193"}, "properties": {"repobilityId": "527c8b4a009f6407", "scanner": "scanner-primary", "fingerprint": "5a9a85e903e2d982", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2d9423cd7bcc95e5", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/frontend/src/hooks/use-scroll-behavior.ts:181"}, "properties": {"repobilityId": "fd3c37b66b7c588b", "scanner": "scanner-primary", "fingerprint": "2d9423cd7bcc95e5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1780d452fcfffb2a", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-sidebar-swipe.ts:287"}, "properties": {"repobilityId": "93fb0902912b9efa", "scanner": "scanner-primary", "fingerprint": "1780d452fcfffb2a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d550df311fb64ed0", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/frontend/src/hooks/use-create-encrypted-scratchpad.ts:47"}, "properties": {"repobilityId": "efdc23fa0dbde550", "scanner": "scanner-primary", "fingerprint": "d550df311fb64ed0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3cdae8bd29dc5850", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/hooks/use-events.test.ts:119"}, "properties": {"repobilityId": "ed490f77d6dfd613", "scanner": "scanner-primary", "fingerprint": "3cdae8bd29dc5850", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4a2a6c562048aa4a", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/hooks/use-push-notifications.ts:275"}, "properties": {"repobilityId": "a7bc71445df92d24", "scanner": "scanner-primary", "fingerprint": "4a2a6c562048aa4a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-260bd259fddd04b9", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-draft-message.ts:124"}, "properties": {"repobilityId": "0ceada68242a2393", "scanner": "scanner-primary", "fingerprint": "260bd259fddd04b9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a7232491c54fd44", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/frontend/src/hooks/use-saved.ts:151"}, "properties": {"repobilityId": "5a726dbf4bfae564", "scanner": "scanner-primary", "fingerprint": "6a7232491c54fd44", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0161cd98416879d4", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/frontend/src/hooks/use-queue-draft-message.ts:86"}, "properties": {"repobilityId": "5a957b012b382f52", "scanner": "scanner-primary", "fingerprint": "0161cd98416879d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-24342bd9772cd04d", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/hooks/use-activity.ts:57"}, "properties": {"repobilityId": "6cb8910a4dbecce1", "scanner": "scanner-primary", "fingerprint": "24342bd9772cd04d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-71d186223fdda94e", "level": "note", "message": {"text": "Legacy-named symbol `stream_old` in apps/frontend/src/hooks/use-labels.test.ts:192"}, "properties": {"repobilityId": "ecf88a65affd13f0", "scanner": "scanner-primary", "fingerprint": "71d186223fdda94e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8cebb8818681a2fc", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-all-drafts.ts:283"}, "properties": {"repobilityId": "62916bf6570876d1", "scanner": "scanner-primary", "fingerprint": "8cebb8818681a2fc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b33237520a45d1f4", "level": "note", "message": {"text": "Legacy-named symbol `stream_old` in apps/frontend/src/hooks/use-draft-message.test.ts:103"}, "properties": {"repobilityId": "47df55b1da1ae141", "scanner": "scanner-primary", "fingerprint": "b33237520a45d1f4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7d38bc17787ef0d4", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-draft-message.test.ts:505"}, "properties": {"repobilityId": "1a65ebdabbea2181", "scanner": "scanner-primary", "fingerprint": "7d38bc17787ef0d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8e80087d53bfa6ed", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-message-queue.ts:225"}, "properties": {"repobilityId": "4a30e1d4fad82414", "scanner": "scanner-primary", "fingerprint": "8e80087d53bfa6ed", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3dd37942b7be33db", "level": "note", "message": {"text": "Legacy-named symbol `event_old` in apps/frontend/src/hooks/use-unread-counts.test.tsx:53"}, "properties": {"repobilityId": "65b335aed3001574", "scanner": "scanner-primary", "fingerprint": "3dd37942b7be33db", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-777064a0d605c237", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/hooks/use-composer-height-publish.test.tsx:123"}, "properties": {"repobilityId": "8bde235ac1479c8f", "scanner": "scanner-primary", "fingerprint": "777064a0d605c237", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a972ec038c7d3d5f", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/hooks/use-draft-composer.test.ts:755"}, "properties": {"repobilityId": "f5325ae7928812c4", "scanner": "scanner-primary", "fingerprint": "a972ec038c7d3d5f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8346352f23eb8ef", "level": "none", "message": {"text": "Commented-code block (12 lines) in apps/frontend/src/hooks/use-composer-height-publish.ts:66"}, "properties": {"repobilityId": "ee7e0b961d918ea2", "scanner": "scanner-primary", "fingerprint": "c8346352f23eb8ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb510163791fb94b", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-attachments.ts:91"}, "properties": {"repobilityId": "b315ed97dbbb0681", "scanner": "scanner-primary", "fingerprint": "eb510163791fb94b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-01d588b8f97f678b", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-long-press.ts:68"}, "properties": {"repobilityId": "5a98ecdb7f1109fa", "scanner": "scanner-primary", "fingerprint": "01d588b8f97f678b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0810b394cfd7061b", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/frontend/src/hooks/use-decrypted-message-content.ts:73"}, "properties": {"repobilityId": "58a55165370bf4b1", "scanner": "scanner-primary", "fingerprint": "0810b394cfd7061b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f44aff7f7219688f", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/frontend/src/hooks/use-stream-or-draft.ts:497"}, "properties": {"repobilityId": "db3c990c388a2cd0", "scanner": "scanner-primary", "fingerprint": "f44aff7f7219688f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-295da9227fc66584", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-events.ts:295"}, "properties": {"repobilityId": "8ec22ffdb91d203f", "scanner": "scanner-primary", "fingerprint": "295da9227fc66584", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-215b6adccf992266", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/frontend/src/hooks/use-timeline-scroll.test.tsx:151"}, "properties": {"repobilityId": "99e38e14736f965c", "scanner": "scanner-primary", "fingerprint": "215b6adccf992266", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-02d8c585c7789611", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-scroll-behavior.test.tsx:135"}, "properties": {"repobilityId": "88828e34400bbdae", "scanner": "scanner-primary", "fingerprint": "02d8c585c7789611", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-96fa2f837a5e2f14", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-decrypted-draft-previews.test.ts:112"}, "properties": {"repobilityId": "cced26190e3c982b", "scanner": "scanner-primary", "fingerprint": "96fa2f837a5e2f14", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fc323dadc4820d20", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/frontend/src/hooks/use-scheduled.ts:199"}, "properties": {"repobilityId": "1132cb605c6e825f", "scanner": "scanner-primary", "fingerprint": "fc323dadc4820d20", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8f2a8891e1558346", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/frontend/src/hooks/use-discuss-with-ariadne.ts:57"}, "properties": {"repobilityId": "7872ecee6ae7fda6", "scanner": "scanner-primary", "fingerprint": "8f2a8891e1558346", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d221f830282571e5", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/frontend/src/hooks/use-voice-dictation.ts:186"}, "properties": {"repobilityId": "62f3a560d6147076", "scanner": "scanner-primary", "fingerprint": "d221f830282571e5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-004b2a680e0aa645", "level": "none", "message": {"text": "Commented-code block (12 lines) in apps/frontend/src/hooks/use-timeline-scroll.ts:135"}, "properties": {"repobilityId": "38fefed582bf9709", "scanner": "scanner-primary", "fingerprint": "004b2a680e0aa645", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d41221c5cb83cfd9", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/frontend/src/db/database.ts:319"}, "properties": {"repobilityId": "dca566e56694f320", "scanner": "scanner-primary", "fingerprint": "d41221c5cb83cfd9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a114f17281cf612e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/workspace-router/src/index.test.ts:71"}, "properties": {"repobilityId": "9b6e5c5caf74133f", "scanner": "scanner-primary", "fingerprint": "a114f17281cf612e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-69d97a580c40615d", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/workspace-router/src/index.ts:113"}, "properties": {"repobilityId": "1a3a6e54e32bcc22", "scanner": "scanner-primary", "fingerprint": "69d97a580c40615d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-24704c2fbda88573", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/workspace-router/src/index.ts:93"}, "properties": {"repobilityId": "50442d5a0ce8a21e", "scanner": "scanner-primary", "fingerprint": "24704c2fbda88573", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-731143046b716542", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backoffice-router/src/index.test.ts:48"}, "properties": {"repobilityId": "9a185f4b2aef3b87", "scanner": "scanner-primary", "fingerprint": "731143046b716542", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4cb06e27289191e6", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backoffice-router/src/index.ts:66"}, "properties": {"repobilityId": "869e099c1709523a", "scanner": "scanner-primary", "fingerprint": "4cb06e27289191e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aca7cead8da61d5e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backoffice-router/src/index.ts:33"}, "properties": {"repobilityId": "52075103345f8590", "scanner": "scanner-primary", "fingerprint": "aca7cead8da61d5e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9c2c82b79b76d9fc", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/control-plane/tests/integration/workos-authz-backfill.test.ts:32"}, "properties": {"repobilityId": "3357818cbf015ac8", "scanner": "scanner-primary", "fingerprint": "9c2c82b79b76d9fc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-93191d6b55295f3e", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/control-plane/tests/integration/workos-authz-admin-service.test.ts:255"}, "properties": {"repobilityId": "4724174cd3f281c5", "scanner": "scanner-primary", "fingerprint": "93191d6b55295f3e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b44c2024527220e7", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/control-plane/tests/e2e/accounts.test.ts:143"}, "properties": {"repobilityId": "7f729eafb513c7e5", "scanner": "scanner-primary", "fingerprint": "b44c2024527220e7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6696148fd04938f0", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/control-plane/src/app.ts:55"}, "properties": {"repobilityId": "f48faf13e8550f07", "scanner": "scanner-primary", "fingerprint": "6696148fd04938f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9bc47a6e738d748d", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/control-plane/src/server.ts:158"}, "properties": {"repobilityId": "6e58b46447858c01", "scanner": "scanner-primary", "fingerprint": "9bc47a6e738d748d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-97a5d135820897f1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/control-plane/src/features/integrations/handlers.ts:56"}, "properties": {"repobilityId": "ec2d0021e148bfba", "scanner": "scanner-primary", "fingerprint": "97a5d135820897f1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7dd90408ca09685f", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/control-plane/src/features/workos-authz/fan-out.ts:53"}, "properties": {"repobilityId": "fc26476b765e8ea3", "scanner": "scanner-primary", "fingerprint": "7dd90408ca09685f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ab97d2b84887897a", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/control-plane/src/features/auth/stub-handlers.ts:66"}, "properties": {"repobilityId": "f736a55ccf605146", "scanner": "scanner-primary", "fingerprint": "ab97d2b84887897a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6cc397df8c956923", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/control-plane/src/features/auth/handlers.ts:118"}, "properties": {"repobilityId": "318e9b3465512ad2", "scanner": "scanner-primary", "fingerprint": "6cc397df8c956923", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ed606bd498d02b1", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/control-plane/src/features/accounts/service.test.ts:103"}, "properties": {"repobilityId": "14a70d6c6483cd1a", "scanner": "scanner-primary", "fingerprint": "1ed606bd498d02b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e7efd39919b0a42e", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/control-plane/src/features/accounts/service.ts:77"}, "properties": {"repobilityId": "80007eb07da963ff", "scanner": "scanner-primary", "fingerprint": "e7efd39919b0a42e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b8c894b90f145ef", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/enclave/src/index.ts:56"}, "properties": {"repobilityId": "f2bd4c976f4830d0", "scanner": "scanner-primary", "fingerprint": "8b8c894b90f145ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0404e35f275f4f64", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/enclave/src/register.ts:14"}, "properties": {"repobilityId": "697bc3646f651638", "scanner": "scanner-primary", "fingerprint": "0404e35f275f4f64", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4848b3aad6205791", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/enclave/src/llm.ts:68"}, "properties": {"repobilityId": "7313f3f03ac730b4", "scanner": "scanner-primary", "fingerprint": "4848b3aad6205791", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-31c2b6d9cb9ae5d7", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/enclave/src/claim-loop.ts:52"}, "properties": {"repobilityId": "21be2f7ca4aa84fd", "scanner": "scanner-primary", "fingerprint": "31c2b6d9cb9ae5d7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-adc3eb4889e3de39", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/enclave/src/agent/trace-observer.ts:131"}, "properties": {"repobilityId": "9e049b88378ba81e", "scanner": "scanner-primary", "fingerprint": "adc3eb4889e3de39", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9be4c09b784197e7", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/enclave/src/agent/run-turn.ts:179"}, "properties": {"repobilityId": "ec1e3be2865854ba", "scanner": "scanner-primary", "fingerprint": "9be4c09b784197e7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-835ab09ad814e383", "level": "note", "message": {"text": "Legacy-named symbol `msg_old` in apps/enclave/src/agent/run-turn.test.ts:520"}, "properties": {"repobilityId": "2c5a4b2a4a4d588d", "scanner": "scanner-primary", "fingerprint": "835ab09ad814e383", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7fe3df819ac11f0f", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/enclave/src/agent/tools.ts:87"}, "properties": {"repobilityId": "cd8888c006f0b403", "scanner": "scanner-primary", "fingerprint": "7fe3df819ac11f0f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-514a0f7a1d9a4733", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/backend/eslint.config.js:59"}, "properties": {"repobilityId": "9aec3e9b0990f860", "scanner": "scanner-primary", "fingerprint": "514a0f7a1d9a4733", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c1e2b0541931a8e3", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/backend/tests/integration/sync-catch-up.test.ts:246"}, "properties": {"repobilityId": "92b4369474e3c0e9", "scanner": "scanner-primary", "fingerprint": "c1e2b0541931a8e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52d3f7cf06fa6fe8", "level": "none", "message": {"text": "Commented-code block (13 lines) in apps/backend/tests/integration/message-move.test.ts:55"}, "properties": {"repobilityId": "fe152e3c094445d2", "scanner": "scanner-primary", "fingerprint": "52d3f7cf06fa6fe8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b2d0e776b17db94", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/tests/integration/cursor-lock.test.ts:654"}, "properties": {"repobilityId": "9963fee9e4442f00", "scanner": "scanner-primary", "fingerprint": "7b2d0e776b17db94", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-37c3b60493e3971e", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/tests/integration/push.test.ts:1184"}, "properties": {"repobilityId": "e743251d30d02da1", "scanner": "scanner-primary", "fingerprint": "37c3b60493e3971e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5586788ffc6580e4", "level": "note", "message": {"text": "Legacy-named symbol `queue_old` in apps/backend/tests/integration/queue-repository.test.ts:788"}, "properties": {"repobilityId": "ac445383ea12a085", "scanner": "scanner-primary", "fingerprint": "5586788ffc6580e4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-11d6e360801bbe06", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/tests/integration/thread-summary.test.ts:352"}, "properties": {"repobilityId": "2f9c4a1c2d134575", "scanner": "scanner-primary", "fingerprint": "11d6e360801bbe06", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-39ceef257430d563", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/tests/integration/prune-legacy-counter-entries.test.ts:7"}, "properties": {"repobilityId": "a1e81b18d326750f", "scanner": "scanner-primary", "fingerprint": "39ceef257430d563", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5a2dec2f2beb9df3", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/tests/e2e/bot-runtime-websocket.test.ts:128"}, "properties": {"repobilityId": "3709d7226f57db63", "scanner": "scanner-primary", "fingerprint": "5a2dec2f2beb9df3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-16116ae1bee9a2d9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/scripts/add-emoji-groups.ts:40"}, "properties": {"repobilityId": "5f559637817e14df", "scanner": "scanner-primary", "fingerprint": "16116ae1bee9a2d9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1fcf4e10ab00be0b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/evals/suites/companion/cases.ts:646"}, "properties": {"repobilityId": "f30ea178287ba24e", "scanner": "scanner-primary", "fingerprint": "1fcf4e10ab00be0b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-607c22d71962a1b4", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/backend/src/socket.ts:128"}, "properties": {"repobilityId": "6fba2b9dc358ae99", "scanner": "scanner-primary", "fingerprint": "607c22d71962a1b4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc146bac893428e5", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/app.ts:76"}, "properties": {"repobilityId": "90d9d64d510bd7fe", "scanner": "scanner-primary", "fingerprint": "bc146bac893428e5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dd78b42c11b89d78", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/server.ts:288"}, "properties": {"repobilityId": "1792b714b976cb83", "scanner": "scanner-primary", "fingerprint": "dd78b42c11b89d78", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0f42d0e08c37e241", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/routes.ts:318"}, "properties": {"repobilityId": "1ffbbaede5764791", "scanner": "scanner-primary", "fingerprint": "0f42d0e08c37e241", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-40d130055072ca7c", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/middleware/workspace-permission.ts:31"}, "properties": {"repobilityId": "0c3d47b5a20b5632", "scanner": "scanner-primary", "fingerprint": "40d130055072ca7c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-416b45f56a51e640", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/middleware/public-api-auth.ts:69"}, "properties": {"repobilityId": "94ebe95e0fcd06a4", "scanner": "scanner-primary", "fingerprint": "416b45f56a51e640", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d4e524ed758a705", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/backend/src/lib/schemas.ts:46"}, "properties": {"repobilityId": "7a512f0592d48626", "scanner": "scanner-primary", "fingerprint": "8d4e524ed758a705", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1652238e9ef911dd", "level": "note", "message": {"text": "Legacy-named symbol `bot_old` in apps/backend/src/lib/outbox/broadcast-handler.test.ts:588"}, "properties": {"repobilityId": "f3dc8cdda608931f", "scanner": "scanner-primary", "fingerprint": "1652238e9ef911dd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c04561824a1ebcd4", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/lib/outbox/delivery-groups.ts:259"}, "properties": {"repobilityId": "577f64b35c4af45f", "scanner": "scanner-primary", "fingerprint": "c04561824a1ebcd4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-61383a0176ffd15a", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/backend/src/lib/outbox/delivery-groups.test.ts:44"}, "properties": {"repobilityId": "301f812888573c6a", "scanner": "scanner-primary", "fingerprint": "61383a0176ffd15a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a1e861ebf77746ec", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/lib/outbox/repository.ts:709"}, "properties": {"repobilityId": "4741ebfeab8fcb06", "scanner": "scanner-primary", "fingerprint": "a1e861ebf77746ec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9b167543cbefa1d3", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/lib/queue/token-pool-repository.ts:118"}, "properties": {"repobilityId": "440c78b7f9159b92", "scanner": "scanner-primary", "fingerprint": "9b167543cbefa1d3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f612d6e26a8c7f81", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/features/user-e2e-keys/handlers.ts:6"}, "properties": {"repobilityId": "09048d321d51fcca", "scanner": "scanner-primary", "fingerprint": "f612d6e26a8c7f81", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-01c5a21ec9ed5299", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/streams/policy-repository.ts:48"}, "properties": {"repobilityId": "78a099d13fa586b1", "scanner": "scanner-primary", "fingerprint": "01c5a21ec9ed5299", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7df508ca647134d0", "level": "note", "message": {"text": "Legacy-named symbol `evt_old` in apps/backend/src/features/streams/service.test.ts:1252"}, "properties": {"repobilityId": "838c102b3120847f", "scanner": "scanner-primary", "fingerprint": "7df508ca647134d0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3b503fbc59d7fbb7", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/streams/service.test.ts:36"}, "properties": {"repobilityId": "38fc3b4e37cd179c", "scanner": "scanner-primary", "fingerprint": "3b503fbc59d7fbb7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0769bc83f38d92a1", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/backend/src/features/streams/repository.ts:521"}, "properties": {"repobilityId": "6dbfae45e53c9da2", "scanner": "scanner-primary", "fingerprint": "0769bc83f38d92a1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ad253c42c3f985e1", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/features/streams/handlers.ts:537"}, "properties": {"repobilityId": "5b995237399beed6", "scanner": "scanner-primary", "fingerprint": "ad253c42c3f985e1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-54acd9bc6c1ed3b1", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/features/streams/service.ts:606"}, "properties": {"repobilityId": "c9bab0078756b4b8", "scanner": "scanner-primary", "fingerprint": "54acd9bc6c1ed3b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6d2569ca3b044529", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/src/features/saved-messages/view.ts:12"}, "properties": {"repobilityId": "ed6dbb12da16a3e1", "scanner": "scanner-primary", "fingerprint": "6d2569ca3b044529", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2f038d8767568efa", "level": "note", "message": {"text": "Legacy-named symbol `remq_old` in apps/backend/src/features/saved-messages/service.test.ts:408"}, "properties": {"repobilityId": "dcd6b267febd1957", "scanner": "scanner-primary", "fingerprint": "2f038d8767568efa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fe13e0e9c8b8ff98", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/saved-messages/handlers.ts:27"}, "properties": {"repobilityId": "18e70fe7872e82ed", "scanner": "scanner-primary", "fingerprint": "fe13e0e9c8b8ff98", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-46e3d15bb834d20d", "level": "note", "message": {"text": "Legacy-named symbol `remq_old` in apps/backend/src/features/saved-messages/repository.test.ts:82"}, "properties": {"repobilityId": "75c8c350399e077e", "scanner": "scanner-primary", "fingerprint": "46e3d15bb834d20d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-550c364e13769d24", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/emoji/emoji.test.ts:126"}, "properties": {"repobilityId": "e7ea024eba7854a6", "scanner": "scanner-primary", "fingerprint": "550c364e13769d24", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3f545b82e0b023b", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/backend/src/features/voice-transcription/config.ts:48"}, "properties": {"repobilityId": "61c20cb320cab31e", "scanner": "scanner-primary", "fingerprint": "e3f545b82e0b023b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aec97f1f3af8e439", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/features/voice-transcription/realtime-gateway.ts:153"}, "properties": {"repobilityId": "9bb4e57bbfe8ab7a", "scanner": "scanner-primary", "fingerprint": "aec97f1f3af8e439", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-caca4cc80c1ea635", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/voice-transcription/polish.test.ts:123"}, "properties": {"repobilityId": "87f4fe348ad24d84", "scanner": "scanner-primary", "fingerprint": "caca4cc80c1ea635", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc181d8b2514c425", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/features/voice-transcription/transcription/realtime-deepgram.ts:199"}, "properties": {"repobilityId": "dec3116dffabd400", "scanner": "scanner-primary", "fingerprint": "bc181d8b2514c425", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0c59083eb18f00b9", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/sync/reconciliation-worker.ts:45"}, "properties": {"repobilityId": "6b9260ba5b679460", "scanner": "scanner-primary", "fingerprint": "0c59083eb18f00b9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ebddd1e38f2b7189", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/sync/repository.ts:254"}, "properties": {"repobilityId": "a473318ee6608214", "scanner": "scanner-primary", "fingerprint": "ebddd1e38f2b7189", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e2128ebcbf7fa20", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/backend/src/features/sync/service.ts:39"}, "properties": {"repobilityId": "48dbb78830ad7d75", "scanner": "scanner-primary", "fingerprint": "3e2128ebcbf7fa20", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-14b3627579c75395", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/backend/src/features/push/outbox-handler.ts:37"}, "properties": {"repobilityId": "d4dea61c123bc8cc", "scanner": "scanner-primary", "fingerprint": "14b3627579c75395", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac46ae7e2e3d1467", "level": "none", "message": {"text": "Commented-code block (11 lines) in apps/backend/src/features/push/service.ts:585"}, "properties": {"repobilityId": "183d68c1cbdf5a10", "scanner": "scanner-primary", "fingerprint": "ac46ae7e2e3d1467", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f40735794b2c915d", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/backend/src/features/workspaces/user-repository.ts:125"}, "properties": {"repobilityId": "0fb339bb0407f62f", "scanner": "scanner-primary", "fingerprint": "f40735794b2c915d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e681ed51ba4d025d", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/workspaces/handlers.ts:232"}, "properties": {"repobilityId": "4c30945e4c171c71", "scanner": "scanner-primary", "fingerprint": "e681ed51ba4d025d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-26f0a25ad81743fe", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/memos/service.ts:270"}, "properties": {"repobilityId": "5eed87209bec0675", "scanner": "scanner-primary", "fingerprint": "26f0a25ad81743fe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-df3d00f8fcd01d78", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/activity/service.ts:44"}, "properties": {"repobilityId": "aef9739d5e9f7164", "scanner": "scanner-primary", "fingerprint": "df3d00f8fcd01d78", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85fa77cb8e3d911e", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/backend/src/features/enclave-runtimes/session-handlers.ts:732"}, "properties": {"repobilityId": "63b1a4177dfac051", "scanner": "scanner-primary", "fingerprint": "85fa77cb8e3d911e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-180515694e545860", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/features/enclave-runtimes/claim-service.ts:166"}, "properties": {"repobilityId": "26aba3773d5d2613", "scanner": "scanner-primary", "fingerprint": "180515694e545860", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fc4e175b30e8b39e", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/backend/src/features/enclave-runtimes/handlers.ts:156"}, "properties": {"repobilityId": "5bab8dfe1755c284", "scanner": "scanner-primary", "fingerprint": "fc4e175b30e8b39e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-46e10726becc5631", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/features/enclave-runtimes/dispatch/enclave-dispatch-handler.ts:106"}, "properties": {"repobilityId": "e8fc2cd55187d0ff", "scanner": "scanner-primary", "fingerprint": "46e10726becc5631", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-42d2c468a7df84ca", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/enclave-runtimes/dispatch/request-builder.ts:104"}, "properties": {"repobilityId": "9c40f17a63a8b8fb", "scanner": "scanner-primary", "fingerprint": "42d2c468a7df84ca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c69393e23a0ad323", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/conversations/boundary-extraction-service.ts:59"}, "properties": {"repobilityId": "9c2523d5581e977b", "scanner": "scanner-primary", "fingerprint": "c69393e23a0ad323", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8a1febdad7e12823", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/features/conversations/boundary-extraction/llm-extractor.ts:195"}, "properties": {"repobilityId": "bfbed47dd30aca71", "scanner": "scanner-primary", "fingerprint": "8a1febdad7e12823", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2d7bb144d3b548c2", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/drafts/service.ts:115"}, "properties": {"repobilityId": "62ba3509ce6a8723", "scanner": "scanner-primary", "fingerprint": "2d7bb144d3b548c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-83aa164ce83803ff", "level": "note", "message": {"text": "Legacy-named symbol `rt_old` in apps/backend/src/features/workspace-integrations/linear-oauth.test.ts:127"}, "properties": {"repobilityId": "66d7f21a9ae1f914", "scanner": "scanner-primary", "fingerprint": "83aa164ce83803ff", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-88e432a4e2e13d90", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/features/public-api/claim-context.test.ts:13"}, "properties": {"repobilityId": "fd89f6654f99fcc5", "scanner": "scanner-primary", "fingerprint": "88e432a4e2e13d90", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-df2c147f1470a998", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/public-api/routes.ts:46"}, "properties": {"repobilityId": "38939674b4fb08a2", "scanner": "scanner-primary", "fingerprint": "df2c147f1470a998", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-514c696cda928bd9", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/backend/src/features/public-api/handlers.ts:510"}, "properties": {"repobilityId": "3ec3ebec579dada2", "scanner": "scanner-primary", "fingerprint": "514c696cda928bd9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-18e783f140d3e079", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/agents/conversation-summary-service.test.ts:32"}, "properties": {"repobilityId": "2fea15bc8b908aa3", "scanner": "scanner-primary", "fingerprint": "18e783f140d3e079", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-08e82216c6bdacd2", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/agents/persona-agent-worker.ts:61"}, "properties": {"repobilityId": "1d2fd630352849a9", "scanner": "scanner-primary", "fingerprint": "08e82216c6bdacd2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f22f691851992d96", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/features/agents/mention-invoke-outbox-handler.ts:64"}, "properties": {"repobilityId": "533d7e6477b8251b", "scanner": "scanner-primary", "fingerprint": "f22f691851992d96", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-875a7551755cb646", "level": "note", "message": {"text": "Legacy-named symbol `session_old` in apps/backend/src/features/agents/message-mutation-outbox-handler.test.ts:81"}, "properties": {"repobilityId": "5585ebfedc57d689", "scanner": "scanner-primary", "fingerprint": "875a7551755cb646", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-843755c2820b9863", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/features/agents/conversation-summary-service.ts:47"}, "properties": {"repobilityId": "aaafd5bbbb632db0", "scanner": "scanner-primary", "fingerprint": "843755c2820b9863", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8ff5e1d1f253c9a8", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/features/agents/context-builder.ts:432"}, "properties": {"repobilityId": "16be3ca71ec6d76a", "scanner": "scanner-primary", "fingerprint": "8ff5e1d1f253c9a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bb939ac584049f05", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/backend/src/features/agents/persona-agent.ts:302"}, "properties": {"repobilityId": "508df6acb3c575b7", "scanner": "scanner-primary", "fingerprint": "bb939ac584049f05", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ddf610a1df3f90f6", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/features/agents/enclave-system-prompt.ts:63"}, "properties": {"repobilityId": "f557ea270f13b77b", "scanner": "scanner-primary", "fingerprint": "ddf610a1df3f90f6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-baf3644f9bd2744c", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/agents/trace-emitter.ts:246"}, "properties": {"repobilityId": "d3e8781e508b19bd", "scanner": "scanner-primary", "fingerprint": "baf3644f9bd2744c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c79ebeb2687a550c", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/agents/persona-repository.ts:72"}, "properties": {"repobilityId": "5843bb71d5cfa951", "scanner": "scanner-primary", "fingerprint": "c79ebeb2687a550c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-00f45db11d6da3c8", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/backend/src/features/agents/companion/strip-inaccessible-refs.ts:121"}, "properties": {"repobilityId": "a6a28ef5317d881e", "scanner": "scanner-primary", "fingerprint": "00f45db11d6da3c8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-42874754a46add6c", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/agents/companion/cross-surface-stitch.ts:105"}, "properties": {"repobilityId": "563beaf3e8dac855", "scanner": "scanner-primary", "fingerprint": "42874754a46add6c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2dd3ef51bb2f36f0", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/agents/companion/context.ts:164"}, "properties": {"repobilityId": "0bf58647df3657ef", "scanner": "scanner-primary", "fingerprint": "2dd3ef51bb2f36f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5bd2559c3ec864d7", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/features/agents/runtime/session-trace-sink.ts:57"}, "properties": {"repobilityId": "c77e373cd421ad41", "scanner": "scanner-primary", "fingerprint": "5bd2559c3ec864d7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55c109378e9c26f0", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/agents/researcher/researcher.ts:345"}, "properties": {"repobilityId": "653f349024994b9e", "scanner": "scanner-primary", "fingerprint": "55c109378e9c26f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e4769f145de626f4", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/agents/researcher/context-formatter.ts:118"}, "properties": {"repobilityId": "c38e5408e562f655", "scanner": "scanner-primary", "fingerprint": "e4769f145de626f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b5dda729226ae56f", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/features/agents/context-bag/resolve.ts:155"}, "properties": {"repobilityId": "6ab0dcfffcc5bc2a", "scanner": "scanner-primary", "fingerprint": "b5dda729226ae56f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-20dc42e896fbf367", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/src/features/agents/context-bag/resolve.ts:122"}, "properties": {"repobilityId": "ca5b5ed928268c32", "scanner": "scanner-primary", "fingerprint": "20dc42e896fbf367", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f7e1d16cdb06a7db", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/src/features/agents/context-bag/precompute-service.ts:79"}, "properties": {"repobilityId": "aa44eeb713dfdc1b", "scanner": "scanner-primary", "fingerprint": "f7e1d16cdb06a7db", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6f2c740db8954a73", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/agents/context-bag/fetch-stream-bag.ts:128"}, "properties": {"repobilityId": "822fc1ec22ee8e31", "scanner": "scanner-primary", "fingerprint": "6f2c740db8954a73", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b764815b30f00e7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/src/features/agents/context-bag/types.ts:95"}, "properties": {"repobilityId": "476ccddc71cb91db", "scanner": "scanner-primary", "fingerprint": "0b764815b30f00e7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bec9bfc1bf3e1d48", "level": "note", "message": {"text": "Legacy-named symbol `msg_old` in apps/backend/src/features/agents/context-bag/resolvers/thread-resolver.test.ts:210"}, "properties": {"repobilityId": "8d72853ff7095a8a", "scanner": "scanner-primary", "fingerprint": "bec9bfc1bf3e1d48", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-15359869141bfe92", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/agents/context-bag/resolvers/thread-resolver.test.ts:222"}, "properties": {"repobilityId": "d3b1abd151396b25", "scanner": "scanner-primary", "fingerprint": "15359869141bfe92", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-af9adca5e108cde6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/src/features/agents/context-bag/resolvers/thread-resolver.test.ts:162"}, "properties": {"repobilityId": "10af041a9c9216a8", "scanner": "scanner-primary", "fingerprint": "af9adca5e108cde6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-55b67d3b6356fddd", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/agents/context-bag/resolvers/thread-resolver.ts:78"}, "properties": {"repobilityId": "9a2d82768714a1fe", "scanner": "scanner-primary", "fingerprint": "55b67d3b6356fddd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-11c677e9b38978b1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/src/features/agents/context-bag/resolvers/thread-resolver.ts:64"}, "properties": {"repobilityId": "6216d40d7ead9576", "scanner": "scanner-primary", "fingerprint": "11c677e9b38978b1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d961685ced8b9823", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/backend/src/features/messaging/event-service.test.ts:247"}, "properties": {"repobilityId": "20a377a64ab445f1", "scanner": "scanner-primary", "fingerprint": "d961685ced8b9823", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c469577fce02245", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/backend/src/features/messaging/index.ts:1"}, "properties": {"repobilityId": "2b1b65492fe110cc", "scanner": "scanner-primary", "fingerprint": "7c469577fce02245", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-43fb08ea25de292f", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/backend/src/features/messaging/repository.ts:516"}, "properties": {"repobilityId": "b84598e1314186f0", "scanner": "scanner-primary", "fingerprint": "43fb08ea25de292f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-166fee31694488e8", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/messaging/handlers.ts:22"}, "properties": {"repobilityId": "0a17235045b8f835", "scanner": "scanner-primary", "fingerprint": "166fee31694488e8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-06172128c513e37f", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/features/messaging/repository.test.ts:86"}, "properties": {"repobilityId": "f6a6e5fe1129ecf2", "scanner": "scanner-primary", "fingerprint": "06172128c513e37f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0ba2949e5616749c", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/messaging/event-service.ts:276"}, "properties": {"repobilityId": "90a5391bbceb17f0", "scanner": "scanner-primary", "fingerprint": "0ba2949e5616749c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a9413fe80ad1702a", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/messaging/sharing/access-check.test.ts:164"}, "properties": {"repobilityId": "b08c4fde15e49e8d", "scanner": "scanner-primary", "fingerprint": "a9413fe80ad1702a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aa729e2f8d17bc25", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/messaging/sharing/outbox-handler.ts:73"}, "properties": {"repobilityId": "bc8af78fb53e7741", "scanner": "scanner-primary", "fingerprint": "aa729e2f8d17bc25", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8971e05d070d125b", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/messaging/sharing/hydration.test.ts:217"}, "properties": {"repobilityId": "ae0273bd304b5f60", "scanner": "scanner-primary", "fingerprint": "8971e05d070d125b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c784574c5078f8ab", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/messaging/sharing/hydration.ts:204"}, "properties": {"repobilityId": "b951f3fedd977c48", "scanner": "scanner-primary", "fingerprint": "c784574c5078f8ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f9683af7918dc486", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/backend/src/features/messaging/sharing/service.ts:163"}, "properties": {"repobilityId": "aa975a42db92d009", "scanner": "scanner-primary", "fingerprint": "f9683af7918dc486", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b01cf2ed595783a5", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/backend/src/features/workspace-authz/service.ts:77"}, "properties": {"repobilityId": "543838ded3450a29", "scanner": "scanner-primary", "fingerprint": "b01cf2ed595783a5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dca29c6548fcaf9c", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/backend/src/features/labels/service.ts:309"}, "properties": {"repobilityId": "1518887d49ec5fa8", "scanner": "scanner-primary", "fingerprint": "dca29c6548fcaf9c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f7490655697b197", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/features/link-previews/github-preview.ts:15"}, "properties": {"repobilityId": "7dd54fcff9c6508a", "scanner": "scanner-primary", "fingerprint": "2f7490655697b197", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-98ba851d5f08e980", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/backend/src/features/link-previews/worker.ts:282"}, "properties": {"repobilityId": "fc54e07d913b2c44", "scanner": "scanner-primary", "fingerprint": "98ba851d5f08e980", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-de0e42ce4fe85bd8", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/attachments/text/parsers/code-parser.ts:131"}, "properties": {"repobilityId": "75211f8a0d0c1e8e", "scanner": "scanner-primary", "fingerprint": "de0e42ce4fe85bd8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5e851b48f3e97dfc", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/bot-runtimes/socket-handler.ts:34"}, "properties": {"repobilityId": "2d812a88f2f46c88", "scanner": "scanner-primary", "fingerprint": "5e851b48f3e97dfc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f99a6cd938511909", "level": "note", "message": {"text": "Legacy-named symbol `bot_old` in apps/backend/src/features/bot-runtimes/service.test.ts:232"}, "properties": {"repobilityId": "f7ab5e6e7a96678f", "scanner": "scanner-primary", "fingerprint": "f99a6cd938511909", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e6a7e93dcbd172a2", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/features/bot-runtimes/repository.ts:416"}, "properties": {"repobilityId": "c5564b49949577c6", "scanner": "scanner-primary", "fingerprint": "e6a7e93dcbd172a2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b932008d5e4a83a", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/features/bot-runtimes/service.ts:141"}, "properties": {"repobilityId": "8032e298c95f6ee0", "scanner": "scanner-primary", "fingerprint": "6b932008d5e4a83a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4fdd09b34426187b", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/features/scheduled-messages/service.test.ts:250"}, "properties": {"repobilityId": "f4a7319743607b94", "scanner": "scanner-primary", "fingerprint": "4fdd09b34426187b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bdaa5209343f7f16", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/backend/src/features/scheduled-messages/repository.test.ts:214"}, "properties": {"repobilityId": "6babe1ceeca7144a", "scanner": "scanner-primary", "fingerprint": "bdaa5209343f7f16", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8ca8b2720c6ad237", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/features/scheduled-messages/service.ts:122"}, "properties": {"repobilityId": "08ab984d58c8a4ca", "scanner": "scanner-primary", "fingerprint": "8ca8b2720c6ad237", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ba7f9d5b3d58927c", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/backoffice/src/components/ui/responsive-alert-dialog.tsx:27"}, "properties": {"repobilityId": "e54c4a04375a3402", "scanner": "scanner-primary", "fingerprint": "ba7f9d5b3d58927c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec166ef7f964ed22", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/dev-test.ts:213"}, "properties": {"repobilityId": "cfdc56d6a633b602", "scanner": "scanner-primary", "fingerprint": "ec166ef7f964ed22", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef511fb609fd3a33", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sync-workos-permissions.ts:82"}, "properties": {"repobilityId": "bfca2b49c4cbbe44", "scanner": "scanner-primary", "fingerprint": "ef511fb609fd3a33", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c661a6d94fb27834", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/dev.ts:366"}, "properties": {"repobilityId": "62048ddbba024e96", "scanner": "scanner-primary", "fingerprint": "c661a6d94fb27834", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-957b0afaa993d5c9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/staging-kv-cleanup.ts:61"}, "properties": {"repobilityId": "946fca1d3712d7b0", "scanner": "scanner-primary", "fingerprint": "957b0afaa993d5c9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-759f1b9dd9de1c2e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/analyze-conversation-boundaries.ts:41"}, "properties": {"repobilityId": "7607f59f65f5946d", "scanner": "scanner-primary", "fingerprint": "759f1b9dd9de1c2e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f4eaa45b31f4365b", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/staging-pr.ts:162"}, "properties": {"repobilityId": "a4383a9e0f05d313", "scanner": "scanner-primary", "fingerprint": "f4eaa45b31f4365b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d1420d7a897aeab", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/staging-pr.ts:492"}, "properties": {"repobilityId": "ef52534c0589a593", "scanner": "scanner-primary", "fingerprint": "4d1420d7a897aeab", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2c7deef4565fcd13", "level": "none", "message": {"text": "Commented-code block (5 lines) in extensions/pi-remote/src/threa-remote.ts:239"}, "properties": {"repobilityId": "da071a7539000be3", "scanner": "scanner-primary", "fingerprint": "2c7deef4565fcd13", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-150f6e950cd08ddb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 extensions/pi-remote/src/threa-remote.ts:1202"}, "properties": {"repobilityId": "f671ef8d8e738e26", "scanner": "scanner-primary", "fingerprint": "150f6e950cd08ddb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-043d2db01000e927", "level": "none", "message": {"text": "Commented-code block (5 lines) in extensions/pi-remote/src/threa-remote.test.ts:586"}, "properties": {"repobilityId": "42fab530de09bad7", "scanner": "scanner-primary", "fingerprint": "043d2db01000e927", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8da4644ab3a69d2a", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/types/src/feature-flags.ts:1"}, "properties": {"repobilityId": "2866107278fa9e62", "scanner": "scanner-primary", "fingerprint": "8da4644ab3a69d2a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dfa97689b1eb6112", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/types/src/workspace-settings.ts:1"}, "properties": {"repobilityId": "44ddde291a2255ef", "scanner": "scanner-primary", "fingerprint": "dfa97689b1eb6112", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c4149c79f619ebb", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/types/src/sidebar.ts:251"}, "properties": {"repobilityId": "eed2d6d13bd81ede", "scanner": "scanner-primary", "fingerprint": "2c4149c79f619ebb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-47c9553c61e1752c", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/types/src/user-status.ts:7"}, "properties": {"repobilityId": "78fd76edf7f3e1cf", "scanner": "scanner-primary", "fingerprint": "47c9553c61e1752c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-74cfff3a47c7a491", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/types/src/preferences.ts:122"}, "properties": {"repobilityId": "67e586573755fcb7", "scanner": "scanner-primary", "fingerprint": "74cfff3a47c7a491", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e4d6d8fb3f061cfa", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/types/src/constants.ts:24"}, "properties": {"repobilityId": "25d498789f369646", "scanner": "scanner-primary", "fingerprint": "e4d6d8fb3f061cfa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-462662804cb36cae", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/types/src/work-schedule.ts:1"}, "properties": {"repobilityId": "8903708adace4c83", "scanner": "scanner-primary", "fingerprint": "462662804cb36cae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fc3aa6fe8e9745a5", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/agent-runtime/src/logger.ts:19"}, "properties": {"repobilityId": "aa7ea96db0fec0eb", "scanner": "scanner-primary", "fingerprint": "fc3aa6fe8e9745a5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7013a36307e51c0f", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/agent-runtime/src/runtime/agent-runtime.ts:512"}, "properties": {"repobilityId": "95d8f8032ca9941d", "scanner": "scanner-primary", "fingerprint": "7013a36307e51c0f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-28c048482ae49f04", "level": "note", "message": {"text": "Legacy-named symbol `msg_unused` in packages/agent-runtime/src/runtime/agent-runtime.test.ts:49"}, "properties": {"repobilityId": "5d45542c1f00b0d9", "scanner": "scanner-primary", "fingerprint": "28c048482ae49f04", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ef19791b6e0e1a95", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/agent-runtime/src/runtime/enclave-runtime.ts:1"}, "properties": {"repobilityId": "4351059ddbf23e62", "scanner": "scanner-primary", "fingerprint": "ef19791b6e0e1a95", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-45142bf8bf9a25b8", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/agent-runtime/src/runtime/turn-driver.ts:14"}, "properties": {"repobilityId": "6ebab2171bf28a95", "scanner": "scanner-primary", "fingerprint": "45142bf8bf9a25b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4439e8c6da53e58", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/agent-runtime/src/tools/read-url-tool.ts:172"}, "properties": {"repobilityId": "c260e0263eedbbf8", "scanner": "scanner-primary", "fingerprint": "d4439e8c6da53e58", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-383ccf729ec1403e", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/backend-common/src/cookies.ts:53"}, "properties": {"repobilityId": "67697d682c11ac60", "scanner": "scanner-primary", "fingerprint": "383ccf729ec1403e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76f08ab1a2cecf05", "level": "none", "message": {"text": "Commented-code block (10 lines) in packages/backend-common/src/auth/auth-service.stub.ts:4"}, "properties": {"repobilityId": "e13c68ae2c52b444", "scanner": "scanner-primary", "fingerprint": "76f08ab1a2cecf05", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3b949ad3f3513980", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/backend-common/src/db/index.ts:107"}, "properties": {"repobilityId": "fa5ce96d833d5838", "scanner": "scanner-primary", "fingerprint": "3b949ad3f3513980", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-02a378c2781801dd", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/prosemirror/src/markdown.ts:130"}, "properties": {"repobilityId": "97fbf7f1861f46a6", "scanner": "scanner-primary", "fingerprint": "02a378c2781801dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3b5eba59879008c9", "level": "note", "message": {"text": "104 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "a4a1409b07b00517", "scanner": "scanner-primary", "fingerprint": "3b5eba59879008c9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-c81181621ca8f3fc", "level": "warning", "message": {"text": "Frontend route `/w/:workspaceId/*` has no Link/navigate to it \u2014 apps/frontend/src/components/attachment-explorer/attachment-explorer.integration.test.tsx"}, "properties": {"repobilityId": "e29ae5f4d4164ede", "scanner": "scanner-primary", "fingerprint": "c81181621ca8f3fc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-2cb3cf91ab663dec", "level": "warning", "message": {"text": "Frontend route `/w/:workspaceId/memos/:memoId` has no Link/navigate to it \u2014 apps/frontend/src/routes/index.test.tsx"}, "properties": {"repobilityId": "5ba9730351b4f18e", "scanner": "scanner-primary", "fingerprint": "2cb3cf91ab663dec", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c065289f0abab1fd", "level": "warning", "message": {"text": "Frontend route `/w/:workspaceId/memory` has no Link/navigate to it \u2014 apps/frontend/src/pages/memory.test.tsx"}, "properties": {"repobilityId": "04bb438c557234b0", "scanner": "scanner-primary", "fingerprint": "c065289f0abab1fd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-103427ad252a701f", "level": "warning", "message": {"text": "Frontend route `/w/:workspaceId/labels/:labelId` has no Link/navigate to it \u2014 apps/frontend/src/pages/label-detail.test.tsx"}, "properties": {"repobilityId": "7337d14a2354c25e", "scanner": "scanner-primary", "fingerprint": "103427ad252a701f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-94354e0be28916f0", "level": "warning", "message": {"text": "Frontend route `/workspaces/:id/members` has no Link/navigate to it \u2014 apps/backoffice/src/pages/workspace-detail-members.test.tsx"}, "properties": {"repobilityId": "ec08cd18b93ae425", "scanner": "scanner-primary", "fingerprint": "94354e0be28916f0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-81df3796f24b0659", "level": "error", "message": {"text": "Dangling fetch: GET https://jsonplaceholder.typicode.com/users (apps/frontend/src/components/editor/multiline-blocks.test.ts:535)"}, "properties": {"repobilityId": "290c34dc550689ce", "scanner": "scanner-primary", "fingerprint": "81df3796f24b0659", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ae388250b6d89156", "level": "error", "message": {"text": "Dangling fetch: GET /version.json (apps/frontend/src/hooks/use-app-update.ts:108)"}, "properties": {"repobilityId": "0cc835bdab2edea8", "scanner": "scanner-primary", "fingerprint": "ae388250b6d89156", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-97325a51f28cd794", "level": "error", "message": {"text": "Dangling fetch: GET /api/data (apps/backend/evals/suites/companion/cases.ts:646)"}, "properties": {"repobilityId": "35ed62cdeff2392c", "scanner": "scanner-primary", "fingerprint": "97325a51f28cd794", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1160a8e3a9a5babe", "level": "error", "message": {"text": "Dangling fetch: GET http://${MINIO_HOST}:${MINIO_PORT}/minio/health/live (scripts/dev.ts:240)"}, "properties": {"repobilityId": "74786697208d95eb", "scanner": "scanner-primary", "fingerprint": "1160a8e3a9a5babe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7b3b737f319fff81", "level": "error", "message": {"text": "Dangling fetch: POST https://api.tavily.com/search (packages/agent-runtime/src/tools/web-search-tool.ts:98)"}, "properties": {"repobilityId": "4f0c83822ef3fa1c", "scanner": "scanner-primary", "fingerprint": "7b3b737f319fff81", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7e3f71caf6c981e5", "level": "note", "message": {"text": "Unused endpoint: GET /api/accounts"}, "properties": {"repobilityId": "99fac4fe51409fc8", "scanner": "scanner-primary", "fingerprint": "7e3f71caf6c981e5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6f43abfdadc7e9ca", "level": "note", "message": {"text": "Unused endpoint: POST /api/accounts/remove"}, "properties": {"repobilityId": "eb465b28cffa5158", "scanner": "scanner-primary", "fingerprint": "6f43abfdadc7e9ca", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-23a8949f07e01898", "level": "note", "message": {"text": "Unused endpoint: POST /api/auth/magic/send"}, "properties": {"repobilityId": "48809dfc693ea566", "scanner": "scanner-primary", "fingerprint": "23a8949f07e01898", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1bb3714794b14146", "level": "note", "message": {"text": "Unused endpoint: POST /query"}, "properties": {"repobilityId": "01266bd32b906236", "scanner": "scanner-primary", "fingerprint": "1bb3714794b14146", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-948b9665910224cb", "level": "note", "message": {"text": "Unused endpoint: GET /api/auth/login"}, "properties": {"repobilityId": "210102cb34d01fd0", "scanner": "scanner-primary", "fingerprint": "948b9665910224cb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-44636634a2e382d1", "level": "note", "message": {"text": "Unused endpoint: ALL /api/auth/callback"}, "properties": {"repobilityId": "b27a07232fe12777", "scanner": "scanner-primary", "fingerprint": "44636634a2e382d1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8d0ebcc45f7aa63f", "level": "note", "message": {"text": "Unused endpoint: GET /api/auth/logout"}, "properties": {"repobilityId": "077103d093825df6", "scanner": "scanner-primary", "fingerprint": "8d0ebcc45f7aa63f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f3552364f856ea66", "level": "note", "message": {"text": "Unused endpoint: POST /api/auth/magic/verify"}, "properties": {"repobilityId": "ffe634fe61b81cf7", "scanner": "scanner-primary", "fingerprint": "f3552364f856ea66", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-acc49e9d7a4e06af", "level": "note", "message": {"text": "Unused endpoint: POST /api/waitlist"}, "properties": {"repobilityId": "09476741fcf12a7e", "scanner": "scanner-primary", "fingerprint": "acc49e9d7a4e06af", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5b698aba957581b9", "level": "note", "message": {"text": "Unused endpoint: GET /test-auth-login"}, "properties": {"repobilityId": "84d5069165f07794", "scanner": "scanner-primary", "fingerprint": "5b698aba957581b9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d3bb83b4c3e7ebaa", "level": "note", "message": {"text": "Unused endpoint: POST /test-auth-login"}, "properties": {"repobilityId": "82b06ff1466dcb77", "scanner": "scanner-primary", "fingerprint": "d3bb83b4c3e7ebaa", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-add853373e1a15fb", "level": "note", "message": {"text": "Unused endpoint: POST /api/dev/login"}, "properties": {"repobilityId": "03f31ff6422cacf4", "scanner": "scanner-primary", "fingerprint": "add853373e1a15fb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ee4aa5ddab88c9dc", "level": "note", "message": {"text": "Unused endpoint: GET /api/auth/me"}, "properties": {"repobilityId": "58be5b8463e96e81", "scanner": "scanner-primary", "fingerprint": "ee4aa5ddab88c9dc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0a56f9e3411f1566", "level": "note", "message": {"text": "Unused endpoint: GET /api/integrations/github/callback"}, "properties": {"repobilityId": "d3e66d4e9ec2d766", "scanner": "scanner-primary", "fingerprint": "0a56f9e3411f1566", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ca2cd240d8a7b70a", "level": "note", "message": {"text": "Unused endpoint: GET /api/integrations/linear/callback"}, "properties": {"repobilityId": "5dcf4e789f60625c", "scanner": "scanner-primary", "fingerprint": "ca2cd240d8a7b70a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6873451af2b51a32", "level": "note", "message": {"text": "Unused endpoint: GET /api/accounts/resolve"}, "properties": {"repobilityId": "f665daf460be5bc0", "scanner": "scanner-primary", "fingerprint": "6873451af2b51a32", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c6edbb61fe040027", "level": "note", "message": {"text": "Unused endpoint: POST /api/accounts/switch"}, "properties": {"repobilityId": "bbd9fb8e868e8a27", "scanner": "scanner-primary", "fingerprint": "c6edbb61fe040027", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2750fce66c46963f", "level": "note", "message": {"text": "Unused endpoint: GET /api/workspaces"}, "properties": {"repobilityId": "5afca6d4f95b91c7", "scanner": "scanner-primary", "fingerprint": "2750fce66c46963f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-33f9e977f636cde7", "level": "note", "message": {"text": "Unused endpoint: POST /api/workspaces"}, "properties": {"repobilityId": "04a1b002f9f4d7e9", "scanner": "scanner-primary", "fingerprint": "33f9e977f636cde7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cffb14b87ab683f5", "level": "note", "message": {"text": "Unused endpoint: GET /api/regions"}, "properties": {"repobilityId": "82d53b1a9fd309d8", "scanner": "scanner-primary", "fingerprint": "cffb14b87ab683f5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-328e362b14848ecc", "level": "note", "message": {"text": "Unused endpoint: POST /api/invitations/:id/accept"}, "properties": {"repobilityId": "e0c240335c7ee177", "scanner": "scanner-primary", "fingerprint": "328e362b14848ecc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-706aaf83118899a9", "level": "note", "message": {"text": "Unused endpoint: GET /api/invitations/lookup"}, "properties": {"repobilityId": "ec406e285d863d44", "scanner": "scanner-primary", "fingerprint": "706aaf83118899a9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b164d9ae4befa177", "level": "note", "message": {"text": "Unused endpoint: POST /api/invitations/claim"}, "properties": {"repobilityId": "4c12d85daf48e636", "scanner": "scanner-primary", "fingerprint": "b164d9ae4befa177", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-563ffac8209fba7f", "level": "note", "message": {"text": "Unused endpoint: GET /api/backoffice/me"}, "properties": {"repobilityId": "8f01ab53437fc804", "scanner": "scanner-primary", "fingerprint": "563ffac8209fba7f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-452ceea82a287bdb", "level": "note", "message": {"text": "Unused endpoint: GET /api/backoffice/config"}, "properties": {"repobilityId": "7a9af99d267cd0f8", "scanner": "scanner-primary", "fingerprint": "452ceea82a287bdb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4ee52fed0f14cdfd", "level": "note", "message": {"text": "Unused endpoint: GET /api/backoffice/workspaces"}, "properties": {"repobilityId": "677e3d4b3fa556f2", "scanner": "scanner-primary", "fingerprint": "4ee52fed0f14cdfd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-35abb9609681650a", "level": "note", "message": {"text": "Unused endpoint: GET /api/backoffice/workspaces/:id"}, "properties": {"repobilityId": "ee2f41a40217ab90", "scanner": "scanner-primary", "fingerprint": "35abb9609681650a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-694f4ad1aa84d016", "level": "note", "message": {"text": "Unused endpoint: GET /api/backoffice/workspaces/:id/members"}, "properties": {"repobilityId": "5ae8fcb46604614b", "scanner": "scanner-primary", "fingerprint": "694f4ad1aa84d016", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d5082f6dc9779162", "level": "note", "message": {"text": "Unused endpoint: POST /api/backoffice/workspaces/:id/members/resync"}, "properties": {"repobilityId": "0bf4eb2f668a2f41", "scanner": "scanner-primary", "fingerprint": "d5082f6dc9779162", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dd03938af1b6c06a", "level": "note", "message": {"text": "Unused endpoint: GET /api/backoffice/outbox-events/status"}, "properties": {"repobilityId": "06f3fa29f43bae5b", "scanner": "scanner-primary", "fingerprint": "dd03938af1b6c06a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7fb341363f670532", "level": "note", "message": {"text": "Unused endpoint: GET /api/backoffice/workspaces/:id/feature-flags"}, "properties": {"repobilityId": "fc51e32104114d58", "scanner": "scanner-primary", "fingerprint": "7fb341363f670532", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-84bccffb4888a331", "level": "note", "message": {"text": "Unused endpoint: PUT /api/backoffice/workspaces/:id/feature-flags"}, "properties": {"repobilityId": "e342aaec02311757", "scanner": "scanner-primary", "fingerprint": "84bccffb4888a331", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f4c0194dbec4fab7", "level": "note", "message": {"text": "Unused endpoint: GET /api/backoffice/waitlist"}, "properties": {"repobilityId": "c207a7d1c201093d", "scanner": "scanner-primary", "fingerprint": "f4c0194dbec4fab7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-06a51d5c02778a07", "level": "note", "message": {"text": "Unused endpoint: GET /api/backoffice/workspaces/:id/invitations"}, "properties": {"repobilityId": "9fcaffa85a8c9184", "scanner": "scanner-primary", "fingerprint": "06a51d5c02778a07", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ec40c11d659ff0f4", "level": "note", "message": {"text": "Unused endpoint: GET /api/backoffice/workspace-owner-invitations"}, "properties": {"repobilityId": "b6632fd0012b105c", "scanner": "scanner-primary", "fingerprint": "ec40c11d659ff0f4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dd3e6406754249a6", "level": "note", "message": {"text": "Unused endpoint: POST /api/backoffice/workspace-owner-invitations"}, "properties": {"repobilityId": "f64dfeab698e19c1", "scanner": "scanner-primary", "fingerprint": "dd3e6406754249a6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d23d8fd13ff84a7a", "level": "note", "message": {"text": "Unused endpoint: POST /api/backoffice/workspace-owner-invitations/:id/resend"}, "properties": {"repobilityId": "673f45bf8e8bc65c", "scanner": "scanner-primary", "fingerprint": "d23d8fd13ff84a7a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ca6414c342237b5c", "level": "note", "message": {"text": "Unused endpoint: POST /api/backoffice/workspace-owner-invitations/:id/revoke"}, "properties": {"repobilityId": "d99d7414a82b0917", "scanner": "scanner-primary", "fingerprint": "ca6414c342237b5c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bc2445001efb8da0", "level": "note", "message": {"text": "Unused endpoint: POST /api/backoffice/workspaces/:id/members"}, "properties": {"repobilityId": "23a0614459e6e66c", "scanner": "scanner-primary", "fingerprint": "bc2445001efb8da0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6660fd4abe221b88", "level": "note", "message": {"text": "Unused endpoint: POST /api/backoffice/workspaces/:id/members/:userId/role"}, "properties": {"repobilityId": "c737fb83d2700d82", "scanner": "scanner-primary", "fingerprint": "6660fd4abe221b88", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4c02e03ae471c166", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/backoffice/workspaces/:id/members/:userId"}, "properties": {"repobilityId": "23d976bed0ea0a4d", "scanner": "scanner-primary", "fingerprint": "4c02e03ae471c166", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-edd179847d568b5f", "level": "note", "message": {"text": "Unused endpoint: GET /internal/workspaces/:workspaceId/region"}, "properties": {"repobilityId": "b3494f7725af9370", "scanner": "scanner-primary", "fingerprint": "edd179847d568b5f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-27a4a570cb1d49b2", "level": "note", "message": {"text": "Unused endpoint: GET /internal/workspaces/:workspaceId/members/:workosUserId"}, "properties": {"repobilityId": "06c2c5a8a1924d4c", "scanner": "scanner-primary", "fingerprint": "27a4a570cb1d49b2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-df8b2a15afbb812f", "level": "note", "message": {"text": "Unused endpoint: POST /internal/invitation-shadows"}, "properties": {"repobilityId": "f5253a09ebc179b9", "scanner": "scanner-primary", "fingerprint": "df8b2a15afbb812f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b4298e50725183d6", "level": "note", "message": {"text": "Unused endpoint: PATCH /internal/invitation-shadows/:id"}, "properties": {"repobilityId": "674b1fd4ccb897ac", "scanner": "scanner-primary", "fingerprint": "b4298e50725183d6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6f2d4731c7f04e9c", "level": "note", "message": {"text": "Unused endpoint: POST /internal/invitation-shadows/:id/claim"}, "properties": {"repobilityId": "8452fb87e5a20227", "scanner": "scanner-primary", "fingerprint": "6f2d4731c7f04e9c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-359564da417599fc", "level": "note", "message": {"text": "Unused endpoint: POST /internal/workspaces/:workspaceId/members/:userId/role"}, "properties": {"repobilityId": "bb3a609fdfeb8485", "scanner": "scanner-primary", "fingerprint": "359564da417599fc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a6871878bd417851", "level": "note", "message": {"text": "Unused endpoint: DELETE /internal/workspaces/:workspaceId/members/:userId"}, "properties": {"repobilityId": "0b9e5340ae0ab4d1", "scanner": "scanner-primary", "fingerprint": "a6871878bd417851", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e15e12874b309ce3", "level": "note", "message": {"text": "Unused endpoint: GET /pubkey"}, "properties": {"repobilityId": "ba115a14d079c4df", "scanner": "scanner-primary", "fingerprint": "e15e12874b309ce3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-237d5a59b07db0fd", "level": "note", "message": {"text": "Unused endpoint: GET /attestation"}, "properties": {"repobilityId": "22fed6b09ddaf349", "scanner": "scanner-primary", "fingerprint": "237d5a59b07db0fd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}