{"version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0.json", "runs": [{"tool": {"driver": {"name": "Repobility", "informationUri": "https://repobility.com", "rules": [{"id": "scanner-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9c06100b47d740ce", "name": "TODO/FIXME marker in shipping code \u2014 desktop/tests/e2e/navigation.spec.ts:51", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 desktop/tests/e2e/navigation.spec.ts:51"}, "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": 0.7}}, {"id": "scanner-89bf6ea2ce223fcf", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/shared/ui/link-preview-attachment.tsx:131", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/shared/ui/link-preview-attachment.tsx:131"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-037f700fcb17a906", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/shared/ui/VideoPlayer.tsx:1667", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/shared/ui/VideoPlayer.tsx:1667"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-1da43ef14b5ff206", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/shared/ui/sidebar-menu-label.tsx:20", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/shared/ui/sidebar-menu-label.tsx:20"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-215d98b4a3b758af", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/shared/ui/markdown/FileCard.tsx:65", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/shared/ui/markdown/FileCard.tsx:65"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-fe13ddf646b68a40", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/settings/ui/ModerationQueueCard.tsx:310", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/settings/ui/ModerationQueueCard.tsx:310"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-7935ad5294cf6efa", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/settings/ui/SoundPicker.tsx:95", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/settings/ui/SoundPicker.tsx:95"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-f43dce942b4f79d3", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/settings/ui/ChannelTemplatesSettingsCard", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/settings/ui/ChannelTemplatesSettingsCard.tsx:210"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-cebcb3dbe025db6e", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/settings/ui/ActiveAgentCommunitiesSettin", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/settings/ui/ActiveAgentCommunitiesSettingsCard.tsx:99"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-f472d9f1fbf70df1", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/settings/ui/SendFeedbackDialog.tsx:263", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/settings/ui/SendFeedbackDialog.tsx:263"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-bc99f99e3ab72ae5", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/settings/ui/SettingsPanels.tsx:702", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/settings/ui/SettingsPanels.tsx:702"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-7d95f5b540835fed", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/forum/ui/ForumPostCard.tsx:95", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/forum/ui/ForumPostCard.tsx:95"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-b4ce2d2a4fa3a4ab", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectCards.tsx:434", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectCards.tsx:434"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-2ae7630c9bc36f47", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectRepositorySource.tsx:", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectRepositorySource.tsx:65"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-fbfbc9212dbd5a15", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectPullRequestFilesChang", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectPullRequestFilesChangedPanel.tsx:575"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-471ea71f55fb168e", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectWorkspaceTabs.tsx:85", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectWorkspaceTabs.tsx:85"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-8d7f516efe03c67c", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/PullRequestReviewersRow.tsx:", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/PullRequestReviewersRow.tsx:222"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-eca7ebc8b6e94b0a", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectDetailFeedPanels.tsx:", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectDetailFeedPanels.tsx:120"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-5ecb53f5c1bb3487", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectsAgentPromptPage.tsx:", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectsAgentPromptPage.tsx:487"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-929cd1c7dbb0ffdf", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectFeedRow.tsx:41", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectFeedRow.tsx:41"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-2be9949d821f64f5", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectIssuesPanel.tsx:125", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectIssuesPanel.tsx:125"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-b9449f27a8817f6c", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectPullRequestsPanel.tsx", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectPullRequestsPanel.tsx:214"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-65e21223306d55b6", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectDetailScreen.tsx:813", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectDetailScreen.tsx:813"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-03b778162ba3129c", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectReadmePanel.tsx:116", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectReadmePanel.tsx:116"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-9ab943281d41f9f5", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectsActivityFeed.tsx:315", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectsActivityFeed.tsx:315"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-5431cb13d6d681ea", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectsPullRequestsList.tsx", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectsPullRequestsList.tsx:119"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-2a9b4183974d9f0d", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectPullRequestInlineComm", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectPullRequestInlineComments.tsx:67"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-6f972a7a6f70a011", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectRepositoryPanel.tsx:1", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectRepositoryPanel.tsx:173"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-4f98f6feda491760", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/mesh-compute/ui/MeshComputeSettingsCard.", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/mesh-compute/ui/MeshComputeSettingsCard.tsx:361"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-fb60cd563c798f08", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/custom-emoji/ui/CustomEmojiSettingsCard.", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/custom-emoji/ui/CustomEmojiSettingsCard.tsx:170"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-6c02ba1607e72532", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/search/ui/TopbarSearch.tsx:264", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/search/ui/TopbarSearch.tsx:264"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-8269d8202079c757", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/home/ui/RecentNotesSection.tsx:76", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/home/ui/RecentNotesSection.tsx:76"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-9a210398e0d73fc5", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/home/ui/InboxListPane.tsx:97", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/home/ui/InboxListPane.tsx:97"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-a3e9cb950d7599d3", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/home/ui/InboxDetailPane.tsx:430", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/home/ui/InboxDetailPane.tsx:430"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-0eb09a9acc481dd9", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/home/ui/InboxMessageRow.tsx:179", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/home/ui/InboxMessageRow.tsx:179"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-6d44f6e217dd6e4b", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/reminders/ui/RemindersPanel.tsx:117", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/reminders/ui/RemindersPanel.tsx:117"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-d1c4e36c72e0b9c8", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/SnapshotOptionMenu.tsx:53", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/SnapshotOptionMenu.tsx:53"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-ec3dfa8ea222deda", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/PersonaCatalogDialog.tsx:192", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/PersonaCatalogDialog.tsx:192"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-ba6930a2d66e13a5", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/ModelPicker.tsx:183", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/ModelPicker.tsx:183"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-09f3b3c06fedc669", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/PersonaModelCombobox.tsx:207", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/PersonaModelCombobox.tsx:207"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-2ee056dc96ef8a63", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/AgentConfigPanel.tsx:48", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/AgentConfigPanel.tsx:48"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-d61a0eb1160eb443", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/TeamSnapshotExportDialog.tsx:8", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/TeamSnapshotExportDialog.tsx:83"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-6695b2d7a18f9bbe", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/McpServersSection.tsx:92", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/McpServersSection.tsx:92"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-d9ebd522de94306a", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/agentConfigControls.tsx:223", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/agentConfigControls.tsx:223"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-2ef6321ab89f288c", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/TeamIdentityCard.tsx:94", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/TeamIdentityCard.tsx:94"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-2eae793dd83053a8", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/RelayDirectorySection.tsx:118", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/RelayDirectorySection.tsx:118"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-9d2c6e5d586413dd", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/PersonaDropdownField.tsx:91", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/PersonaDropdownField.tsx:91"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-dd8dd4a9e6783034", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/PersonaCatalogDetailsSheet.tsx", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/PersonaCatalogDetailsSheet.tsx:60"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-a51a001ce2f26620", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/PersonaShareRecipients.tsx:294", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/PersonaShareRecipients.tsx:294"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-4433b640d0f29cbc", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/AgentSnapshotExportDialog.tsx:", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/AgentSnapshotExportDialog.tsx:100"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-b92f08bfbe8c39c4", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/RespondToField.tsx:353", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/RespondToField.tsx:353"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-a7dff157ce5a027c", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/AgentAiDefaults.tsx:50", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/AgentAiDefaults.tsx:50"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-bb1d7a653dd40215", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/AgentIdentityCard.tsx:72", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/AgentIdentityCard.tsx:72"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-5a007031dd2c736a", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/PersonaIdentity.tsx:35", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/PersonaIdentity.tsx:35"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-c7aa48a2defa7943", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/ManagedAgentRow.tsx:236", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/ManagedAgentRow.tsx:236"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-332670caa9637667", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/PersonaShareDialog.tsx:470", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/PersonaShareDialog.tsx:470"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-7e03cdff80efc6d5", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/AgentSessionTranscriptList.tsx", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/AgentSessionTranscriptList.tsx:569"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-9942f71418ea7444", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/ManagedAgentLogPanel.tsx:164", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/ManagedAgentLogPanel.tsx:164"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-2e5e0c819613005f", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/activityRenderClasses/RawRailA", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/activityRenderClasses/RawRailActivity.tsx:43"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-0222c72a095043e6", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/huddle/components/HuddleBar.tsx:554", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/huddle/components/HuddleBar.tsx:554"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-8a945bcd08b1c5d5", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/huddle/components/MicControls.tsx:461", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/huddle/components/MicControls.tsx:461"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-70361067f5470c86", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/huddle/components/AddAgentDialog.tsx:139", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/huddle/components/AddAgentDialog.tsx:139"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-d6c47cb32db56761", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/huddle/components/ParticipantList.tsx:10", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/huddle/components/ParticipantList.tsx:104"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-aedecc10f443cae3", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/DiffMessageExpanded.tsx:42", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/DiffMessageExpanded.tsx:42"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-f0a639ad55d682f3", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/NewMessageResultRow.tsx:137", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/NewMessageResultRow.tsx:137"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-0c717c61bbf7a292", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/SystemMessageRow.tsx:463", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/SystemMessageRow.tsx:463"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-1299a8313eab7910", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/ChannelIntroBlock.tsx:50", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/ChannelIntroBlock.tsx:50"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-f467a7bc1e490cf9", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/ComposerReplyEditBanner.tsx:", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/ComposerReplyEditBanner.tsx:34"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-596b498435e523c8", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/ComposerAttachments.tsx:569", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/ComposerAttachments.tsx:569"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-aeb33826ab38e603", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/MessageAgentOwner.tsx:34", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/MessageAgentOwner.tsx:34"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-24b8f84668f4e67a", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/DraftDetailPane.tsx:101", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/DraftDetailPane.tsx:101"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-13458d74250d2819", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/MentionAutocomplete.tsx:175", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/MentionAutocomplete.tsx:175"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-8daa249c8ab0b95f", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/ChannelAutocomplete.tsx:73", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/ChannelAutocomplete.tsx:73"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-498dba4e2ab9e7a9", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/DiffMessage.tsx:60", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/DiffMessage.tsx:60"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-0b409523e3d15580", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/MessageTimeline.tsx:585", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/MessageTimeline.tsx:585"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-287663e43769efc5", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/DiffViewer.tsx:97", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/DiffViewer.tsx:97"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-b85468a06ac6aae0", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 desktop/src/features/messages/ui/BotIdenticon.tsx:31", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 desktop/src/features/messages/ui/BotIdenticon.tsx:31"}, "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": 0.8}}, {"id": "scanner-5a15b4346042ee87", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/EmojiAutocomplete.tsx:82", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/EmojiAutocomplete.tsx:82"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-fa3488765b6e0881", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/MessageRow.tsx:545", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/MessageRow.tsx:545"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-15b541e9310bfc99", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/lib/useLinkEditor.tsx:338", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/lib/useLinkEditor.tsx:338"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-2d6a449bc2a654e6", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/onboarding/ui/SetupStep.tsx:186", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/onboarding/ui/SetupStep.tsx:186"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-1e7eb1ec8f83c8f3", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/onboarding/ui/RuntimeErrorTooltip.tsx:37", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/onboarding/ui/RuntimeErrorTooltip.tsx:37"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-9b35836ba7c52ecf", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/onboarding/ui/MembershipDenied.tsx:128", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/onboarding/ui/MembershipDenied.tsx:128"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-6232afe78ddfa7c1", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/workflows/ui/WorkflowDetailPanel.tsx:66", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/workflows/ui/WorkflowDetailPanel.tsx:66"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-082c48bf7385f3f3", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/workflows/ui/WorkflowCard.tsx:83", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/workflows/ui/WorkflowCard.tsx:83"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-3791fcb6aaea8c5f", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/workflows/ui/WorkflowRunTrace.tsx:85", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/workflows/ui/WorkflowRunTrace.tsx:85"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-c94e003a85aab513", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/workflows/ui/ChannelCombobox.tsx:99", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/workflows/ui/ChannelCombobox.tsx:99"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-2212951c1abcfded", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/pulse/ui/AgentActivityCard.tsx:75", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/pulse/ui/AgentActivityCard.tsx:75"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-3df45f440939e0d7", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/pulse/ui/NoteCard.tsx:77", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/pulse/ui/NoteCard.tsx:77"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-e4879461d93d022b", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/pulse/ui/PulseView.tsx:400", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/pulse/ui/PulseView.tsx:400"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-543355d7941b8952", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/channels/ui/ChannelMemberInviteCard.tsx:", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/channels/ui/ChannelMemberInviteCard.tsx:243"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-253f5ac315872c09", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/channels/ui/ChannelPane.tsx:712", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/channels/ui/ChannelPane.tsx:712"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-6181651d02d1e61a", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/channels/ui/MembersSidebar.tsx:929", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/channels/ui/MembersSidebar.tsx:929"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-a05fe3ff146a91ca", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/channels/ui/AddChannelBotPersonasSection", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/channels/ui/AddChannelBotPersonasSection.tsx:42"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-f84ba6f017d8d61d", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/channels/ui/BotActivityBar.tsx:208", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/channels/ui/BotActivityBar.tsx:208"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-8f152cf610991520", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/channels/ui/ChannelManagementSheetRows.t", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/channels/ui/ChannelManagementSheetRows.tsx:36"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-c6c5a414e19dca0c", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/channels/ui/AgentSessionThreadPanel.tsx:", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/channels/ui/AgentSessionThreadPanel.tsx:427"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-e1dd5b1d5100cf93", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/channels/ui/MembersSidebarMemberCard.tsx", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/channels/ui/MembersSidebarMemberCard.tsx:182"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-d9dc4b8d238ce2ef", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/channels/ui/ChannelBrowserDialog.tsx:724", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/channels/ui/ChannelBrowserDialog.tsx:724"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-851261ff06dbc71a", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/profile/ui/UserProfilePanelTabs.tsx:404", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/profile/ui/UserProfilePanelTabs.tsx:404"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-187057b12f8d0569", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/profile/ui/UserProfilePanelFields.tsx:26", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/profile/ui/UserProfilePanelFields.tsx:264"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-4f680aedcce5d2c8", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/profile/ui/UserProfilePopover.tsx:533", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/profile/ui/UserProfilePopover.tsx:533"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-2f7b138953db9d35", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/profile/ui/SelectedRecipientChip.tsx:120", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/profile/ui/SelectedRecipientChip.tsx:120"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-06441ac60e695320", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/profile/ui/UserProfilePanelSections.tsx:", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/profile/ui/UserProfilePanelSections.tsx:896"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-b7f00b9ea2bfd376", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/profile/ui/ProfilePopover.tsx:143", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/profile/ui/ProfilePopover.tsx:143"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-2246cfcbd36fb03c", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/communities/ui/HostedCommunityOnboarding", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/communities/ui/HostedCommunityOnboarding.tsx:621"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-93590d10530822db", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/communities/ui/WelcomeSetup.tsx:283", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/communities/ui/WelcomeSetup.tsx:283"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-723826189c80dd8e", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/communities/ui/CommunitySwitcher.tsx:247", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/communities/ui/CommunitySwitcher.tsx:247"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-b4218d9aa76b47de", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/sidebar/ui/SidebarProfileCard.tsx:91", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/sidebar/ui/SidebarProfileCard.tsx:91"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-544f32f0cb9d6328", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/sidebar/ui/SidebarDnd.tsx:155", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/sidebar/ui/SidebarDnd.tsx:155"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-0944f25fd84162ea", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/sidebar/ui/CustomChannelSection.tsx:664", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/sidebar/ui/CustomChannelSection.tsx:664"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-e09e693820a56b85", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/sidebar/ui/SidebarSection.tsx:297", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/sidebar/ui/SidebarSection.tsx:297"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-789b3600d33b33bb", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/local-archive/ui/LocalArchiveSettingsCar", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/local-archive/ui/LocalArchiveSettingsCard.tsx:583"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-af279ef6c14277a6", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/community-members/ui/CommunityMembersSet", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/community-members/ui/CommunityMembersSettingsCard.tsx:174"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-474941b859e9e54d", "name": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/community-members/ui/CommunityMembersCar", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/community-members/ui/CommunityMembersCard.tsx:103"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-e25d8b3cf34272b4", "name": "TODO/FIXME marker in shipping code \u2014 web/src/features/repos/use-repo-refs.ts:52", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 web/src/features/repos/use-repo-refs.ts:52"}, "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": 0.7}}, {"id": "scanner-7ce8f060862a6558", "name": "Truncated text has no discoverable full-value affordance \u2014 web/src/features/repos/ui/RepoCommitsSection.tsx:11", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 web/src/features/repos/ui/RepoCommitsSection.tsx:11"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-7c924da8ae566951", "name": "Truncated text has no discoverable full-value affordance \u2014 web/src/features/repos/ui/RepoBlobViewer.tsx:279", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 web/src/features/repos/ui/RepoBlobViewer.tsx:279"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-b74d78f20c40e6a9", "name": "Truncated text has no discoverable full-value affordance \u2014 web/src/features/repos/ui/RepoDetailPage.tsx:50", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 web/src/features/repos/ui/RepoDetailPage.tsx:50"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-e30912589836e05b", "name": "dynamic urllib use detected \u2014 benchmarks/harbor-buzz-orchestra/testbed/src/harbor_buzz_testbed/provisioner.py:118", "shortDescription": {"text": "dynamic urllib use detected \u2014 benchmarks/harbor-buzz-orchestra/testbed/src/harbor_buzz_testbed/provisioner.py:118"}, "fullDescription": {"text": "Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control the URLs, or consider using the 'requests' library instead.\n\nRule: python.lang.security.audit.dynamic-urllib-use-detected.dynamic-urllib-use-detected\nSeverity: WARNING\nOWASP: A01:2017 - Injection\nCWE: CWE-939: Improper Authorization in Handler for Custom URL Scheme\nCategory: security\nContext: production"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.55}}, {"id": "scanner-c663de0f18b45fb6", "name": "CVE-2026-50185: cmov 0.5.3 \u2014 Cargo.lock", "shortDescription": {"text": "CVE-2026-50185: cmov 0.5.3 \u2014 Cargo.lock"}, "fullDescription": {"text": "RustCrypto CMOV provides conditional move CPU intrinsics which are gua ...\n\nRustCrypto CMOV provides conditional move CPU intrinsics which are guaranteed on major platforms to execute in constant-time and not be rewritten as branches by the compiler. From 0.1.1 until 0.5.4, the aarch64 implementations of Cmov and CmovEq in cmov/src/backends/aarch64.rs assume high bits are zero-extended when loading values smaller than a register, so set high bits such as [8..] in a Cmov selector or [16..] of self or other in the u16 and i16 CmovEq implementations can cause left.cmovz(&r\n\nPackage: cmov\nInstalled: 0.5.3\nFixed in: 0.5.4\nSeverity: MEDIUM\nFix: Upgrade cmov to 0.5.4"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bd97be946a930630", "name": "GHSA-wrw7-89jp-8q8g: glib 0.18.5 \u2014 desktop/src-tauri/Cargo.lock", "shortDescription": {"text": "GHSA-wrw7-89jp-8q8g: glib 0.18.5 \u2014 desktop/src-tauri/Cargo.lock"}, "fullDescription": {"text": "Unsoundness in `Iterator` and `DoubleEndedIterator` impls for `glib::VariantStrIter`\n\nThe `VariantStrIter::impl_get` function (called internally by implementations of the `Iterator` and `DoubleEndedIterator` traits for this type) was unsound, resulting in undefined behaviour.\n\nAn immutable reference `&p` to a `*mut libc::c_char` pointer initialized to `NULL` was passed as an argument to a C function that that mutates the pointer behind `&p` in-place (i.e. as an out-argument), which was unsound. After changes in recent versions of the Rust compiler, these unsound writes through `&\n\nPackage: glib\nInstalled: 0.18.5\nFixed in: 0.20.0\nSeverity: MEDIUM\nFix: Upgrade glib to 0.20.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-47f1d75282adf1ac", "name": "CVE-2026-48801: linkify-it 5.0.0 \u2014 pnpm-lock.yaml", "shortDescription": {"text": "CVE-2026-48801: linkify-it 5.0.0 \u2014 pnpm-lock.yaml"}, "fullDescription": {"text": "linkify-it: linkify-it: Denial of Service via algorithmic complexity vulnerability\n\nlinkify-it is a links recognition library with full Unicode support. Prior to 5.0.1, LinkifyIt.prototype.match, the package's primary public API, has O(N\u00b2) algorithmic complexity for inputs containing many fuzzy links or emails because the JavaScript-level scan loop re-slices input and re-runs unanchored regex searches on progressively shorter tails. Any service that synchronously renders untrusted Markdown with linkify:true on a request hot path can inherit a worker-process denial of service tr\n\nPackage: linkify-it\nInstalled: 5.0.0\nFixed in: 5.0.1\nSeverity: HIGH\nFix: Upgrade linkify-it to 5.0.1"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c0a4129c69b0b417", "name": "CVE-2026-59887: linkify-it 5.0.0 \u2014 pnpm-lock.yaml", "shortDescription": {"text": "CVE-2026-59887: linkify-it 5.0.0 \u2014 pnpm-lock.yaml"}, "fullDescription": {"text": "linkify-it: Quadratic-complexity DoS via the `mailto:` validator scan-loop on attacker text\n\nlinkify-it is a links recognition library with full Unicode support. Prior to 5.0.2, the mailto: schema validator used by .test() and .match() can be invoked at every mailto: occurrence and scan the remaining input through src_email_name in lib/re.mjs, causing O(n^2) CPU consumption on crafted user text. This issue is fixed in version 5.0.2.\n\nPackage: linkify-it\nInstalled: 5.0.0\nFixed in: 5.0.2\nSeverity: HIGH\nFix: Upgrade linkify-it to 5.0.2"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-58c862138b68365b", "name": "CVE-2026-48988: markdown-it 14.1.1 \u2014 pnpm-lock.yaml", "shortDescription": {"text": "CVE-2026-48988: markdown-it 14.1.1 \u2014 pnpm-lock.yaml"}, "fullDescription": {"text": "markdown-it is a Markdown parser. Versions 14.1.1 and below contain a  ...\n\nmarkdown-it is a Markdown parser. Versions 14.1.1 and below contain a denial-of-service vulnerability when typographer: true is enabled, due to quadratic (O(n^2)) processing in the smartquotes rule. The issue stems from repeatedly modifying strings with replaceAt(), which performs O(n) slicing and concatenation per quote character. This can cause excessive CPU consumption when parsing quote-heavy, user-supplied markdown and may let attackers degrade or disrupt service availability. Although typo\n\nPackage: markdown-it\nInstalled: 14.1.1\nFixed in: 14.2.0\nSeverity: MEDIUM\nFix: Upgrade markdown-it to 14.2.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3c4041c454cda88e", "name": "DS-0026: No HEALTHCHECK defined \u2014 Dockerfile", "shortDescription": {"text": "DS-0026: No HEALTHCHECK defined \u2014 Dockerfile"}, "fullDescription": {"text": "No HEALTHCHECK defined\n\nAdd HEALTHCHECK instruction in your Dockerfile\n\nRule: DS-0026\nSeverity: LOW\nTarget: Dockerfile"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-adbbc5a6460c7f98", "name": "DS-0026: No HEALTHCHECK defined \u2014 Dockerfile.push-gateway", "shortDescription": {"text": "DS-0026: No HEALTHCHECK defined \u2014 Dockerfile.push-gateway"}, "fullDescription": {"text": "No HEALTHCHECK defined\n\nAdd HEALTHCHECK instruction in your Dockerfile\n\nRule: DS-0026\nSeverity: LOW\nTarget: Dockerfile.push-gateway"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d4783d387dc261df", "name": "KSV-0110: Workloads in the default namespace \u2014 deploy/charts/buzz-push-gateway/templates/deployment.yaml", "shortDescription": {"text": "KSV-0110: Workloads in the default namespace \u2014 deploy/charts/buzz-push-gateway/templates/deployment.yaml"}, "fullDescription": {"text": "Workloads in the default namespace\n\ndeployment buzz-push-gateway-buzz-push-gateway in default namespace should set metadata.namespace to a non-default namespace\n\nRule: KSV-0110\nSeverity: LOW\nTarget: deploy/charts/buzz-push-gateway/templates/deployment.yaml"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4e45ea7a3032c58c", "name": "KSV-0125: Restrict container images to trusted registries \u2014 deploy/charts/buzz-push-gateway/templates/deployment.yaml", "shortDescription": {"text": "KSV-0125: Restrict container images to trusted registries \u2014 deploy/charts/buzz-push-gateway/templates/deployment.yaml"}, "fullDescription": {"text": "Restrict container images to trusted registries\n\nContainer gateway in deployment buzz-push-gateway-buzz-push-gateway (namespace: default) uses an image from an untrusted registry.\n\nRule: KSV-0125\nSeverity: MEDIUM\nTarget: deploy/charts/buzz-push-gateway/templates/deployment.yaml"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2679282aa1c484b5", "name": "Agent authority lacks a verifier contract: AGENTS.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: 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-49171c419483ad0a", "name": "Agent authority lacks a verifier contract: examples/meadow-core/skills/github-research/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: examples/meadow-core/skills/github-research/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e637c415447867e4", "name": "Run SkillSpector's LLM-backed analysis in your own pipeline", "shortDescription": {"text": "Run SkillSpector's LLM-backed analysis in your own pipeline"}, "fullDescription": {"text": "Repobility ran SkillSpector's static rules server-side. The deeper LLM-backed analyzers \u2014 tool-poisoning (TP*), semantic security discovery (SSD*), developer-intent mismatch (SDI*) \u2014 are meant to run on YOUR machine with YOUR model; repobility never sends your code to an LLM. Recipe:\n\n# 1. Install SkillSpector in your own isolated env\npipx install \"skillspector @ git+https://github.com/NVIDIA/SkillSpector.git\"\n\n# 2. Point it at YOUR LLM pipeline (pick one) - your code stays on your machine\nexport SKILLSPECTOR_PROVIDER=anthropic && export ANTHROPIC_API_KEY=sk-ant-...\n# export SKILLSPECTOR_PROVIDER=openai   && export OPENAI_API_KEY=sk-...\n# export SKILLSPECTOR_PROVIDER=openai OPENAI_API_KEY=ollama OPENAI_BASE_URL=http://localhost:11434/v1 SKILLSPECTOR_MODEL=llama3.1:8b\n# export SKILLSPECTOR_PROVIDER=nv_build && export NVIDIA_INFERENCE_KEY=nvapi-...\n\n# 3. Run the LLM-backed scan per skill (omit --no-llm to enable the LLM analyzers)\nskillspector scan examples/meadow-core/skills/github-rese"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "info", "confidence": 1.0}}, {"id": "scanner-64612ab88454d2dc", "name": "Docker base image is tag-pinned but not digest-pinned: rust:${RUST_VERSION}-${DEBIAN_VERSION}", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: rust:${RUST_VERSION}-${DEBIAN_VERSION}"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-90d58a211142b588", "name": "Docker base image is tag-pinned but not digest-pinned: node:${NODE_VERSION}-${DEBIAN_VERSION}-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:${NODE_VERSION}-${DEBIAN_VERSION}-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5b3d9a19dbd71baf", "name": "Docker base image is tag-pinned but not digest-pinned: debian:${DEBIAN_VERSION}-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:${DEBIAN_VERSION}-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea414760c2102e55", "name": "Possible secret in scripts/dev-setup.sh", "shortDescription": {"text": "Possible secret in scripts/dev-setup.sh"}, "fullDescription": {"text": "Detected 1 occurrence(s) matching password_literal. Rotate real credentials and move them to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.58}}, {"id": "scanner-b3d8d5b07d4f15df", "name": "Insecure pattern 'domparser_html_parse' in desktop/src/shared/lib/codeBlockClipboard.ts:51", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in desktop/src/shared/lib/codeBlockClipboard.ts:51"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-51b1777a21ffcd78", "name": "Insecure pattern 'dangerous_innerhtml' in desktop/src/features/messages/ui/BotIdenticon.tsx:31", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in desktop/src/features/messages/ui/BotIdenticon.tsx:31"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-9a2f64bc55ecdf9f", "name": "Insecure pattern 'domparser_html_parse' in desktop/src/features/messages/lib/normalizeMentionClipboard.ts:20", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in desktop/src/features/messages/lib/normalizeMentionClipboard.ts:20"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-b4f2fce134b45c64", "name": "Insecure pattern 'domparser_html_parse' in web/src/features/repos/git-client.ts:364", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in web/src/features/repos/git-client.ts:364"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-68a2b8f5c8cd6b53", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1838a141491ce38c", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8cea11d4a0ebca1a", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c2f64aa5ffd8ebfd", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4f7a31ad80dc2078", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-993367d3078b0b44", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-598c113f5257efe1", "name": "Very large file: desktop/tests/e2e/inbox-live-update.spec.ts (1536 lines)", "shortDescription": {"text": "Very large file: desktop/tests/e2e/inbox-live-update.spec.ts (1536 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-3b5e5ca87efe0484", "name": "Very large file: desktop/tests/e2e/channels.spec.ts (3335 lines)", "shortDescription": {"text": "Very large file: desktop/tests/e2e/channels.spec.ts (3335 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-141058ce48a8a5ba", "name": "Very large file: desktop/tests/e2e/messaging.spec.ts (1429 lines)", "shortDescription": {"text": "Very large file: desktop/tests/e2e/messaging.spec.ts (1429 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-b751dc12054af750", "name": "Very large file: desktop/tests/e2e/onboarding.spec.ts (2930 lines)", "shortDescription": {"text": "Very large file: desktop/tests/e2e/onboarding.spec.ts (2930 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-015ab6eabd9b7f8e", "name": "Very large file: desktop/tests/e2e/profile.spec.ts (1547 lines)", "shortDescription": {"text": "Very large file: desktop/tests/e2e/profile.spec.ts (1547 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-2938f6dfa8bf433c", "name": "Very large file: desktop/tests/e2e/scroll-history.spec.ts (2112 lines)", "shortDescription": {"text": "Very large file: desktop/tests/e2e/scroll-history.spec.ts (2112 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-f60dbf40d452e076", "name": "Very large file: desktop/tests/e2e/mentions.spec.ts (2113 lines)", "shortDescription": {"text": "Very large file: desktop/tests/e2e/mentions.spec.ts (2113 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-a2ae89ad7578d64c", "name": "Very large file: desktop/tests/e2e/agents.spec.ts (1677 lines)", "shortDescription": {"text": "Very large file: desktop/tests/e2e/agents.spec.ts (1677 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-4aa01d06679cf825", "name": "Very large file: desktop/src-tauri/src/app_state_tests.rs (1417 lines)", "shortDescription": {"text": "Very large file: desktop/src-tauri/src/app_state_tests.rs (1417 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-954c4a81e849e138", "name": "Very large file: desktop/src-tauri/src/migration.rs (1402 lines)", "shortDescription": {"text": "Very large file: desktop/src-tauri/src/migration.rs (1402 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-f47fb94a0c3d82e9", "name": "Very large file: desktop/src-tauri/src/secret_store.rs (1306 lines)", "shortDescription": {"text": "Very large file: desktop/src-tauri/src/secret_store.rs (1306 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-74983c4343de093c", "name": "Very large file: desktop/src-tauri/src/app_state.rs (1080 lines)", "shortDescription": {"text": "Very large file: desktop/src-tauri/src/app_state.rs (1080 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-5e4a8bb2f2940aee", "name": "Very large file: desktop/src-tauri/src/commands/agents.rs (1337 lines)", "shortDescription": {"text": "Very large file: desktop/src-tauri/src/commands/agents.rs (1337 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-4690ed6b6f92bff3", "name": "Very large file: desktop/src-tauri/src/commands/agent_discovery.rs (1465 lines)", "shortDescription": {"text": "Very large file: desktop/src-tauri/src/commands/agent_discovery.rs (1465 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-bba64099cedc4a0d", "name": "Very large file: desktop/src-tauri/src/managed_agents/storage.rs (1382 lines)", "shortDescription": {"text": "Very large file: desktop/src-tauri/src/managed_agents/storage.rs (1382 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-cf5fa1954d2f3c22", "name": "Very large file: desktop/src-tauri/src/managed_agents/readiness.rs (1686 lines)", "shortDescription": {"text": "Very large file: desktop/src-tauri/src/managed_agents/readiness.rs (1686 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9f97cda99f5d6a92", "name": "Very large file: desktop/src-tauri/src/managed_agents/runtime.rs (2200 lines)", "shortDescription": {"text": "Very large file: desktop/src-tauri/src/managed_agents/runtime.rs (2200 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-6818919163f1820f", "name": "Very large file: desktop/src/testing/e2eBridge.ts (10902 lines)", "shortDescription": {"text": "Very large file: desktop/src/testing/e2eBridge.ts (10902 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-ea49e5cdd6025b54", "name": "Very large file: desktop/src/shared/ui/VideoPlayer.tsx (2213 lines)", "shortDescription": {"text": "Very large file: desktop/src/shared/ui/VideoPlayer.tsx (2213 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-bf4f0c40e60330f8", "name": "Very large file: desktop/src/shared/ui/markdown.tsx (2012 lines)", "shortDescription": {"text": "Very large file: desktop/src/shared/ui/markdown.tsx (2012 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-3f55bb2921d75e3e", "name": "Very large file: desktop/src/features/agents/activeAgentTurnsStore.test.mjs (1739 lines)", "shortDescription": {"text": "Very large file: desktop/src/features/agents/activeAgentTurnsStore.test.mjs (1739 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-640ae2876a13ead5", "name": "Very large file: desktop/src/features/agents/ui/createAgentLocalModeGate.test.mjs (1444 lines)", "shortDescription": {"text": "Very large file: desktop/src/features/agents/ui/createAgentLocalModeGate.test.mjs (1444 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-5f95dad3bb135aad", "name": "Very large file: desktop/src/features/agents/ui/agentSessionTranscriptGrouping.test.mjs (1875 lines)", "shortDescription": {"text": "Very large file: desktop/src/features/agents/ui/agentSessionTranscriptGrouping.test.mjs (1875 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-41d1ed8e0d3c29ee", "name": "Very large file: desktop/src/features/agents/ui/editAgentProviderDiscovery.test.mjs (1646 lines)", "shortDescription": {"text": "Very large file: desktop/src/features/agents/ui/editAgentProviderDiscovery.test.mjs (1646 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-df9e454df398f9d6", "name": "Very large file: desktop/src/features/agents/ui/agentSessionTranscript.test.mjs (1881 lines)", "shortDescription": {"text": "Very large file: desktop/src/features/agents/ui/agentSessionTranscript.test.mjs (1881 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-81f2a550b6ecd7a8", "name": "Very large file: crates/buzz-media/src/validation.rs (2502 lines)", "shortDescription": {"text": "Very large file: crates/buzz-media/src/validation.rs (2502 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-1846179f31557b51", "name": "Very large file: crates/buzz-relay/src/state.rs (1740 lines)", "shortDescription": {"text": "Very large file: crates/buzz-relay/src/state.rs (1740 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-564a6c21832dd0fd", "name": "Very large file: crates/buzz-relay/src/config.rs (1346 lines)", "shortDescription": {"text": "Very large file: crates/buzz-relay/src/config.rs (1346 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-2928d6363b681cae", "name": "Very large file: crates/buzz-relay/src/main.rs (1929 lines)", "shortDescription": {"text": "Very large file: crates/buzz-relay/src/main.rs (1929 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-ac86a89943f73ac2", "name": "Very large file: crates/buzz-relay/src/subscription.rs (1562 lines)", "shortDescription": {"text": "Very large file: crates/buzz-relay/src/subscription.rs (1562 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-a3c990d2c718808a", "name": "Very large file: crates/buzz-relay/src/api/media.rs (1372 lines)", "shortDescription": {"text": "Very large file: crates/buzz-relay/src/api/media.rs (1372 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-fa2a6569fa9ed254", "name": "Very large file: crates/buzz-relay/src/api/bridge.rs (3690 lines)", "shortDescription": {"text": "Very large file: crates/buzz-relay/src/api/bridge.rs (3690 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-3bc604e54041a0e8", "name": "Very large file: crates/buzz-relay/src/api/git/cas_publish.rs (1891 lines)", "shortDescription": {"text": "Very large file: crates/buzz-relay/src/api/git/cas_publish.rs (1891 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-e7d302eade27c59e", "name": "Very large file: crates/buzz-relay/src/api/git/transport.rs (2096 lines)", "shortDescription": {"text": "Very large file: crates/buzz-relay/src/api/git/transport.rs (2096 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-f30313a591ec6c08", "name": "Very large file: crates/buzz-relay/src/audio/join.rs (3036 lines)", "shortDescription": {"text": "Very large file: crates/buzz-relay/src/audio/join.rs (3036 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-36123ee34b11519f", "name": "Very large file: crates/buzz-relay/src/audio/handler.rs (1430 lines)", "shortDescription": {"text": "Very large file: crates/buzz-relay/src/audio/handler.rs (1430 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-6914216d680359f4", "name": "Very large file: crates/buzz-relay/src/handlers/req.rs (1946 lines)", "shortDescription": {"text": "Very large file: crates/buzz-relay/src/handlers/req.rs (1946 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-908892e7387515d6", "name": "Very large file: crates/buzz-relay/src/handlers/side_effects.rs (3347 lines)", "shortDescription": {"text": "Very large file: crates/buzz-relay/src/handlers/side_effects.rs (3347 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-f32306468f4ad447", "name": "Very large file: crates/buzz-relay/src/handlers/event.rs (2461 lines)", "shortDescription": {"text": "Very large file: crates/buzz-relay/src/handlers/event.rs (2461 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-d3e84a4f363079b1", "name": "Very large file: crates/buzz-relay/src/handlers/ingest.rs (3686 lines)", "shortDescription": {"text": "Very large file: crates/buzz-relay/src/handlers/ingest.rs (3686 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-6fa5dd79c4ac9109", "name": "Very large file: crates/buzz-workflow/src/lib.rs (1564 lines)", "shortDescription": {"text": "Very large file: crates/buzz-workflow/src/lib.rs (1564 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-7412234b5639a545", "name": "Very large file: crates/buzz-workflow/src/executor.rs (1834 lines)", "shortDescription": {"text": "Very large file: crates/buzz-workflow/src/executor.rs (1834 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-0eda1046349a0f7b", "name": "Very large file: crates/buzz-agent/tests/regressions.rs (1821 lines)", "shortDescription": {"text": "Very large file: crates/buzz-agent/tests/regressions.rs (1821 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-804c6ba8a3c12652", "name": "Very large file: crates/buzz-agent/src/llm.rs (2894 lines)", "shortDescription": {"text": "Very large file: crates/buzz-agent/src/llm.rs (2894 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-c7035acb083253ff", "name": "Very large file: crates/buzz-agent/src/config.rs (2701 lines)", "shortDescription": {"text": "Very large file: crates/buzz-agent/src/config.rs (2701 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-8fa37700007e6779", "name": "Very large file: crates/buzz-db/src/lib.rs (6105 lines)", "shortDescription": {"text": "Very large file: crates/buzz-db/src/lib.rs (6105 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-22ece692844ba312", "name": "Very large file: crates/buzz-db/src/push.rs (2387 lines)", "shortDescription": {"text": "Very large file: crates/buzz-db/src/push.rs (2387 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-7688a93664fb28b1", "name": "Very large file: crates/buzz-db/src/event.rs (2464 lines)", "shortDescription": {"text": "Very large file: crates/buzz-db/src/event.rs (2464 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-adce3d639de8dbff", "name": "Very large file: crates/buzz-db/src/migration.rs (1247 lines)", "shortDescription": {"text": "Very large file: crates/buzz-db/src/migration.rs (1247 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-c0b386ce7f6bc43e", "name": "Very large file: crates/buzz-db/src/workflow.rs (2275 lines)", "shortDescription": {"text": "Very large file: crates/buzz-db/src/workflow.rs (2275 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-6906a3c6e7874293", "name": "Very large file: crates/buzz-db/src/thread.rs (1729 lines)", "shortDescription": {"text": "Very large file: crates/buzz-db/src/thread.rs (1729 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-f6a5897e8bc06851", "name": "Very large file: crates/buzz-db/src/channel.rs (1895 lines)", "shortDescription": {"text": "Very large file: crates/buzz-db/src/channel.rs (1895 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-83ce5bc10a733b3c", "name": "Very large file: crates/buzz-sdk/src/builders.rs (3787 lines)", "shortDescription": {"text": "Very large file: crates/buzz-sdk/src/builders.rs (3787 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-b73915bbfedc95a8", "name": "Very large file: crates/buzz-dev-mcp/src/shell.rs (1346 lines)", "shortDescription": {"text": "Very large file: crates/buzz-dev-mcp/src/shell.rs (1346 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-0613e13a3ef325d7", "name": "Very large file: crates/buzz-core/src/pairing/session.rs (1315 lines)", "shortDescription": {"text": "Very large file: crates/buzz-core/src/pairing/session.rs (1315 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-90823e69fb1da2fa", "name": "Very large file: crates/git-sign-nostr/src/lib.rs (2508 lines)", "shortDescription": {"text": "Very large file: crates/git-sign-nostr/src/lib.rs (2508 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-7bd9c0bd9dcf751e", "name": "Very large file: crates/buzz-acp/src/relay.rs (6206 lines)", "shortDescription": {"text": "Very large file: crates/buzz-acp/src/relay.rs (6206 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-432b498ce8573268", "name": "Very large file: crates/buzz-acp/src/lib.rs (6009 lines)", "shortDescription": {"text": "Very large file: crates/buzz-acp/src/lib.rs (6009 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-db644967f12010ed", "name": "Very large file: crates/buzz-acp/src/acp.rs (3700 lines)", "shortDescription": {"text": "Very large file: crates/buzz-acp/src/acp.rs (3700 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-d003f611fdddcf8c", "name": "Very large file: crates/buzz-acp/src/pool.rs (5575 lines)", "shortDescription": {"text": "Very large file: crates/buzz-acp/src/pool.rs (5575 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-6f779a6e0bc9eb65", "name": "Very large file: crates/buzz-acp/src/config.rs (2709 lines)", "shortDescription": {"text": "Very large file: crates/buzz-acp/src/config.rs (2709 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-1b1bac3da06db8c1", "name": "Very large file: crates/buzz-acp/src/queue.rs (4759 lines)", "shortDescription": {"text": "Very large file: crates/buzz-acp/src/queue.rs (4759 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-44eeff91a6d1da81", "name": "Very large file: crates/buzz-test-client/tests/e2e_nostr_interop.rs (1987 lines)", "shortDescription": {"text": "Very large file: crates/buzz-test-client/tests/e2e_nostr_interop.rs (1987 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-83d47fb467933030", "name": "Very large file: crates/buzz-test-client/tests/conformance_multitenant.rs (2739 lines)", "shortDescription": {"text": "Very large file: crates/buzz-test-client/tests/conformance_multitenant.rs (2739 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-2df5377043aa4c3d", "name": "Very large file: crates/buzz-test-client/tests/e2e_relay.rs (2477 lines)", "shortDescription": {"text": "Very large file: crates/buzz-test-client/tests/e2e_relay.rs (2477 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-b850442258435930", "name": "Very large file: crates/buzz-cli/src/lib.rs (2020 lines)", "shortDescription": {"text": "Very large file: crates/buzz-cli/src/lib.rs (2020 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-662b3c9237a8ac8e", "name": "Very large file: crates/buzz-cli/src/client.rs (2477 lines)", "shortDescription": {"text": "Very large file: crates/buzz-cli/src/client.rs (2477 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-a54f25fb3ba592af", "name": "Very large file: crates/buzz-cli/src/commands/channels.rs (1713 lines)", "shortDescription": {"text": "Very large file: crates/buzz-cli/src/commands/channels.rs (1713 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-720a280bf799af06", "name": "36 TODO/FIXME markers", "shortDescription": {"text": "36 TODO/FIXME markers"}, "fullDescription": {"text": "High count of TODO/FIXME/HACK markers \u2014 track them as issues so they're not forgotten."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-91f3c986dd9dad25", "name": "Node manifest has dependencies but no lockfile: desktop/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: desktop/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": "dependencies", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a99e6074935dc761", "name": "Node manifest has dependencies but no lockfile: admin-web/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: admin-web/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": "dependencies", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b8d99132ab8d1975", "name": "Node manifest has dependencies but no lockfile: web/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: web/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": "dependencies", "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 80 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 755 placeholder/mock markers across 190 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing lockfile. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bf612474bc6d3c3b", "name": "Network/subprocess call without timeout or try/except \u2014 benchmarks/harbor-buzz-orchestra/scripts/run_leaderboard.py:253", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 benchmarks/harbor-buzz-orchestra/scripts/run_leaderboard.py:253"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.85}}, {"id": "scanner-77639910003056e8", "name": "Network/subprocess call without timeout or try/except \u2014 benchmarks/harbor-buzz-orchestra/scripts/benchmark.py:303", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 benchmarks/harbor-buzz-orchestra/scripts/benchmark.py:303"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.85}}, {"id": "scanner-e2f968ca044865d5", "name": "Legacy-named symbol `reconcile_databricks_v1_to_v2` in desktop/scripts/check-file-sizes.mjs:342", "shortDescription": {"text": "Legacy-named symbol `reconcile_databricks_v1_to_v2` in desktop/scripts/check-file-sizes.mjs:342"}, "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-f593ac24e9ff336d", "name": "Legacy-named symbol `browser_fragment_v1` in desktop/src/shared/deep-link.ts:38", "shortDescription": {"text": "Legacy-named symbol `browser_fragment_v1` in desktop/src/shared/deep-link.ts:38"}, "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-0eef80093e5e9f9f", "name": "Legacy-named symbol `databricks_v2` in desktop/src/shared/api/types.ts:1013", "shortDescription": {"text": "Legacy-named symbol `databricks_v2` in desktop/src/shared/api/types.ts:1013"}, "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-1c5a1588f30342d8", "name": "Legacy-named symbol `setup_copy` in desktop/src/shared/ui/config-nudge-attachment.tsx:115", "shortDescription": {"text": "Legacy-named symbol `setup_copy` in desktop/src/shared/ui/config-nudge-attachment.tsx:115"}, "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-f9b7ac11f2d7e2d9", "name": "Legacy-named symbol `setup_copy` in desktop/src/shared/ui/config-nudge-attachment.test.mjs:85", "shortDescription": {"text": "Legacy-named symbol `setup_copy` in desktop/src/shared/ui/config-nudge-attachment.test.mjs:85"}, "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-01232b8ade154b2f", "name": "Legacy-named symbol `setup_copy` in desktop/src/shared/lib/configNudge.test.mjs:74", "shortDescription": {"text": "Legacy-named symbol `setup_copy` in desktop/src/shared/lib/configNudge.test.mjs:74"}, "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-0b1407cd7e0e58df", "name": "Legacy-named symbol `setup_copy` in desktop/src/shared/lib/configNudge.ts:29", "shortDescription": {"text": "Legacy-named symbol `setup_copy` in desktop/src/shared/lib/configNudge.ts:29"}, "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-508b67afede4e503", "name": "Legacy-named symbol `midOld` in desktop/src/features/settings/lib/moderationQueue.test.mjs:105", "shortDescription": {"text": "Legacy-named symbol `midOld` in desktop/src/features/settings/lib/moderationQueue.test.mjs:105"}, "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-bf235cdad3d8b92c", "name": "Legacy-named symbol `databricks_v2` in desktop/src/features/agents/ui/createAgentLocalModeGate.test.mjs:300", "shortDescription": {"text": "Legacy-named symbol `databricks_v2` in desktop/src/features/agents/ui/createAgentLocalModeGate.test.mjs:300"}, "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-7807b29de97a1776", "name": "Legacy-named symbol `databricks_v2` in desktop/src/features/agents/ui/bakedEnvHelpers.ts:64", "shortDescription": {"text": "Legacy-named symbol `databricks_v2` in desktop/src/features/agents/ui/bakedEnvHelpers.ts:64"}, "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-dd752a1c3d944388", "name": "Legacy-named symbol `databricks_v2` in desktop/src/features/agents/ui/buzzAgentConfig.test.mjs:412", "shortDescription": {"text": "Legacy-named symbol `databricks_v2` in desktop/src/features/agents/ui/buzzAgentConfig.test.mjs:412"}, "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-d08d9601a591639a", "name": "Legacy-named symbol `databricks_v2` in desktop/src/features/agents/ui/agentConfigOptions.tsx:42", "shortDescription": {"text": "Legacy-named symbol `databricks_v2` in desktop/src/features/agents/ui/agentConfigOptions.tsx:42"}, "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-84984fb6827ed4a4", "name": "Legacy-named symbol `databricks_v2` in desktop/src/features/agents/ui/editAgentProviderDiscovery.test.mjs:59", "shortDescription": {"text": "Legacy-named symbol `databricks_v2` in desktop/src/features/agents/ui/editAgentProviderDiscovery.test.mjs:59"}, "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-5a642055e1d195c8", "name": "Legacy-named symbol `databricks_v2` in desktop/src/features/agents/ui/agentAiConfigurationPolicy.test.mjs:87", "shortDescription": {"text": "Legacy-named symbol `databricks_v2` in desktop/src/features/agents/ui/agentAiConfigurationPolicy.test.mjs:87"}, "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-0e3a7d518e6c8ed9", "name": "Legacy-named symbol `databricks_v2` in desktop/src/features/agents/ui/buzzAgentConfig.ts:108", "shortDescription": {"text": "Legacy-named symbol `databricks_v2` in desktop/src/features/agents/ui/buzzAgentConfig.ts:108"}, "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-e95d9aaf34340393", "name": "Legacy-named symbol `databricks_v2` in desktop/src/features/agents/ui/agentConfigOptions.test.mjs:32", "shortDescription": {"text": "Legacy-named symbol `databricks_v2` in desktop/src/features/agents/ui/agentConfigOptions.test.mjs:32"}, "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-154f572595b43695", "name": "Legacy-named symbol `databricks_v2` in desktop/src/features/agents/ui/EnvVarsEditor.test.mjs:472", "shortDescription": {"text": "Legacy-named symbol `databricks_v2` in desktop/src/features/agents/ui/EnvVarsEditor.test.mjs:472"}, "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-78dbe389aec42f5f", "name": "Legacy-named symbol `legacy_migration_second_relay_init_does_not_reimport_deleted_v1` in desktop/src/features/messages/l", "shortDescription": {"text": "Legacy-named symbol `legacy_migration_second_relay_init_does_not_reimport_deleted_v1` in desktop/src/features/messages/lib/useDrafts.test.mjs:1078"}, "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-77cff71393c1da6b", "name": "Legacy-named symbol `browser_fragment_v1` in desktop/src/features/profile/ui/NostrBindConsentDialog.tsx:553", "shortDescription": {"text": "Legacy-named symbol `browser_fragment_v1` in desktop/src/features/profile/ui/NostrBindConsentDialog.tsx:553"}, "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-e11864bde8b9e0cf", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 web/src/features/invite/ui/InvitePage.tsx:69", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 web/src/features/invite/ui/InvitePage.tsx:69"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-5fa5af25316da646", "name": "16 env vars used in code but missing from .env.example", "shortDescription": {"text": "16 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `BUZZ_BENCHMARK_DOCKER_HOST`, `BUZZ_UPDATER_ENDPOINT`, `BUZZ_UPDATER_PUBLIC_KEY`, `CI`, `DEV`, `GITHUB_STEP_SUMMARY`, `IS_REACT_ACT_ENVIRONMENT`, `MODE` + 8 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-696376f442412a4e", "name": "Vulnerable dependency opentelemetry_sdk 0.31.0: GHSA-w9wp-h8wv-79jx", "shortDescription": {"text": "Vulnerable dependency opentelemetry_sdk 0.31.0: GHSA-w9wp-h8wv-79jx"}, "fullDescription": {"text": "OSV.dev reports `opentelemetry_sdk` at version `0.31.0` (resolved in `Cargo.lock`) is affected by GHSA-w9wp-h8wv-79jx (aka CVE-2026-48504).\n\nopentelemetry_sdk has unbounded memory allocation in W3C Baggage propagation\n\nAliases: CVE-2026-48504\nAdvisory: https://osv.dev/vulnerability/GHSA-w9wp-h8wv-79jx\nFix: upgrade `opentelemetry_sdk` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-41f3c11e0777104b", "name": "Vulnerable dependency cmov 0.5.3: GHSA-3rjw-m598-pq24", "shortDescription": {"text": "Vulnerable dependency cmov 0.5.3: GHSA-3rjw-m598-pq24"}, "fullDescription": {"text": "OSV.dev reports `cmov` at version `0.5.3` (resolved in `Cargo.lock`) is affected by GHSA-3rjw-m598-pq24 (aka CVE-2026-50185).\nNote: `cmov` is a transitive dependency \u2014 pulled in by another package, not declared directly in a manifest.\n\nCmov/CmovEq on aarch64 can produce wrong results if high-bits of registers are set\n\nAliases: CVE-2026-50185\nAdvisory: https://osv.dev/vulnerability/GHSA-3rjw-m598-pq24\nFix: upgrade `cmov` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-ebfcacab2efbbf7f", "name": "Dependency audioadapter-buffers is a major version behind", "shortDescription": {"text": "Dependency audioadapter-buffers is a major version behind"}, "fullDescription": {"text": "`audioadapter-buffers` is pinned at `3.0` in `desktop/src-tauri/Cargo.toml` while the latest release on the cargo registry is `4.0.0` \u2014 1 major version(s) behind. Old majors stop receiving security backports and accumulate known CVEs. Review the upstream changelog / migration guide and upgrade `audioadapter-buffers` to `4.0.0`."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "low", "confidence": 0.9}}, {"id": "scanner-6dfc9e29e71a741d", "name": "Dependency evalexpr is two or more major versions behind", "shortDescription": {"text": "Dependency evalexpr is two or more major versions behind"}, "fullDescription": {"text": "`evalexpr` is pinned at `11` in `crates/buzz-acp/Cargo.toml` while the latest release on the cargo registry is `13.1.0` \u2014 2 major version(s) behind. Old majors stop receiving security backports and accumulate known CVEs. Review the upstream changelog / migration guide and upgrade `evalexpr` to `13.1.0`."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 0.9}}]}}, "automationDetails": {"id": "repobility/30785"}, "properties": {"repository": "block/buzz", "repoUrl": "https://github.com/block/buzz", "branch": "main"}, "results": [{"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-9c06100b47d740ce", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 desktop/tests/e2e/navigation.spec.ts:51"}, "properties": {"repobilityId": "b35ee736ef8dbefe", "scanner": "scanner-primary", "fingerprint": "9c06100b47d740ce", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/tests/e2e/navigation.spec.ts"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-89bf6ea2ce223fcf", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/shared/ui/link-preview-attachment.tsx:131"}, "properties": {"repobilityId": "3f63cf7e60720c18", "scanner": "scanner-primary", "fingerprint": "89bf6ea2ce223fcf", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/shared/ui/link-preview-attachment.tsx"}, "region": {"startLine": 131}}}]}, {"ruleId": "scanner-037f700fcb17a906", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/shared/ui/VideoPlayer.tsx:1667"}, "properties": {"repobilityId": "5ab3ae1243ee5230", "scanner": "scanner-primary", "fingerprint": "037f700fcb17a906", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/shared/ui/VideoPlayer.tsx"}, "region": {"startLine": 1667}}}]}, {"ruleId": "scanner-1da43ef14b5ff206", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/shared/ui/sidebar-menu-label.tsx:20"}, "properties": {"repobilityId": "033d82a3383c133c", "scanner": "scanner-primary", "fingerprint": "1da43ef14b5ff206", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/shared/ui/sidebar-menu-label.tsx"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-215d98b4a3b758af", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/shared/ui/markdown/FileCard.tsx:65"}, "properties": {"repobilityId": "e4560c219d39fbd9", "scanner": "scanner-primary", "fingerprint": "215d98b4a3b758af", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/shared/ui/markdown/FileCard.tsx"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-fe13ddf646b68a40", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/settings/ui/ModerationQueueCard.tsx:310"}, "properties": {"repobilityId": "46b6fc6fbddde6c0", "scanner": "scanner-primary", "fingerprint": "fe13ddf646b68a40", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/settings/ui/ModerationQueueCard.tsx"}, "region": {"startLine": 310}}}]}, {"ruleId": "scanner-7935ad5294cf6efa", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/settings/ui/SoundPicker.tsx:95"}, "properties": {"repobilityId": "e22bde73fabb84f8", "scanner": "scanner-primary", "fingerprint": "7935ad5294cf6efa", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/settings/ui/SoundPicker.tsx"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-f43dce942b4f79d3", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/settings/ui/ChannelTemplatesSettingsCard.tsx:210"}, "properties": {"repobilityId": "cc388d76354f0312", "scanner": "scanner-primary", "fingerprint": "f43dce942b4f79d3", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/settings/ui/ChannelTemplatesSettingsCard.tsx"}, "region": {"startLine": 210}}}]}, {"ruleId": "scanner-cebcb3dbe025db6e", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/settings/ui/ActiveAgentCommunitiesSettingsCard.tsx:99"}, "properties": {"repobilityId": "5772d461023aa8ce", "scanner": "scanner-primary", "fingerprint": "cebcb3dbe025db6e", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/settings/ui/ActiveAgentCommunitiesSettingsCard.tsx"}, "region": {"startLine": 99}}}]}, {"ruleId": "scanner-f472d9f1fbf70df1", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/settings/ui/SendFeedbackDialog.tsx:263"}, "properties": {"repobilityId": "9687abd2eeff4f7d", "scanner": "scanner-primary", "fingerprint": "f472d9f1fbf70df1", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/settings/ui/SendFeedbackDialog.tsx"}, "region": {"startLine": 263}}}]}, {"ruleId": "scanner-bc99f99e3ab72ae5", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/settings/ui/SettingsPanels.tsx:702"}, "properties": {"repobilityId": "8d692d05d4564628", "scanner": "scanner-primary", "fingerprint": "bc99f99e3ab72ae5", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/settings/ui/SettingsPanels.tsx"}, "region": {"startLine": 702}}}]}, {"ruleId": "scanner-7d95f5b540835fed", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/forum/ui/ForumPostCard.tsx:95"}, "properties": {"repobilityId": "14e3726594cd57d7", "scanner": "scanner-primary", "fingerprint": "7d95f5b540835fed", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/forum/ui/ForumPostCard.tsx"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-b4ce2d2a4fa3a4ab", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectCards.tsx:434"}, "properties": {"repobilityId": "64606531487a3c7a", "scanner": "scanner-primary", "fingerprint": "b4ce2d2a4fa3a4ab", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/projects/ui/ProjectCards.tsx"}, "region": {"startLine": 434}}}]}, {"ruleId": "scanner-2ae7630c9bc36f47", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectRepositorySource.tsx:65"}, "properties": {"repobilityId": "9ff04589891dafe5", "scanner": "scanner-primary", "fingerprint": "2ae7630c9bc36f47", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/projects/ui/ProjectRepositorySource.tsx"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-fbfbc9212dbd5a15", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectPullRequestFilesChangedPanel.tsx:575"}, "properties": {"repobilityId": "f7175e266118e404", "scanner": "scanner-primary", "fingerprint": "fbfbc9212dbd5a15", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/projects/ui/ProjectPullRequestFilesChangedPanel.tsx"}, "region": {"startLine": 575}}}]}, {"ruleId": "scanner-471ea71f55fb168e", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectWorkspaceTabs.tsx:85"}, "properties": {"repobilityId": "bd91de0a3c556f91", "scanner": "scanner-primary", "fingerprint": "471ea71f55fb168e", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/projects/ui/ProjectWorkspaceTabs.tsx"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-8d7f516efe03c67c", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/PullRequestReviewersRow.tsx:222"}, "properties": {"repobilityId": "57786b3d3689489a", "scanner": "scanner-primary", "fingerprint": "8d7f516efe03c67c", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/projects/ui/PullRequestReviewersRow.tsx"}, "region": {"startLine": 222}}}]}, {"ruleId": "scanner-eca7ebc8b6e94b0a", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectDetailFeedPanels.tsx:120"}, "properties": {"repobilityId": "1e1e61afb25a2316", "scanner": "scanner-primary", "fingerprint": "eca7ebc8b6e94b0a", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/projects/ui/ProjectDetailFeedPanels.tsx"}, "region": {"startLine": 120}}}]}, {"ruleId": "scanner-5ecb53f5c1bb3487", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectsAgentPromptPage.tsx:487"}, "properties": {"repobilityId": "19ec9d47ddbc60f1", "scanner": "scanner-primary", "fingerprint": "5ecb53f5c1bb3487", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/projects/ui/ProjectsAgentPromptPage.tsx"}, "region": {"startLine": 487}}}]}, {"ruleId": "scanner-929cd1c7dbb0ffdf", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectFeedRow.tsx:41"}, "properties": {"repobilityId": "c842e491012d9116", "scanner": "scanner-primary", "fingerprint": "929cd1c7dbb0ffdf", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/projects/ui/ProjectFeedRow.tsx"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-2be9949d821f64f5", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectIssuesPanel.tsx:125"}, "properties": {"repobilityId": "e2db99cf4d3b59d0", "scanner": "scanner-primary", "fingerprint": "2be9949d821f64f5", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/projects/ui/ProjectIssuesPanel.tsx"}, "region": {"startLine": 125}}}]}, {"ruleId": "scanner-b9449f27a8817f6c", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectPullRequestsPanel.tsx:214"}, "properties": {"repobilityId": "e05e065fa5402e7b", "scanner": "scanner-primary", "fingerprint": "b9449f27a8817f6c", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/projects/ui/ProjectPullRequestsPanel.tsx"}, "region": {"startLine": 214}}}]}, {"ruleId": "scanner-65e21223306d55b6", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectDetailScreen.tsx:813"}, "properties": {"repobilityId": "06e212dd084b7e53", "scanner": "scanner-primary", "fingerprint": "65e21223306d55b6", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/projects/ui/ProjectDetailScreen.tsx"}, "region": {"startLine": 813}}}]}, {"ruleId": "scanner-03b778162ba3129c", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectReadmePanel.tsx:116"}, "properties": {"repobilityId": "eefbf44f63642aa9", "scanner": "scanner-primary", "fingerprint": "03b778162ba3129c", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/projects/ui/ProjectReadmePanel.tsx"}, "region": {"startLine": 116}}}]}, {"ruleId": "scanner-9ab943281d41f9f5", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectsActivityFeed.tsx:315"}, "properties": {"repobilityId": "0f77e9deb63a5cca", "scanner": "scanner-primary", "fingerprint": "9ab943281d41f9f5", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/projects/ui/ProjectsActivityFeed.tsx"}, "region": {"startLine": 315}}}]}, {"ruleId": "scanner-5431cb13d6d681ea", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectsPullRequestsList.tsx:119"}, "properties": {"repobilityId": "e10dd94fbcb65a68", "scanner": "scanner-primary", "fingerprint": "5431cb13d6d681ea", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/projects/ui/ProjectsPullRequestsList.tsx"}, "region": {"startLine": 119}}}]}, {"ruleId": "scanner-2a9b4183974d9f0d", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectPullRequestInlineComments.tsx:67"}, "properties": {"repobilityId": "1e85d2f51ab0bd3e", "scanner": "scanner-primary", "fingerprint": "2a9b4183974d9f0d", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/projects/ui/ProjectPullRequestInlineComments.tsx"}, "region": {"startLine": 67}}}]}, {"ruleId": "scanner-6f972a7a6f70a011", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/projects/ui/ProjectRepositoryPanel.tsx:173"}, "properties": {"repobilityId": "295e1d4bd30a3e3f", "scanner": "scanner-primary", "fingerprint": "6f972a7a6f70a011", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/projects/ui/ProjectRepositoryPanel.tsx"}, "region": {"startLine": 173}}}]}, {"ruleId": "scanner-4f98f6feda491760", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/mesh-compute/ui/MeshComputeSettingsCard.tsx:361"}, "properties": {"repobilityId": "ee7bd06d86bbf51c", "scanner": "scanner-primary", "fingerprint": "4f98f6feda491760", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/mesh-compute/ui/MeshComputeSettingsCard.tsx"}, "region": {"startLine": 361}}}]}, {"ruleId": "scanner-fb60cd563c798f08", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/custom-emoji/ui/CustomEmojiSettingsCard.tsx:170"}, "properties": {"repobilityId": "35414ba119486ab2", "scanner": "scanner-primary", "fingerprint": "fb60cd563c798f08", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/custom-emoji/ui/CustomEmojiSettingsCard.tsx"}, "region": {"startLine": 170}}}]}, {"ruleId": "scanner-6c02ba1607e72532", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/search/ui/TopbarSearch.tsx:264"}, "properties": {"repobilityId": "bffa53c24fb2723b", "scanner": "scanner-primary", "fingerprint": "6c02ba1607e72532", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/search/ui/TopbarSearch.tsx"}, "region": {"startLine": 264}}}]}, {"ruleId": "scanner-8269d8202079c757", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/home/ui/RecentNotesSection.tsx:76"}, "properties": {"repobilityId": "8c72bffc631b0b2d", "scanner": "scanner-primary", "fingerprint": "8269d8202079c757", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/home/ui/RecentNotesSection.tsx"}, "region": {"startLine": 76}}}]}, {"ruleId": "scanner-9a210398e0d73fc5", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/home/ui/InboxListPane.tsx:97"}, "properties": {"repobilityId": "e1b14a685d8ba1fa", "scanner": "scanner-primary", "fingerprint": "9a210398e0d73fc5", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/home/ui/InboxListPane.tsx"}, "region": {"startLine": 97}}}]}, {"ruleId": "scanner-a3e9cb950d7599d3", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/home/ui/InboxDetailPane.tsx:430"}, "properties": {"repobilityId": "2c1904cab34950b2", "scanner": "scanner-primary", "fingerprint": "a3e9cb950d7599d3", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/home/ui/InboxDetailPane.tsx"}, "region": {"startLine": 430}}}]}, {"ruleId": "scanner-0eb09a9acc481dd9", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/home/ui/InboxMessageRow.tsx:179"}, "properties": {"repobilityId": "eb4d507db483a1f3", "scanner": "scanner-primary", "fingerprint": "0eb09a9acc481dd9", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/home/ui/InboxMessageRow.tsx"}, "region": {"startLine": 179}}}]}, {"ruleId": "scanner-6d44f6e217dd6e4b", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/reminders/ui/RemindersPanel.tsx:117"}, "properties": {"repobilityId": "9ea81b1df0f381a6", "scanner": "scanner-primary", "fingerprint": "6d44f6e217dd6e4b", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/reminders/ui/RemindersPanel.tsx"}, "region": {"startLine": 117}}}]}, {"ruleId": "scanner-d1c4e36c72e0b9c8", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/SnapshotOptionMenu.tsx:53"}, "properties": {"repobilityId": "b352174d09fb1805", "scanner": "scanner-primary", "fingerprint": "d1c4e36c72e0b9c8", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/agents/ui/SnapshotOptionMenu.tsx"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-ec3dfa8ea222deda", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/PersonaCatalogDialog.tsx:192"}, "properties": {"repobilityId": "7b2b6a203441dacc", "scanner": "scanner-primary", "fingerprint": "ec3dfa8ea222deda", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/agents/ui/PersonaCatalogDialog.tsx"}, "region": {"startLine": 192}}}]}, {"ruleId": "scanner-ba6930a2d66e13a5", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/ModelPicker.tsx:183"}, "properties": {"repobilityId": "ae20513a17a99721", "scanner": "scanner-primary", "fingerprint": "ba6930a2d66e13a5", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/agents/ui/ModelPicker.tsx"}, "region": {"startLine": 183}}}]}, {"ruleId": "scanner-09f3b3c06fedc669", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/PersonaModelCombobox.tsx:207"}, "properties": {"repobilityId": "738cae7e3f71e73f", "scanner": "scanner-primary", "fingerprint": "09f3b3c06fedc669", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/agents/ui/PersonaModelCombobox.tsx"}, "region": {"startLine": 207}}}]}, {"ruleId": "scanner-2ee056dc96ef8a63", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/AgentConfigPanel.tsx:48"}, "properties": {"repobilityId": "59c9d67d62cfc2b0", "scanner": "scanner-primary", "fingerprint": "2ee056dc96ef8a63", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/agents/ui/AgentConfigPanel.tsx"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-d61a0eb1160eb443", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/TeamSnapshotExportDialog.tsx:83"}, "properties": {"repobilityId": "dd65e0a64acef355", "scanner": "scanner-primary", "fingerprint": "d61a0eb1160eb443", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/agents/ui/TeamSnapshotExportDialog.tsx"}, "region": {"startLine": 83}}}]}, {"ruleId": "scanner-6695b2d7a18f9bbe", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/McpServersSection.tsx:92"}, "properties": {"repobilityId": "5f857502da172ed8", "scanner": "scanner-primary", "fingerprint": "6695b2d7a18f9bbe", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/agents/ui/McpServersSection.tsx"}, "region": {"startLine": 92}}}]}, {"ruleId": "scanner-d9ebd522de94306a", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/agentConfigControls.tsx:223"}, "properties": {"repobilityId": "d277f4f45d057302", "scanner": "scanner-primary", "fingerprint": "d9ebd522de94306a", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/agents/ui/agentConfigControls.tsx"}, "region": {"startLine": 223}}}]}, {"ruleId": "scanner-2ef6321ab89f288c", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/TeamIdentityCard.tsx:94"}, "properties": {"repobilityId": "51cc40cb1fa45a39", "scanner": "scanner-primary", "fingerprint": "2ef6321ab89f288c", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/agents/ui/TeamIdentityCard.tsx"}, "region": {"startLine": 94}}}]}, {"ruleId": "scanner-2eae793dd83053a8", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/RelayDirectorySection.tsx:118"}, "properties": {"repobilityId": "152379a9c72f370e", "scanner": "scanner-primary", "fingerprint": "2eae793dd83053a8", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/agents/ui/RelayDirectorySection.tsx"}, "region": {"startLine": 118}}}]}, {"ruleId": "scanner-9d2c6e5d586413dd", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/PersonaDropdownField.tsx:91"}, "properties": {"repobilityId": "200517fd422800cb", "scanner": "scanner-primary", "fingerprint": "9d2c6e5d586413dd", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/agents/ui/PersonaDropdownField.tsx"}, "region": {"startLine": 91}}}]}, {"ruleId": "scanner-dd8dd4a9e6783034", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/PersonaCatalogDetailsSheet.tsx:60"}, "properties": {"repobilityId": "20111ccdb157fcc5", "scanner": "scanner-primary", "fingerprint": "dd8dd4a9e6783034", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/agents/ui/PersonaCatalogDetailsSheet.tsx"}, "region": {"startLine": 60}}}]}, {"ruleId": "scanner-a51a001ce2f26620", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/PersonaShareRecipients.tsx:294"}, "properties": {"repobilityId": "2ce1a4746a74a15c", "scanner": "scanner-primary", "fingerprint": "a51a001ce2f26620", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/agents/ui/PersonaShareRecipients.tsx"}, "region": {"startLine": 294}}}]}, {"ruleId": "scanner-4433b640d0f29cbc", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/AgentSnapshotExportDialog.tsx:100"}, "properties": {"repobilityId": "c28ce9ba179d711e", "scanner": "scanner-primary", "fingerprint": "4433b640d0f29cbc", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/agents/ui/AgentSnapshotExportDialog.tsx"}, "region": {"startLine": 100}}}]}, {"ruleId": "scanner-b92f08bfbe8c39c4", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/RespondToField.tsx:353"}, "properties": {"repobilityId": "b00510f44fd77ce1", "scanner": "scanner-primary", "fingerprint": "b92f08bfbe8c39c4", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/agents/ui/RespondToField.tsx"}, "region": {"startLine": 353}}}]}, {"ruleId": "scanner-a7dff157ce5a027c", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/AgentAiDefaults.tsx:50"}, "properties": {"repobilityId": "1d5167444b6b87b6", "scanner": "scanner-primary", "fingerprint": "a7dff157ce5a027c", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/agents/ui/AgentAiDefaults.tsx"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-bb1d7a653dd40215", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/AgentIdentityCard.tsx:72"}, "properties": {"repobilityId": "204b6333e22640e5", "scanner": "scanner-primary", "fingerprint": "bb1d7a653dd40215", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/agents/ui/AgentIdentityCard.tsx"}, "region": {"startLine": 72}}}]}, {"ruleId": "scanner-5a007031dd2c736a", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/PersonaIdentity.tsx:35"}, "properties": {"repobilityId": "5e8b56a9b4556fbf", "scanner": "scanner-primary", "fingerprint": "5a007031dd2c736a", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/agents/ui/PersonaIdentity.tsx"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-c7aa48a2defa7943", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/ManagedAgentRow.tsx:236"}, "properties": {"repobilityId": "a9e46af552cade8d", "scanner": "scanner-primary", "fingerprint": "c7aa48a2defa7943", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/agents/ui/ManagedAgentRow.tsx"}, "region": {"startLine": 236}}}]}, {"ruleId": "scanner-332670caa9637667", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/PersonaShareDialog.tsx:470"}, "properties": {"repobilityId": "e5999398960ae163", "scanner": "scanner-primary", "fingerprint": "332670caa9637667", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/agents/ui/PersonaShareDialog.tsx"}, "region": {"startLine": 470}}}]}, {"ruleId": "scanner-7e03cdff80efc6d5", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/AgentSessionTranscriptList.tsx:569"}, "properties": {"repobilityId": "aed281e3de33adc6", "scanner": "scanner-primary", "fingerprint": "7e03cdff80efc6d5", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/agents/ui/AgentSessionTranscriptList.tsx"}, "region": {"startLine": 569}}}]}, {"ruleId": "scanner-9942f71418ea7444", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/ManagedAgentLogPanel.tsx:164"}, "properties": {"repobilityId": "47c8f722db7b8ea9", "scanner": "scanner-primary", "fingerprint": "9942f71418ea7444", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/agents/ui/ManagedAgentLogPanel.tsx"}, "region": {"startLine": 164}}}]}, {"ruleId": "scanner-2e5e0c819613005f", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/agents/ui/activityRenderClasses/RawRailActivity.tsx:43"}, "properties": {"repobilityId": "5eb12ebb09ecbaca", "scanner": "scanner-primary", "fingerprint": "2e5e0c819613005f", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/agents/ui/activityRenderClasses/RawRailActivity.tsx"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-0222c72a095043e6", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/huddle/components/HuddleBar.tsx:554"}, "properties": {"repobilityId": "4bafb3222a1d7877", "scanner": "scanner-primary", "fingerprint": "0222c72a095043e6", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/huddle/components/HuddleBar.tsx"}, "region": {"startLine": 554}}}]}, {"ruleId": "scanner-8a945bcd08b1c5d5", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/huddle/components/MicControls.tsx:461"}, "properties": {"repobilityId": "37a15bb02a8674ab", "scanner": "scanner-primary", "fingerprint": "8a945bcd08b1c5d5", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/huddle/components/MicControls.tsx"}, "region": {"startLine": 461}}}]}, {"ruleId": "scanner-70361067f5470c86", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/huddle/components/AddAgentDialog.tsx:139"}, "properties": {"repobilityId": "e96655bea63cfbff", "scanner": "scanner-primary", "fingerprint": "70361067f5470c86", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/huddle/components/AddAgentDialog.tsx"}, "region": {"startLine": 139}}}]}, {"ruleId": "scanner-d6c47cb32db56761", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/huddle/components/ParticipantList.tsx:104"}, "properties": {"repobilityId": "b4a1f70799775441", "scanner": "scanner-primary", "fingerprint": "d6c47cb32db56761", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/huddle/components/ParticipantList.tsx"}, "region": {"startLine": 104}}}]}, {"ruleId": "scanner-aedecc10f443cae3", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/DiffMessageExpanded.tsx:42"}, "properties": {"repobilityId": "0883178f029245d1", "scanner": "scanner-primary", "fingerprint": "aedecc10f443cae3", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/messages/ui/DiffMessageExpanded.tsx"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-f0a639ad55d682f3", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/NewMessageResultRow.tsx:137"}, "properties": {"repobilityId": "af35658edf46d263", "scanner": "scanner-primary", "fingerprint": "f0a639ad55d682f3", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/messages/ui/NewMessageResultRow.tsx"}, "region": {"startLine": 137}}}]}, {"ruleId": "scanner-0c717c61bbf7a292", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/SystemMessageRow.tsx:463"}, "properties": {"repobilityId": "e539874d9847468b", "scanner": "scanner-primary", "fingerprint": "0c717c61bbf7a292", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/messages/ui/SystemMessageRow.tsx"}, "region": {"startLine": 463}}}]}, {"ruleId": "scanner-1299a8313eab7910", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/ChannelIntroBlock.tsx:50"}, "properties": {"repobilityId": "3532330d2e939cb0", "scanner": "scanner-primary", "fingerprint": "1299a8313eab7910", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/messages/ui/ChannelIntroBlock.tsx"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-f467a7bc1e490cf9", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/ComposerReplyEditBanner.tsx:34"}, "properties": {"repobilityId": "61928d1bfbdb491d", "scanner": "scanner-primary", "fingerprint": "f467a7bc1e490cf9", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/messages/ui/ComposerReplyEditBanner.tsx"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-596b498435e523c8", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/ComposerAttachments.tsx:569"}, "properties": {"repobilityId": "64c6334facd826bc", "scanner": "scanner-primary", "fingerprint": "596b498435e523c8", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/messages/ui/ComposerAttachments.tsx"}, "region": {"startLine": 569}}}]}, {"ruleId": "scanner-aeb33826ab38e603", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/MessageAgentOwner.tsx:34"}, "properties": {"repobilityId": "40709e4103835689", "scanner": "scanner-primary", "fingerprint": "aeb33826ab38e603", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/messages/ui/MessageAgentOwner.tsx"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-24b8f84668f4e67a", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/DraftDetailPane.tsx:101"}, "properties": {"repobilityId": "1163b32faee90340", "scanner": "scanner-primary", "fingerprint": "24b8f84668f4e67a", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/messages/ui/DraftDetailPane.tsx"}, "region": {"startLine": 101}}}]}, {"ruleId": "scanner-13458d74250d2819", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/MentionAutocomplete.tsx:175"}, "properties": {"repobilityId": "a847ad5f99d03450", "scanner": "scanner-primary", "fingerprint": "13458d74250d2819", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/messages/ui/MentionAutocomplete.tsx"}, "region": {"startLine": 175}}}]}, {"ruleId": "scanner-8daa249c8ab0b95f", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/ChannelAutocomplete.tsx:73"}, "properties": {"repobilityId": "07a9da4ee98b0f32", "scanner": "scanner-primary", "fingerprint": "8daa249c8ab0b95f", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/messages/ui/ChannelAutocomplete.tsx"}, "region": {"startLine": 73}}}]}, {"ruleId": "scanner-498dba4e2ab9e7a9", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/DiffMessage.tsx:60"}, "properties": {"repobilityId": "bffaef3aaed470ac", "scanner": "scanner-primary", "fingerprint": "498dba4e2ab9e7a9", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/messages/ui/DiffMessage.tsx"}, "region": {"startLine": 60}}}]}, {"ruleId": "scanner-0b409523e3d15580", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/MessageTimeline.tsx:585"}, "properties": {"repobilityId": "fba35531689bbd7e", "scanner": "scanner-primary", "fingerprint": "0b409523e3d15580", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/messages/ui/MessageTimeline.tsx"}, "region": {"startLine": 585}}}]}, {"ruleId": "scanner-287663e43769efc5", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/DiffViewer.tsx:97"}, "properties": {"repobilityId": "62c0827a05357abb", "scanner": "scanner-primary", "fingerprint": "287663e43769efc5", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/messages/ui/DiffViewer.tsx"}, "region": {"startLine": 97}}}]}, {"ruleId": "scanner-b85468a06ac6aae0", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 desktop/src/features/messages/ui/BotIdenticon.tsx:31"}, "properties": {"repobilityId": "153feb26b2a8cdb6", "scanner": "scanner-primary", "fingerprint": "b85468a06ac6aae0", "layer": "frontend", "severity": "medium", "confidence": 0.8, "tags": ["frontend-quality", "fq.dangerous-html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/messages/ui/BotIdenticon.tsx"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-5a15b4346042ee87", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/EmojiAutocomplete.tsx:82"}, "properties": {"repobilityId": "4a5be7533a0c6737", "scanner": "scanner-primary", "fingerprint": "5a15b4346042ee87", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/messages/ui/EmojiAutocomplete.tsx"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-fa3488765b6e0881", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/ui/MessageRow.tsx:545"}, "properties": {"repobilityId": "c33b1897b824824c", "scanner": "scanner-primary", "fingerprint": "fa3488765b6e0881", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/messages/ui/MessageRow.tsx"}, "region": {"startLine": 545}}}]}, {"ruleId": "scanner-15b541e9310bfc99", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/messages/lib/useLinkEditor.tsx:338"}, "properties": {"repobilityId": "89b5cf3fd6b349a1", "scanner": "scanner-primary", "fingerprint": "15b541e9310bfc99", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/messages/lib/useLinkEditor.tsx"}, "region": {"startLine": 338}}}]}, {"ruleId": "scanner-2d6a449bc2a654e6", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/onboarding/ui/SetupStep.tsx:186"}, "properties": {"repobilityId": "b942336c41299c25", "scanner": "scanner-primary", "fingerprint": "2d6a449bc2a654e6", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/onboarding/ui/SetupStep.tsx"}, "region": {"startLine": 186}}}]}, {"ruleId": "scanner-1e7eb1ec8f83c8f3", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/onboarding/ui/RuntimeErrorTooltip.tsx:37"}, "properties": {"repobilityId": "9097e849e8f123cd", "scanner": "scanner-primary", "fingerprint": "1e7eb1ec8f83c8f3", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/onboarding/ui/RuntimeErrorTooltip.tsx"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-9b35836ba7c52ecf", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/onboarding/ui/MembershipDenied.tsx:128"}, "properties": {"repobilityId": "48340d313468e10b", "scanner": "scanner-primary", "fingerprint": "9b35836ba7c52ecf", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/onboarding/ui/MembershipDenied.tsx"}, "region": {"startLine": 128}}}]}, {"ruleId": "scanner-6232afe78ddfa7c1", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/workflows/ui/WorkflowDetailPanel.tsx:66"}, "properties": {"repobilityId": "a1376ccd1ee13ae4", "scanner": "scanner-primary", "fingerprint": "6232afe78ddfa7c1", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/workflows/ui/WorkflowDetailPanel.tsx"}, "region": {"startLine": 66}}}]}, {"ruleId": "scanner-082c48bf7385f3f3", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/workflows/ui/WorkflowCard.tsx:83"}, "properties": {"repobilityId": "2dc502151fa313bb", "scanner": "scanner-primary", "fingerprint": "082c48bf7385f3f3", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/workflows/ui/WorkflowCard.tsx"}, "region": {"startLine": 83}}}]}, {"ruleId": "scanner-3791fcb6aaea8c5f", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/workflows/ui/WorkflowRunTrace.tsx:85"}, "properties": {"repobilityId": "93d102d114585e0e", "scanner": "scanner-primary", "fingerprint": "3791fcb6aaea8c5f", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/workflows/ui/WorkflowRunTrace.tsx"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-c94e003a85aab513", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/workflows/ui/ChannelCombobox.tsx:99"}, "properties": {"repobilityId": "747c4fe96c905a66", "scanner": "scanner-primary", "fingerprint": "c94e003a85aab513", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/workflows/ui/ChannelCombobox.tsx"}, "region": {"startLine": 99}}}]}, {"ruleId": "scanner-2212951c1abcfded", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/pulse/ui/AgentActivityCard.tsx:75"}, "properties": {"repobilityId": "99afdc58f4e85134", "scanner": "scanner-primary", "fingerprint": "2212951c1abcfded", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/pulse/ui/AgentActivityCard.tsx"}, "region": {"startLine": 75}}}]}, {"ruleId": "scanner-3df45f440939e0d7", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/pulse/ui/NoteCard.tsx:77"}, "properties": {"repobilityId": "99013c2c0f92ecf8", "scanner": "scanner-primary", "fingerprint": "3df45f440939e0d7", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/pulse/ui/NoteCard.tsx"}, "region": {"startLine": 77}}}]}, {"ruleId": "scanner-e4879461d93d022b", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/pulse/ui/PulseView.tsx:400"}, "properties": {"repobilityId": "080374a6e41fabe2", "scanner": "scanner-primary", "fingerprint": "e4879461d93d022b", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/pulse/ui/PulseView.tsx"}, "region": {"startLine": 400}}}]}, {"ruleId": "scanner-543355d7941b8952", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/channels/ui/ChannelMemberInviteCard.tsx:243"}, "properties": {"repobilityId": "d07b12a6717ecf07", "scanner": "scanner-primary", "fingerprint": "543355d7941b8952", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/channels/ui/ChannelMemberInviteCard.tsx"}, "region": {"startLine": 243}}}]}, {"ruleId": "scanner-253f5ac315872c09", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/channels/ui/ChannelPane.tsx:712"}, "properties": {"repobilityId": "20e6dd1d86614761", "scanner": "scanner-primary", "fingerprint": "253f5ac315872c09", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/channels/ui/ChannelPane.tsx"}, "region": {"startLine": 712}}}]}, {"ruleId": "scanner-6181651d02d1e61a", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/channels/ui/MembersSidebar.tsx:929"}, "properties": {"repobilityId": "39043c50f4630fc2", "scanner": "scanner-primary", "fingerprint": "6181651d02d1e61a", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/channels/ui/MembersSidebar.tsx"}, "region": {"startLine": 929}}}]}, {"ruleId": "scanner-a05fe3ff146a91ca", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/channels/ui/AddChannelBotPersonasSection.tsx:42"}, "properties": {"repobilityId": "738cb46dcfd8d598", "scanner": "scanner-primary", "fingerprint": "a05fe3ff146a91ca", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/channels/ui/AddChannelBotPersonasSection.tsx"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-f84ba6f017d8d61d", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/channels/ui/BotActivityBar.tsx:208"}, "properties": {"repobilityId": "a4fb8d04252fdb1c", "scanner": "scanner-primary", "fingerprint": "f84ba6f017d8d61d", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/channels/ui/BotActivityBar.tsx"}, "region": {"startLine": 208}}}]}, {"ruleId": "scanner-8f152cf610991520", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/channels/ui/ChannelManagementSheetRows.tsx:36"}, "properties": {"repobilityId": "d2dc004b910674bf", "scanner": "scanner-primary", "fingerprint": "8f152cf610991520", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/channels/ui/ChannelManagementSheetRows.tsx"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-c6c5a414e19dca0c", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/channels/ui/AgentSessionThreadPanel.tsx:427"}, "properties": {"repobilityId": "02b4c511cde53b24", "scanner": "scanner-primary", "fingerprint": "c6c5a414e19dca0c", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/channels/ui/AgentSessionThreadPanel.tsx"}, "region": {"startLine": 427}}}]}, {"ruleId": "scanner-e1dd5b1d5100cf93", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/channels/ui/MembersSidebarMemberCard.tsx:182"}, "properties": {"repobilityId": "e6c2fd2771e9dd7b", "scanner": "scanner-primary", "fingerprint": "e1dd5b1d5100cf93", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/channels/ui/MembersSidebarMemberCard.tsx"}, "region": {"startLine": 182}}}]}, {"ruleId": "scanner-d9dc4b8d238ce2ef", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/channels/ui/ChannelBrowserDialog.tsx:724"}, "properties": {"repobilityId": "38c98fc6179ef436", "scanner": "scanner-primary", "fingerprint": "d9dc4b8d238ce2ef", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/channels/ui/ChannelBrowserDialog.tsx"}, "region": {"startLine": 724}}}]}, {"ruleId": "scanner-851261ff06dbc71a", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/profile/ui/UserProfilePanelTabs.tsx:404"}, "properties": {"repobilityId": "43970fc712b00c1a", "scanner": "scanner-primary", "fingerprint": "851261ff06dbc71a", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/profile/ui/UserProfilePanelTabs.tsx"}, "region": {"startLine": 404}}}]}, {"ruleId": "scanner-187057b12f8d0569", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/profile/ui/UserProfilePanelFields.tsx:264"}, "properties": {"repobilityId": "daa53c2a71f3718f", "scanner": "scanner-primary", "fingerprint": "187057b12f8d0569", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/profile/ui/UserProfilePanelFields.tsx"}, "region": {"startLine": 264}}}]}, {"ruleId": "scanner-4f680aedcce5d2c8", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/profile/ui/UserProfilePopover.tsx:533"}, "properties": {"repobilityId": "a42ee4e919ff5472", "scanner": "scanner-primary", "fingerprint": "4f680aedcce5d2c8", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/profile/ui/UserProfilePopover.tsx"}, "region": {"startLine": 533}}}]}, {"ruleId": "scanner-2f7b138953db9d35", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/profile/ui/SelectedRecipientChip.tsx:120"}, "properties": {"repobilityId": "07d1c9550d0b9d9f", "scanner": "scanner-primary", "fingerprint": "2f7b138953db9d35", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/profile/ui/SelectedRecipientChip.tsx"}, "region": {"startLine": 120}}}]}, {"ruleId": "scanner-06441ac60e695320", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/profile/ui/UserProfilePanelSections.tsx:896"}, "properties": {"repobilityId": "c1cd31ff77368f34", "scanner": "scanner-primary", "fingerprint": "06441ac60e695320", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/profile/ui/UserProfilePanelSections.tsx"}, "region": {"startLine": 896}}}]}, {"ruleId": "scanner-b7f00b9ea2bfd376", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/profile/ui/ProfilePopover.tsx:143"}, "properties": {"repobilityId": "e735f6f76035c036", "scanner": "scanner-primary", "fingerprint": "b7f00b9ea2bfd376", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/profile/ui/ProfilePopover.tsx"}, "region": {"startLine": 143}}}]}, {"ruleId": "scanner-2246cfcbd36fb03c", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/communities/ui/HostedCommunityOnboarding.tsx:621"}, "properties": {"repobilityId": "72c7a96012b8d5a1", "scanner": "scanner-primary", "fingerprint": "2246cfcbd36fb03c", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/communities/ui/HostedCommunityOnboarding.tsx"}, "region": {"startLine": 621}}}]}, {"ruleId": "scanner-93590d10530822db", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/communities/ui/WelcomeSetup.tsx:283"}, "properties": {"repobilityId": "d391707c8de8be97", "scanner": "scanner-primary", "fingerprint": "93590d10530822db", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/communities/ui/WelcomeSetup.tsx"}, "region": {"startLine": 283}}}]}, {"ruleId": "scanner-723826189c80dd8e", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/communities/ui/CommunitySwitcher.tsx:247"}, "properties": {"repobilityId": "311c5c822c43b42c", "scanner": "scanner-primary", "fingerprint": "723826189c80dd8e", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/communities/ui/CommunitySwitcher.tsx"}, "region": {"startLine": 247}}}]}, {"ruleId": "scanner-b4218d9aa76b47de", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/sidebar/ui/SidebarProfileCard.tsx:91"}, "properties": {"repobilityId": "d1fa405e7d468468", "scanner": "scanner-primary", "fingerprint": "b4218d9aa76b47de", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/sidebar/ui/SidebarProfileCard.tsx"}, "region": {"startLine": 91}}}]}, {"ruleId": "scanner-544f32f0cb9d6328", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/sidebar/ui/SidebarDnd.tsx:155"}, "properties": {"repobilityId": "c525d1d5fe317c1f", "scanner": "scanner-primary", "fingerprint": "544f32f0cb9d6328", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/sidebar/ui/SidebarDnd.tsx"}, "region": {"startLine": 155}}}]}, {"ruleId": "scanner-0944f25fd84162ea", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/sidebar/ui/CustomChannelSection.tsx:664"}, "properties": {"repobilityId": "ee3987bc1ea1f0c4", "scanner": "scanner-primary", "fingerprint": "0944f25fd84162ea", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/sidebar/ui/CustomChannelSection.tsx"}, "region": {"startLine": 664}}}]}, {"ruleId": "scanner-e09e693820a56b85", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/sidebar/ui/SidebarSection.tsx:297"}, "properties": {"repobilityId": "40726860b9897e62", "scanner": "scanner-primary", "fingerprint": "e09e693820a56b85", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/sidebar/ui/SidebarSection.tsx"}, "region": {"startLine": 297}}}]}, {"ruleId": "scanner-789b3600d33b33bb", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/local-archive/ui/LocalArchiveSettingsCard.tsx:583"}, "properties": {"repobilityId": "f9e03506d63c24c7", "scanner": "scanner-primary", "fingerprint": "789b3600d33b33bb", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/local-archive/ui/LocalArchiveSettingsCard.tsx"}, "region": {"startLine": 583}}}]}, {"ruleId": "scanner-af279ef6c14277a6", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/community-members/ui/CommunityMembersSettingsCard.tsx:174"}, "properties": {"repobilityId": "a859a41c6144a48d", "scanner": "scanner-primary", "fingerprint": "af279ef6c14277a6", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/community-members/ui/CommunityMembersSettingsCard.tsx"}, "region": {"startLine": 174}}}]}, {"ruleId": "scanner-474941b859e9e54d", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 desktop/src/features/community-members/ui/CommunityMembersCard.tsx:103"}, "properties": {"repobilityId": "5a7443cf1217e23a", "scanner": "scanner-primary", "fingerprint": "474941b859e9e54d", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/community-members/ui/CommunityMembersCard.tsx"}, "region": {"startLine": 103}}}]}, {"ruleId": "scanner-e25d8b3cf34272b4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 web/src/features/repos/use-repo-refs.ts:52"}, "properties": {"repobilityId": "a70aaafc6a888560", "scanner": "scanner-primary", "fingerprint": "e25d8b3cf34272b4", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/src/features/repos/use-repo-refs.ts"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-7ce8f060862a6558", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 web/src/features/repos/ui/RepoCommitsSection.tsx:11"}, "properties": {"repobilityId": "39986ad95e68c29c", "scanner": "scanner-primary", "fingerprint": "7ce8f060862a6558", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/src/features/repos/ui/RepoCommitsSection.tsx"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-7c924da8ae566951", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 web/src/features/repos/ui/RepoBlobViewer.tsx:279"}, "properties": {"repobilityId": "49c638b6da6a8f0e", "scanner": "scanner-primary", "fingerprint": "7c924da8ae566951", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/src/features/repos/ui/RepoBlobViewer.tsx"}, "region": {"startLine": 279}}}]}, {"ruleId": "scanner-b74d78f20c40e6a9", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 web/src/features/repos/ui/RepoDetailPage.tsx:50"}, "properties": {"repobilityId": "bd470749f9e2d63c", "scanner": "scanner-primary", "fingerprint": "b74d78f20c40e6a9", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/src/features/repos/ui/RepoDetailPage.tsx"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-e30912589836e05b", "level": "warning", "message": {"text": "dynamic urllib use detected \u2014 benchmarks/harbor-buzz-orchestra/testbed/src/harbor_buzz_testbed/provisioner.py:118"}, "properties": {"repobilityId": "f4041c463e184a80", "scanner": "scanner-primary", "fingerprint": "e30912589836e05b", "layer": "security", "severity": "medium", "confidence": 0.55, "tags": ["semgrep", "security", "python"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "benchmarks/harbor-buzz-orchestra/testbed/src/harbor_buzz_testbed/provisioner.py"}, "region": {"startLine": 118}}}]}, {"ruleId": "scanner-c663de0f18b45fb6", "level": "warning", "message": {"text": "CVE-2026-50185: cmov 0.5.3 \u2014 Cargo.lock"}, "properties": {"repobilityId": "ea8e5bc4443e43f6", "scanner": "scanner-primary", "fingerprint": "c663de0f18b45fb6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-50185"]}}, {"ruleId": "scanner-bd97be946a930630", "level": "warning", "message": {"text": "GHSA-wrw7-89jp-8q8g: glib 0.18.5 \u2014 desktop/src-tauri/Cargo.lock"}, "properties": {"repobilityId": "e62e73721bfddf04", "scanner": "scanner-primary", "fingerprint": "bd97be946a930630", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "GHSA-wrw7-89jp-8q8g"]}}, {"ruleId": "scanner-47f1d75282adf1ac", "level": "error", "message": {"text": "CVE-2026-48801: linkify-it 5.0.0 \u2014 pnpm-lock.yaml"}, "properties": {"repobilityId": "0b5c1e85930f8d9a", "scanner": "scanner-primary", "fingerprint": "47f1d75282adf1ac", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-48801"]}}, {"ruleId": "scanner-c0a4129c69b0b417", "level": "error", "message": {"text": "CVE-2026-59887: linkify-it 5.0.0 \u2014 pnpm-lock.yaml"}, "properties": {"repobilityId": "abdf70e8bb36b1c6", "scanner": "scanner-primary", "fingerprint": "c0a4129c69b0b417", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59887"]}}, {"ruleId": "scanner-58c862138b68365b", "level": "warning", "message": {"text": "CVE-2026-48988: markdown-it 14.1.1 \u2014 pnpm-lock.yaml"}, "properties": {"repobilityId": "5d79ce36dfb5b29f", "scanner": "scanner-primary", "fingerprint": "58c862138b68365b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-48988"]}}, {"ruleId": "scanner-3c4041c454cda88e", "level": "note", "message": {"text": "DS-0026: No HEALTHCHECK defined \u2014 Dockerfile"}, "properties": {"repobilityId": "da995bb2cfa21f65", "scanner": "scanner-primary", "fingerprint": "3c4041c454cda88e", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["trivy", "misconfig"]}}, {"ruleId": "scanner-adbbc5a6460c7f98", "level": "note", "message": {"text": "DS-0026: No HEALTHCHECK defined \u2014 Dockerfile.push-gateway"}, "properties": {"repobilityId": "1d9e1d2f8d443a3d", "scanner": "scanner-primary", "fingerprint": "adbbc5a6460c7f98", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["trivy", "misconfig"]}}, {"ruleId": "scanner-d4783d387dc261df", "level": "note", "message": {"text": "KSV-0110: Workloads in the default namespace \u2014 deploy/charts/buzz-push-gateway/templates/deployment.yaml"}, "properties": {"repobilityId": "52e40546d43c0960", "scanner": "scanner-primary", "fingerprint": "d4783d387dc261df", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["trivy", "misconfig"]}}, {"ruleId": "scanner-4e45ea7a3032c58c", "level": "warning", "message": {"text": "KSV-0125: Restrict container images to trusted registries \u2014 deploy/charts/buzz-push-gateway/templates/deployment.yaml"}, "properties": {"repobilityId": "ce3ca1df8d4077cb", "scanner": "scanner-primary", "fingerprint": "4e45ea7a3032c58c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "misconfig"]}}, {"ruleId": "scanner-2679282aa1c484b5", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: AGENTS.md"}, "properties": {"repobilityId": "27d579812e6be614", "scanner": "scanner-primary", "fingerprint": "2679282aa1c484b5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "agents_md"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "AGENTS.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-49171c419483ad0a", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: examples/meadow-core/skills/github-research/SKILL.md"}, "properties": {"repobilityId": "9209748f6e94c9d9", "scanner": "scanner-primary", "fingerprint": "49171c419483ad0a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/meadow-core/skills/github-research/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e637c415447867e4", "level": "none", "message": {"text": "Run SkillSpector's LLM-backed analysis in your own pipeline"}, "properties": {"repobilityId": "1936f198ff5212bf", "scanner": "scanner-primary", "fingerprint": "e637c415447867e4", "layer": "security", "severity": "info", "confidence": 1.0, "tags": ["skillspector", "mcp-skill", "llm-advisory", "ai-coder"]}}, {"ruleId": "scanner-64612ab88454d2dc", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: rust:${RUST_VERSION}-${DEBIAN_VERSION}"}, "properties": {"repobilityId": "e629418b23510df5", "scanner": "scanner-primary", "fingerprint": "64612ab88454d2dc", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-90d58a211142b588", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:${NODE_VERSION}-${DEBIAN_VERSION}-slim"}, "properties": {"repobilityId": "9f91503a90800828", "scanner": "scanner-primary", "fingerprint": "90d58a211142b588", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 77}}}]}, {"ruleId": "scanner-5b3d9a19dbd71baf", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:${DEBIAN_VERSION}-slim"}, "properties": {"repobilityId": "87706847377a2c30", "scanner": "scanner-primary", "fingerprint": "5b3d9a19dbd71baf", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 115}}}]}, {"ruleId": "scanner-ea414760c2102e55", "level": "warning", "message": {"text": "Possible secret in scripts/dev-setup.sh"}, "properties": {"repobilityId": "807e047205b7d391", "scanner": "scanner-primary", "fingerprint": "ea414760c2102e55", "layer": "security", "severity": "medium", "confidence": 0.58, "tags": ["secrets", "password_literal"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/dev-setup.sh"}, "region": {"startLine": 60}}}]}, {"ruleId": "scanner-b3d8d5b07d4f15df", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in desktop/src/shared/lib/codeBlockClipboard.ts:51"}, "properties": {"repobilityId": "9b585c5378cdbde9", "scanner": "scanner-primary", "fingerprint": "b3d8d5b07d4f15df", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/shared/lib/codeBlockClipboard.ts"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-51b1777a21ffcd78", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in desktop/src/features/messages/ui/BotIdenticon.tsx:31"}, "properties": {"repobilityId": "a256e0df880f9269", "scanner": "scanner-primary", "fingerprint": "51b1777a21ffcd78", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/messages/ui/BotIdenticon.tsx"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-9a2f64bc55ecdf9f", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in desktop/src/features/messages/lib/normalizeMentionClipboard.ts:20"}, "properties": {"repobilityId": "f76f29273c6f4848", "scanner": "scanner-primary", "fingerprint": "9a2f64bc55ecdf9f", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src/features/messages/lib/normalizeMentionClipboard.ts"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-b4f2fce134b45c64", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in web/src/features/repos/git-client.ts:364"}, "properties": {"repobilityId": "96c5a20477771d66", "scanner": "scanner-primary", "fingerprint": "b4f2fce134b45c64", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/src/features/repos/git-client.ts"}, "region": {"startLine": 364}}}]}, {"ruleId": "scanner-68a2b8f5c8cd6b53", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "0036b33690fe05ae", "scanner": "scanner-primary", "fingerprint": "68a2b8f5c8cd6b53", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1838a141491ce38c", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "b8fd4f5048f96576", "scanner": "scanner-primary", "fingerprint": "1838a141491ce38c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8cea11d4a0ebca1a", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "895f81d4b4255125", "scanner": "scanner-primary", "fingerprint": "8cea11d4a0ebca1a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/helm-chart.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c2f64aa5ffd8ebfd", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "1997e400ef2a3432", "scanner": "scanner-primary", "fingerprint": "c2f64aa5ffd8ebfd", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sprig.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4f7a31ad80dc2078", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "69c7a1551e38f8ad", "scanner": "scanner-primary", "fingerprint": "4f7a31ad80dc2078", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/signed-macos-canary.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-993367d3078b0b44", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "49327630f750978f", "scanner": "scanner-primary", "fingerprint": "993367d3078b0b44", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/push-gateway-helm-chart.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-598c113f5257efe1", "level": "note", "message": {"text": "Very large file: desktop/tests/e2e/inbox-live-update.spec.ts (1536 lines)"}, "properties": {"repobilityId": "a8e4724fb493b231", "scanner": "scanner-primary", "fingerprint": "598c113f5257efe1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3b5e5ca87efe0484", "level": "note", "message": {"text": "Very large file: desktop/tests/e2e/channels.spec.ts (3335 lines)"}, "properties": {"repobilityId": "698b7a5ed9beaab5", "scanner": "scanner-primary", "fingerprint": "3b5e5ca87efe0484", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141058ce48a8a5ba", "level": "note", "message": {"text": "Very large file: desktop/tests/e2e/messaging.spec.ts (1429 lines)"}, "properties": {"repobilityId": "385ec2e3e2177f27", "scanner": "scanner-primary", "fingerprint": "141058ce48a8a5ba", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b751dc12054af750", "level": "note", "message": {"text": "Very large file: desktop/tests/e2e/onboarding.spec.ts (2930 lines)"}, "properties": {"repobilityId": "d50e2b06e9b265b4", "scanner": "scanner-primary", "fingerprint": "b751dc12054af750", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-015ab6eabd9b7f8e", "level": "note", "message": {"text": "Very large file: desktop/tests/e2e/profile.spec.ts (1547 lines)"}, "properties": {"repobilityId": "62a4645f93c9c968", "scanner": "scanner-primary", "fingerprint": "015ab6eabd9b7f8e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2938f6dfa8bf433c", "level": "note", "message": {"text": "Very large file: desktop/tests/e2e/scroll-history.spec.ts (2112 lines)"}, "properties": {"repobilityId": "9d4571dc5fbf5ee6", "scanner": "scanner-primary", "fingerprint": "2938f6dfa8bf433c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f60dbf40d452e076", "level": "note", "message": {"text": "Very large file: desktop/tests/e2e/mentions.spec.ts (2113 lines)"}, "properties": {"repobilityId": "10d0c1310bec8fc3", "scanner": "scanner-primary", "fingerprint": "f60dbf40d452e076", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a2ae89ad7578d64c", "level": "note", "message": {"text": "Very large file: desktop/tests/e2e/agents.spec.ts (1677 lines)"}, "properties": {"repobilityId": "9522a5c0ee80cf3b", "scanner": "scanner-primary", "fingerprint": "a2ae89ad7578d64c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4aa01d06679cf825", "level": "note", "message": {"text": "Very large file: desktop/src-tauri/src/app_state_tests.rs (1417 lines)"}, "properties": {"repobilityId": "e66314ce97072403", "scanner": "scanner-primary", "fingerprint": "4aa01d06679cf825", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-954c4a81e849e138", "level": "note", "message": {"text": "Very large file: desktop/src-tauri/src/migration.rs (1402 lines)"}, "properties": {"repobilityId": "3dd3a1f47c0ef4c8", "scanner": "scanner-primary", "fingerprint": "954c4a81e849e138", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f47fb94a0c3d82e9", "level": "note", "message": {"text": "Very large file: desktop/src-tauri/src/secret_store.rs (1306 lines)"}, "properties": {"repobilityId": "447eee2c34c42392", "scanner": "scanner-primary", "fingerprint": "f47fb94a0c3d82e9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-74983c4343de093c", "level": "note", "message": {"text": "Very large file: desktop/src-tauri/src/app_state.rs (1080 lines)"}, "properties": {"repobilityId": "c4900f52066659bc", "scanner": "scanner-primary", "fingerprint": "74983c4343de093c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5e4a8bb2f2940aee", "level": "note", "message": {"text": "Very large file: desktop/src-tauri/src/commands/agents.rs (1337 lines)"}, "properties": {"repobilityId": "990f41c5526b9a52", "scanner": "scanner-primary", "fingerprint": "5e4a8bb2f2940aee", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4690ed6b6f92bff3", "level": "note", "message": {"text": "Very large file: desktop/src-tauri/src/commands/agent_discovery.rs (1465 lines)"}, "properties": {"repobilityId": "d58f0ce4adadb0a3", "scanner": "scanner-primary", "fingerprint": "4690ed6b6f92bff3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bba64099cedc4a0d", "level": "note", "message": {"text": "Very large file: desktop/src-tauri/src/managed_agents/storage.rs (1382 lines)"}, "properties": {"repobilityId": "905223cd4170c781", "scanner": "scanner-primary", "fingerprint": "bba64099cedc4a0d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cf5fa1954d2f3c22", "level": "note", "message": {"text": "Very large file: desktop/src-tauri/src/managed_agents/readiness.rs (1686 lines)"}, "properties": {"repobilityId": "98238bbdcbf63798", "scanner": "scanner-primary", "fingerprint": "cf5fa1954d2f3c22", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9f97cda99f5d6a92", "level": "note", "message": {"text": "Very large file: desktop/src-tauri/src/managed_agents/runtime.rs (2200 lines)"}, "properties": {"repobilityId": "fe5e1fdd5f6de71a", "scanner": "scanner-primary", "fingerprint": "9f97cda99f5d6a92", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6818919163f1820f", "level": "note", "message": {"text": "Very large file: desktop/src/testing/e2eBridge.ts (10902 lines)"}, "properties": {"repobilityId": "2e2ae8d59fee5602", "scanner": "scanner-primary", "fingerprint": "6818919163f1820f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea49e5cdd6025b54", "level": "note", "message": {"text": "Very large file: desktop/src/shared/ui/VideoPlayer.tsx (2213 lines)"}, "properties": {"repobilityId": "f9134e139864e77e", "scanner": "scanner-primary", "fingerprint": "ea49e5cdd6025b54", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bf4f0c40e60330f8", "level": "note", "message": {"text": "Very large file: desktop/src/shared/ui/markdown.tsx (2012 lines)"}, "properties": {"repobilityId": "35fef45f5665e8cd", "scanner": "scanner-primary", "fingerprint": "bf4f0c40e60330f8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3f55bb2921d75e3e", "level": "note", "message": {"text": "Very large file: desktop/src/features/agents/activeAgentTurnsStore.test.mjs (1739 lines)"}, "properties": {"repobilityId": "1725c658e1dbe0ca", "scanner": "scanner-primary", "fingerprint": "3f55bb2921d75e3e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-640ae2876a13ead5", "level": "note", "message": {"text": "Very large file: desktop/src/features/agents/ui/createAgentLocalModeGate.test.mjs (1444 lines)"}, "properties": {"repobilityId": "5319778088dc7831", "scanner": "scanner-primary", "fingerprint": "640ae2876a13ead5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5f95dad3bb135aad", "level": "note", "message": {"text": "Very large file: desktop/src/features/agents/ui/agentSessionTranscriptGrouping.test.mjs (1875 lines)"}, "properties": {"repobilityId": "e2bbda554499a8a8", "scanner": "scanner-primary", "fingerprint": "5f95dad3bb135aad", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-41d1ed8e0d3c29ee", "level": "note", "message": {"text": "Very large file: desktop/src/features/agents/ui/editAgentProviderDiscovery.test.mjs (1646 lines)"}, "properties": {"repobilityId": "780136a6b0e2a6ba", "scanner": "scanner-primary", "fingerprint": "41d1ed8e0d3c29ee", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-df9e454df398f9d6", "level": "note", "message": {"text": "Very large file: desktop/src/features/agents/ui/agentSessionTranscript.test.mjs (1881 lines)"}, "properties": {"repobilityId": "e25aba6a570d8a2d", "scanner": "scanner-primary", "fingerprint": "df9e454df398f9d6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-81f2a550b6ecd7a8", "level": "note", "message": {"text": "Very large file: crates/buzz-media/src/validation.rs (2502 lines)"}, "properties": {"repobilityId": "773f3cc054aa9d7b", "scanner": "scanner-primary", "fingerprint": "81f2a550b6ecd7a8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1846179f31557b51", "level": "note", "message": {"text": "Very large file: crates/buzz-relay/src/state.rs (1740 lines)"}, "properties": {"repobilityId": "7d22168af394a2a3", "scanner": "scanner-primary", "fingerprint": "1846179f31557b51", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-564a6c21832dd0fd", "level": "note", "message": {"text": "Very large file: crates/buzz-relay/src/config.rs (1346 lines)"}, "properties": {"repobilityId": "f6a6f14260dd01bb", "scanner": "scanner-primary", "fingerprint": "564a6c21832dd0fd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2928d6363b681cae", "level": "note", "message": {"text": "Very large file: crates/buzz-relay/src/main.rs (1929 lines)"}, "properties": {"repobilityId": "4582ae7ccb08661b", "scanner": "scanner-primary", "fingerprint": "2928d6363b681cae", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ac86a89943f73ac2", "level": "note", "message": {"text": "Very large file: crates/buzz-relay/src/subscription.rs (1562 lines)"}, "properties": {"repobilityId": "29bacffaffe4d9d9", "scanner": "scanner-primary", "fingerprint": "ac86a89943f73ac2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a3c990d2c718808a", "level": "note", "message": {"text": "Very large file: crates/buzz-relay/src/api/media.rs (1372 lines)"}, "properties": {"repobilityId": "ac4c542a1519650d", "scanner": "scanner-primary", "fingerprint": "a3c990d2c718808a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fa2a6569fa9ed254", "level": "note", "message": {"text": "Very large file: crates/buzz-relay/src/api/bridge.rs (3690 lines)"}, "properties": {"repobilityId": "1a99eda728b27fe6", "scanner": "scanner-primary", "fingerprint": "fa2a6569fa9ed254", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3bc604e54041a0e8", "level": "note", "message": {"text": "Very large file: crates/buzz-relay/src/api/git/cas_publish.rs (1891 lines)"}, "properties": {"repobilityId": "2c9bff09c2bcc134", "scanner": "scanner-primary", "fingerprint": "3bc604e54041a0e8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e7d302eade27c59e", "level": "note", "message": {"text": "Very large file: crates/buzz-relay/src/api/git/transport.rs (2096 lines)"}, "properties": {"repobilityId": "c7addb3f2bba0a82", "scanner": "scanner-primary", "fingerprint": "e7d302eade27c59e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f30313a591ec6c08", "level": "note", "message": {"text": "Very large file: crates/buzz-relay/src/audio/join.rs (3036 lines)"}, "properties": {"repobilityId": "fd33eb0c0fced66b", "scanner": "scanner-primary", "fingerprint": "f30313a591ec6c08", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-36123ee34b11519f", "level": "note", "message": {"text": "Very large file: crates/buzz-relay/src/audio/handler.rs (1430 lines)"}, "properties": {"repobilityId": "62b38cb79447f69c", "scanner": "scanner-primary", "fingerprint": "36123ee34b11519f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6914216d680359f4", "level": "note", "message": {"text": "Very large file: crates/buzz-relay/src/handlers/req.rs (1946 lines)"}, "properties": {"repobilityId": "71f2ad375e3d8a7b", "scanner": "scanner-primary", "fingerprint": "6914216d680359f4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-908892e7387515d6", "level": "note", "message": {"text": "Very large file: crates/buzz-relay/src/handlers/side_effects.rs (3347 lines)"}, "properties": {"repobilityId": "def13f4402c782bd", "scanner": "scanner-primary", "fingerprint": "908892e7387515d6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f32306468f4ad447", "level": "note", "message": {"text": "Very large file: crates/buzz-relay/src/handlers/event.rs (2461 lines)"}, "properties": {"repobilityId": "778a666df12cf65a", "scanner": "scanner-primary", "fingerprint": "f32306468f4ad447", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d3e84a4f363079b1", "level": "note", "message": {"text": "Very large file: crates/buzz-relay/src/handlers/ingest.rs (3686 lines)"}, "properties": {"repobilityId": "d47c281ee5250555", "scanner": "scanner-primary", "fingerprint": "d3e84a4f363079b1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6fa5dd79c4ac9109", "level": "note", "message": {"text": "Very large file: crates/buzz-workflow/src/lib.rs (1564 lines)"}, "properties": {"repobilityId": "c15823e7f228f3a2", "scanner": "scanner-primary", "fingerprint": "6fa5dd79c4ac9109", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7412234b5639a545", "level": "note", "message": {"text": "Very large file: crates/buzz-workflow/src/executor.rs (1834 lines)"}, "properties": {"repobilityId": "c9e7c82a21e5eefe", "scanner": "scanner-primary", "fingerprint": "7412234b5639a545", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0eda1046349a0f7b", "level": "note", "message": {"text": "Very large file: crates/buzz-agent/tests/regressions.rs (1821 lines)"}, "properties": {"repobilityId": "67a699cb54612390", "scanner": "scanner-primary", "fingerprint": "0eda1046349a0f7b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-804c6ba8a3c12652", "level": "note", "message": {"text": "Very large file: crates/buzz-agent/src/llm.rs (2894 lines)"}, "properties": {"repobilityId": "e5e5f8359f15df12", "scanner": "scanner-primary", "fingerprint": "804c6ba8a3c12652", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c7035acb083253ff", "level": "note", "message": {"text": "Very large file: crates/buzz-agent/src/config.rs (2701 lines)"}, "properties": {"repobilityId": "ef769d7d43a54b49", "scanner": "scanner-primary", "fingerprint": "c7035acb083253ff", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8fa37700007e6779", "level": "note", "message": {"text": "Very large file: crates/buzz-db/src/lib.rs (6105 lines)"}, "properties": {"repobilityId": "414c0e9052047364", "scanner": "scanner-primary", "fingerprint": "8fa37700007e6779", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-22ece692844ba312", "level": "note", "message": {"text": "Very large file: crates/buzz-db/src/push.rs (2387 lines)"}, "properties": {"repobilityId": "09449b9045a14a25", "scanner": "scanner-primary", "fingerprint": "22ece692844ba312", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7688a93664fb28b1", "level": "note", "message": {"text": "Very large file: crates/buzz-db/src/event.rs (2464 lines)"}, "properties": {"repobilityId": "e83bc3fd01d47f0f", "scanner": "scanner-primary", "fingerprint": "7688a93664fb28b1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-adce3d639de8dbff", "level": "note", "message": {"text": "Very large file: crates/buzz-db/src/migration.rs (1247 lines)"}, "properties": {"repobilityId": "6f68ae2ca9185226", "scanner": "scanner-primary", "fingerprint": "adce3d639de8dbff", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c0b386ce7f6bc43e", "level": "note", "message": {"text": "Very large file: crates/buzz-db/src/workflow.rs (2275 lines)"}, "properties": {"repobilityId": "66a78b501c83655f", "scanner": "scanner-primary", "fingerprint": "c0b386ce7f6bc43e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6906a3c6e7874293", "level": "note", "message": {"text": "Very large file: crates/buzz-db/src/thread.rs (1729 lines)"}, "properties": {"repobilityId": "b3455fdc4dd659c6", "scanner": "scanner-primary", "fingerprint": "6906a3c6e7874293", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f6a5897e8bc06851", "level": "note", "message": {"text": "Very large file: crates/buzz-db/src/channel.rs (1895 lines)"}, "properties": {"repobilityId": "a3e2a3ff62b67ec3", "scanner": "scanner-primary", "fingerprint": "f6a5897e8bc06851", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-83ce5bc10a733b3c", "level": "note", "message": {"text": "Very large file: crates/buzz-sdk/src/builders.rs (3787 lines)"}, "properties": {"repobilityId": "19b884ad4e831170", "scanner": "scanner-primary", "fingerprint": "83ce5bc10a733b3c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b73915bbfedc95a8", "level": "note", "message": {"text": "Very large file: crates/buzz-dev-mcp/src/shell.rs (1346 lines)"}, "properties": {"repobilityId": "7ee8be9c0894cc8f", "scanner": "scanner-primary", "fingerprint": "b73915bbfedc95a8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0613e13a3ef325d7", "level": "note", "message": {"text": "Very large file: crates/buzz-core/src/pairing/session.rs (1315 lines)"}, "properties": {"repobilityId": "93ca32c9d5c6f7ec", "scanner": "scanner-primary", "fingerprint": "0613e13a3ef325d7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-90823e69fb1da2fa", "level": "note", "message": {"text": "Very large file: crates/git-sign-nostr/src/lib.rs (2508 lines)"}, "properties": {"repobilityId": "1253352c3e30f18d", "scanner": "scanner-primary", "fingerprint": "90823e69fb1da2fa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7bd9c0bd9dcf751e", "level": "note", "message": {"text": "Very large file: crates/buzz-acp/src/relay.rs (6206 lines)"}, "properties": {"repobilityId": "05f6adc3ca745e28", "scanner": "scanner-primary", "fingerprint": "7bd9c0bd9dcf751e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-432b498ce8573268", "level": "note", "message": {"text": "Very large file: crates/buzz-acp/src/lib.rs (6009 lines)"}, "properties": {"repobilityId": "480848803c2756a0", "scanner": "scanner-primary", "fingerprint": "432b498ce8573268", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-db644967f12010ed", "level": "note", "message": {"text": "Very large file: crates/buzz-acp/src/acp.rs (3700 lines)"}, "properties": {"repobilityId": "fbdbb98e47fcffd5", "scanner": "scanner-primary", "fingerprint": "db644967f12010ed", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d003f611fdddcf8c", "level": "note", "message": {"text": "Very large file: crates/buzz-acp/src/pool.rs (5575 lines)"}, "properties": {"repobilityId": "4d19afd3a922941c", "scanner": "scanner-primary", "fingerprint": "d003f611fdddcf8c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6f779a6e0bc9eb65", "level": "note", "message": {"text": "Very large file: crates/buzz-acp/src/config.rs (2709 lines)"}, "properties": {"repobilityId": "fd1b9e3c450e8007", "scanner": "scanner-primary", "fingerprint": "6f779a6e0bc9eb65", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1b1bac3da06db8c1", "level": "note", "message": {"text": "Very large file: crates/buzz-acp/src/queue.rs (4759 lines)"}, "properties": {"repobilityId": "a84e4e5e4f3d889e", "scanner": "scanner-primary", "fingerprint": "1b1bac3da06db8c1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-44eeff91a6d1da81", "level": "note", "message": {"text": "Very large file: crates/buzz-test-client/tests/e2e_nostr_interop.rs (1987 lines)"}, "properties": {"repobilityId": "e72216a4e610f075", "scanner": "scanner-primary", "fingerprint": "44eeff91a6d1da81", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-83d47fb467933030", "level": "note", "message": {"text": "Very large file: crates/buzz-test-client/tests/conformance_multitenant.rs (2739 lines)"}, "properties": {"repobilityId": "84b00f31c7a6e4e1", "scanner": "scanner-primary", "fingerprint": "83d47fb467933030", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2df5377043aa4c3d", "level": "note", "message": {"text": "Very large file: crates/buzz-test-client/tests/e2e_relay.rs (2477 lines)"}, "properties": {"repobilityId": "7304337f3baa8b43", "scanner": "scanner-primary", "fingerprint": "2df5377043aa4c3d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b850442258435930", "level": "note", "message": {"text": "Very large file: crates/buzz-cli/src/lib.rs (2020 lines)"}, "properties": {"repobilityId": "a9e4c1d630ae4005", "scanner": "scanner-primary", "fingerprint": "b850442258435930", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-662b3c9237a8ac8e", "level": "note", "message": {"text": "Very large file: crates/buzz-cli/src/client.rs (2477 lines)"}, "properties": {"repobilityId": "793ce7890d9431b6", "scanner": "scanner-primary", "fingerprint": "662b3c9237a8ac8e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a54f25fb3ba592af", "level": "note", "message": {"text": "Very large file: crates/buzz-cli/src/commands/channels.rs (1713 lines)"}, "properties": {"repobilityId": "cbf8e6998dccd2f1", "scanner": "scanner-primary", "fingerprint": "a54f25fb3ba592af", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-720a280bf799af06", "level": "note", "message": {"text": "36 TODO/FIXME markers"}, "properties": {"repobilityId": "4b38c118003e07d2", "scanner": "scanner-primary", "fingerprint": "720a280bf799af06", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["maintenance"]}}, {"ruleId": "scanner-91f3c986dd9dad25", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: desktop/package.json"}, "properties": {"repobilityId": "3c78db4d0798a0f1", "scanner": "scanner-primary", "fingerprint": "91f3c986dd9dad25", "layer": "dependencies", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a99e6074935dc761", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: admin-web/package.json"}, "properties": {"repobilityId": "c37bfb9617bbd51d", "scanner": "scanner-primary", "fingerprint": "a99e6074935dc761", "layer": "dependencies", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "admin-web/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b8d99132ab8d1975", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: web/package.json"}, "properties": {"repobilityId": "dd661d63588916a7", "scanner": "scanner-primary", "fingerprint": "b8d99132ab8d1975", "layer": "dependencies", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "35184f9ab623bd3c", "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": "053779b4ae6437bb", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "51e9ecb826f0f1c6", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "0a30b28599a2c500", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "7529163a055710bd", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-bf612474bc6d3c3b", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 benchmarks/harbor-buzz-orchestra/scripts/run_leaderboard.py:253"}, "properties": {"repobilityId": "d41d0914742b9941", "scanner": "scanner-primary", "fingerprint": "bf612474bc6d3c3b", "layer": "quality", "severity": "medium", "confidence": 0.85, "tags": ["integrity", "fragile-runtime", "robustness"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "benchmarks/harbor-buzz-orchestra/scripts/run_leaderboard.py"}, "region": {"startLine": 253}}}]}, {"ruleId": "scanner-77639910003056e8", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 benchmarks/harbor-buzz-orchestra/scripts/benchmark.py:303"}, "properties": {"repobilityId": "043e770c1c54aec5", "scanner": "scanner-primary", "fingerprint": "77639910003056e8", "layer": "quality", "severity": "medium", "confidence": 0.85, "tags": ["integrity", "fragile-runtime", "robustness"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "benchmarks/harbor-buzz-orchestra/scripts/benchmark.py"}, "region": {"startLine": 303}}}]}, {"ruleId": "scanner-e2f968ca044865d5", "level": "note", "message": {"text": "Legacy-named symbol `reconcile_databricks_v1_to_v2` in desktop/scripts/check-file-sizes.mjs:342"}, "properties": {"repobilityId": "23eba4c7fabd7be2", "scanner": "scanner-primary", "fingerprint": "e2f968ca044865d5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f593ac24e9ff336d", "level": "note", "message": {"text": "Legacy-named symbol `browser_fragment_v1` in desktop/src/shared/deep-link.ts:38"}, "properties": {"repobilityId": "9e297413e0f470fa", "scanner": "scanner-primary", "fingerprint": "f593ac24e9ff336d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0eef80093e5e9f9f", "level": "note", "message": {"text": "Legacy-named symbol `databricks_v2` in desktop/src/shared/api/types.ts:1013"}, "properties": {"repobilityId": "cb286a742c8e64e3", "scanner": "scanner-primary", "fingerprint": "0eef80093e5e9f9f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1c5a1588f30342d8", "level": "note", "message": {"text": "Legacy-named symbol `setup_copy` in desktop/src/shared/ui/config-nudge-attachment.tsx:115"}, "properties": {"repobilityId": "ca1bc9a0e53ef542", "scanner": "scanner-primary", "fingerprint": "1c5a1588f30342d8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f9b7ac11f2d7e2d9", "level": "note", "message": {"text": "Legacy-named symbol `setup_copy` in desktop/src/shared/ui/config-nudge-attachment.test.mjs:85"}, "properties": {"repobilityId": "4c1e6a935b54b99e", "scanner": "scanner-primary", "fingerprint": "f9b7ac11f2d7e2d9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-01232b8ade154b2f", "level": "note", "message": {"text": "Legacy-named symbol `setup_copy` in desktop/src/shared/lib/configNudge.test.mjs:74"}, "properties": {"repobilityId": "546c5899344d00f0", "scanner": "scanner-primary", "fingerprint": "01232b8ade154b2f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0b1407cd7e0e58df", "level": "note", "message": {"text": "Legacy-named symbol `setup_copy` in desktop/src/shared/lib/configNudge.ts:29"}, "properties": {"repobilityId": "26041a1be0108eca", "scanner": "scanner-primary", "fingerprint": "0b1407cd7e0e58df", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-508b67afede4e503", "level": "note", "message": {"text": "Legacy-named symbol `midOld` in desktop/src/features/settings/lib/moderationQueue.test.mjs:105"}, "properties": {"repobilityId": "65c5915a708fa769", "scanner": "scanner-primary", "fingerprint": "508b67afede4e503", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bf235cdad3d8b92c", "level": "note", "message": {"text": "Legacy-named symbol `databricks_v2` in desktop/src/features/agents/ui/createAgentLocalModeGate.test.mjs:300"}, "properties": {"repobilityId": "8badac01eb5a43d9", "scanner": "scanner-primary", "fingerprint": "bf235cdad3d8b92c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7807b29de97a1776", "level": "note", "message": {"text": "Legacy-named symbol `databricks_v2` in desktop/src/features/agents/ui/bakedEnvHelpers.ts:64"}, "properties": {"repobilityId": "5cf20a7ab952cf5d", "scanner": "scanner-primary", "fingerprint": "7807b29de97a1776", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-dd752a1c3d944388", "level": "note", "message": {"text": "Legacy-named symbol `databricks_v2` in desktop/src/features/agents/ui/buzzAgentConfig.test.mjs:412"}, "properties": {"repobilityId": "82e993661f1fd6ca", "scanner": "scanner-primary", "fingerprint": "dd752a1c3d944388", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d08d9601a591639a", "level": "note", "message": {"text": "Legacy-named symbol `databricks_v2` in desktop/src/features/agents/ui/agentConfigOptions.tsx:42"}, "properties": {"repobilityId": "44b1876c735b69b9", "scanner": "scanner-primary", "fingerprint": "d08d9601a591639a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-84984fb6827ed4a4", "level": "note", "message": {"text": "Legacy-named symbol `databricks_v2` in desktop/src/features/agents/ui/editAgentProviderDiscovery.test.mjs:59"}, "properties": {"repobilityId": "6a57906e534fb31a", "scanner": "scanner-primary", "fingerprint": "84984fb6827ed4a4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5a642055e1d195c8", "level": "note", "message": {"text": "Legacy-named symbol `databricks_v2` in desktop/src/features/agents/ui/agentAiConfigurationPolicy.test.mjs:87"}, "properties": {"repobilityId": "28064109a164fd30", "scanner": "scanner-primary", "fingerprint": "5a642055e1d195c8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0e3a7d518e6c8ed9", "level": "note", "message": {"text": "Legacy-named symbol `databricks_v2` in desktop/src/features/agents/ui/buzzAgentConfig.ts:108"}, "properties": {"repobilityId": "d51eaa44aa107117", "scanner": "scanner-primary", "fingerprint": "0e3a7d518e6c8ed9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e95d9aaf34340393", "level": "note", "message": {"text": "Legacy-named symbol `databricks_v2` in desktop/src/features/agents/ui/agentConfigOptions.test.mjs:32"}, "properties": {"repobilityId": "8cc9ea67665aba3c", "scanner": "scanner-primary", "fingerprint": "e95d9aaf34340393", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-154f572595b43695", "level": "note", "message": {"text": "Legacy-named symbol `databricks_v2` in desktop/src/features/agents/ui/EnvVarsEditor.test.mjs:472"}, "properties": {"repobilityId": "55bea8c157fad904", "scanner": "scanner-primary", "fingerprint": "154f572595b43695", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-78dbe389aec42f5f", "level": "note", "message": {"text": "Legacy-named symbol `legacy_migration_second_relay_init_does_not_reimport_deleted_v1` in desktop/src/features/messages/lib/useDrafts.test.mjs:1078"}, "properties": {"repobilityId": "c813e5cad53b70df", "scanner": "scanner-primary", "fingerprint": "78dbe389aec42f5f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-77cff71393c1da6b", "level": "note", "message": {"text": "Legacy-named symbol `browser_fragment_v1` in desktop/src/features/profile/ui/NostrBindConsentDialog.tsx:553"}, "properties": {"repobilityId": "1f3ad5cc7adc0a7f", "scanner": "scanner-primary", "fingerprint": "77cff71393c1da6b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e11864bde8b9e0cf", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 web/src/features/invite/ui/InvitePage.tsx:69"}, "properties": {"repobilityId": "de62920fdcf80413", "scanner": "scanner-primary", "fingerprint": "e11864bde8b9e0cf", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/src/features/invite/ui/InvitePage.tsx"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-5fa5af25316da646", "level": "note", "message": {"text": "16 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "e0919a3f6a45e8c2", "scanner": "scanner-primary", "fingerprint": "5fa5af25316da646", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-696376f442412a4e", "level": "warning", "message": {"text": "Vulnerable dependency opentelemetry_sdk 0.31.0: GHSA-w9wp-h8wv-79jx"}, "properties": {"repobilityId": "4dba62fc432f03d5", "scanner": "scanner-primary", "fingerprint": "696376f442412a4e", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-w9wp-h8wv-79jx"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Cargo.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-41f3c11e0777104b", "level": "warning", "message": {"text": "Vulnerable dependency cmov 0.5.3: GHSA-3rjw-m598-pq24"}, "properties": {"repobilityId": "77c443cdf893e449", "scanner": "scanner-primary", "fingerprint": "41f3c11e0777104b", "layer": "dependencies", "severity": "medium", "confidence": 0.9, "tags": ["dependency", "sca", "osv", "GHSA-3rjw-m598-pq24", "transitive"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Cargo.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ebfcacab2efbbf7f", "level": "note", "message": {"text": "Dependency audioadapter-buffers is a major version behind"}, "properties": {"repobilityId": "8b8cbefeb452eac3", "scanner": "scanner-primary", "fingerprint": "ebfcacab2efbbf7f", "layer": "dependencies", "severity": "low", "confidence": 0.9, "tags": ["dependency", "freshness", "outdated"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "desktop/src-tauri/Cargo.toml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6dfc9e29e71a741d", "level": "warning", "message": {"text": "Dependency evalexpr is two or more major versions behind"}, "properties": {"repobilityId": "2ad98eb8dd747cce", "scanner": "scanner-primary", "fingerprint": "6dfc9e29e71a741d", "layer": "dependencies", "severity": "medium", "confidence": 0.9, "tags": ["dependency", "freshness", "outdated"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "crates/buzz-acp/Cargo.toml"}, "region": {"startLine": 1}}}]}]}]}