{"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-3515f4626dd7c564", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-mollie-flow.ts:238", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-mollie-flow.ts:238"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7ce305b6641b0ec4", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-license-activate.ts:100", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-license-activate.ts:100"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9d47dea7cfe86a72", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-db.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-db.ts:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f18c6f34a3a51921", "name": "Stray `console.log` in TS/JS \u2014 scripts/create-pi-agent.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-pi-agent.ts:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0fb5ff415c0f9424", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-license-status.ts:105", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-license-status.ts:105"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1f3724879167be04", "name": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-dummy-data.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-dummy-data.ts:57"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a30b493c8fc640c8", "name": "Stray `console.log` in TS/JS \u2014 scripts/apply-0002.ts:126", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-0002.ts:126"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-98d94bf7b765643a", "name": "Stray `console.log` in TS/JS \u2014 scripts/send-org-email-previews.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/send-org-email-previews.ts:45"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e662049508f1a851", "name": "Stray `console.log` in TS/JS \u2014 scripts/apply-0020.ts:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-0020.ts:82"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b5c7ae6be155fd75", "name": "Stray `console.log` in TS/JS \u2014 scripts/import-agency-prospects.ts:110", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-agency-prospects.ts:110"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ba5c6205d0c3696b", "name": "Stray `console.log` in TS/JS \u2014 scripts/create-am-roy.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-am-roy.ts:29"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c689861593ee6723", "name": "Stray `console.log` in TS/JS \u2014 scripts/render-tov.ts:303", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/render-tov.ts:303"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7421550c0057e7dc", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-crm-static-columns.ts:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-crm-static-columns.ts:75"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8396311078751c82", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-webhook-live.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-webhook-live.ts:26"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e536af1bdbf2bead", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-webhook-roundtrip.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-webhook-roundtrip.ts:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-de2bd38e8799a397", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-pricing-tiers.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-pricing-tiers.ts:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1ce9033acc18dbf3", "name": "Stray `console.log` in TS/JS \u2014 scripts/grant-lifetime-team.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/grant-lifetime-team.ts:30"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d984a0e06b8d5b2c", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-resend-live.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-resend-live.ts:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0e7bb847721279a7", "name": "Stray `console.log` in TS/JS \u2014 scripts/send-template-previews.ts:168", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/send-template-previews.ts:168"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8034cc810d81bf9c", "name": "Stray `console.log` in TS/JS \u2014 scripts/send-affiliate-email-previews.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/send-affiliate-email-previews.ts:25"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3345bec773a66c00", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-subscription-flow.ts:118", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-subscription-flow.ts:118"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5dfc9a685029e13c", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-org-seats-live.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-org-seats-live.ts:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cecfaf56fd18740b", "name": "Stray `console.log` in TS/JS \u2014 scripts/import-partner-orgs.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-partner-orgs.ts:56"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4595d1516622e5ef", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-admin-data.ts:116", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-admin-data.ts:116"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-feefc63cf4e89d6d", "name": "Stray `console.log` in TS/JS \u2014 scripts/apply-0001.ts:77", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-0001.ts:77"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ef92e0dec3754dac", "name": "Stray `console.log` in TS/JS \u2014 scripts/apply-0004.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-0004.ts:17"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f7b986ed9944553c", "name": "Stray `console.log` in TS/JS \u2014 scripts/upload-parakeet.ts:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/upload-parakeet.ts:28"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b6cc1f3bf834668f", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-cron-reminders.ts:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-cron-reminders.ts:92"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ddc84305701f3516", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-resend-webhook.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-resend-webhook.ts:46"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c8a083cc44e5b22b", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-affiliate-rules.ts:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-affiliate-rules.ts:28"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7d9deac0e3a00669", "name": "Stray `console.log` in TS/JS \u2014 scripts/apply-0003.ts:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-0003.ts:91"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-66fa21892593db79", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-email-log.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-email-log.ts:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1b5ea0f77d4081a7", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-plans.ts:122", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-plans.ts:122"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb5555c82aa76d22", "name": "Stray `console.log` in TS/JS \u2014 scripts/set-am-roy-password.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/set-am-roy-password.ts:27"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ec434841cb4d6db", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-affiliate-live.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-affiliate-live.ts:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3691903d210c1ffc", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-test-license.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-test-license.ts:53"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4cc7318262b75e08", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-trial-flow.ts:59", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-trial-flow.ts:59"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-849aa9bf4460493a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/account/hulp/[categorie]/[artikel]/page.tsx:70", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/account/hulp/[categorie]/[artikel]/page.tsx:70"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2be80e3265ba7745", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/open-tasks-widget.tsx:174", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/open-tasks-widget.tsx:174"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ea7837169b433395", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/my-activity-widget.tsx:88", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/my-activity-widget.tsx:88"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f26425440ef0db81", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/page.tsx:398", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/page.tsx:398"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0958b70a9957dd31", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/support/support-search.tsx:95", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/support/support-search.tsx:95"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-90928fadbdadcb3a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/users/users-client.tsx:283", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/users/users-client.tsx:283"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ff37d9e3ef793ae6", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/pi/pi-console.tsx:86", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/pi/pi-console.tsx:86"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5709d55fb9402ece", "name": "Icon-only button without accessible name \u2014 src/app/admin/emails/emails-view.tsx:367", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/admin/emails/emails-view.tsx:367"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f2cc73dfbc680d5b", "name": "Icon-only button without accessible name \u2014 src/app/admin/messages/messages-client.tsx:269", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/admin/messages/messages-client.tsx:269"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ecb2d95afb43781f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/settings/page.tsx:269", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/settings/page.tsx:269"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e1b097475f287bf9", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/analytics/page.tsx:610", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/analytics/page.tsx:610"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f93f2e1f7a4ba78a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/content/content-client.tsx:371", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/content/content-client.tsx:371"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-827c107e71ee1c11", "name": "Icon-only button without accessible name \u2014 src/app/admin/crm/crm-view.tsx:2038", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/admin/crm/crm-view.tsx:2038"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0f4cc50b53bacce7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/crm/crm-view.tsx:1098", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/crm/crm-view.tsx:1098"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a6ae320cf5db8e8f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/crm/csv-import-modal.tsx:311", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/crm/csv-import-modal.tsx:311"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3e9689ef1bab6461", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/crm/add-prospect-modal.tsx:562", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/crm/add-prospect-modal.tsx:562"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b546e623b8cccb63", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/crm/kanban-view.tsx:136", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/crm/kanban-view.tsx:136"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fac973321c1067f3", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/crm/[userId]/customer-detail-view.tsx:285", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/crm/[userId]/customer-detail-view.tsx:285"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bc6b14ee0ba8196b", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/crm/[userId]/support-actions.tsx:404", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/crm/[userId]/support-actions.tsx:404"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4edc47a3668ceb6f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/crm/organizations/organizations-view.tsx:825", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/crm/organizations/organizations-view.tsx:825"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-46d109278e47a013", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/crm/organizations/org-side-panel.tsx:253", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/crm/organizations/org-side-panel.tsx:253"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-df5a9eb3de65f8a3", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/wispr-flow-alternatief/page.tsx:198", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/wispr-flow-alternatief/page.tsx:198"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bacc5e4a2ccd96fa", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(marketing)/kennisbank/[categorie]/[artikel]/page.tsx:71", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(marketing)/kennisbank/[categorie]/[artikel]/page.tsx:71"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-14e0011663437a84", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(marketing)/zakelijk/page.tsx:166", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(marketing)/zakelijk/page.tsx:166"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cb81a977d2f833d7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(marketing)/product/ai-tools/page.tsx:114", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(marketing)/product/ai-tools/page.tsx:114"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-19940deb0a22cfb7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/admin-sidebar.tsx:153", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/admin-sidebar.tsx:153"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-59c21f8da0535694", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/DedupAlert.tsx:100", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/DedupAlert.tsx:100"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e59fa022f1c3c794", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/marketing/sections/works-anywhere.tsx:77", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/marketing/sections/works-anywhere.tsx:77"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d09757f03bb56384", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/marketing/sections/how-it-works.tsx:92", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/marketing/sections/how-it-works.tsx:92"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7a1ca5c6e651870b", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/analytics/GoogleAnalytics.tsx:25", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/analytics/GoogleAnalytics.tsx:25"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0a48e75d45cd7fc6", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ui/chart.tsx:95", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ui/chart.tsx:95"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-091b77edbfece8a9", "name": "Possible secret in scripts/set-am-roy-password.ts", "shortDescription": {"text": "Possible secret in scripts/set-am-roy-password.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-472c3ff291fb5d8b", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/wispr-flow-alternatief/page.tsx:198", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/wispr-flow-alternatief/page.tsx:198"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fc806afba25f70b5", "name": "Possible secret in src/app/(marketing)/download/page.tsx", "shortDescription": {"text": "Possible secret in src/app/(marketing)/download/page.tsx"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-a6b318dc018b6a8b", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/analytics/GoogleAnalytics.tsx:25", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/analytics/GoogleAnalytics.tsx:25"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f36756e4816e3f59", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/ui/chart.tsx:95", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/ui/chart.tsx:95"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-958a789f77b36393", "name": "Very large file: src/app/admin/crm/crm-view.tsx (4361 lines)", "shortDescription": {"text": "Very large file: src/app/admin/crm/crm-view.tsx (4361 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-6359d477a11b6e45", "name": "Very large file: src/app/admin/crm/organizations/org-side-panel.tsx (2884 lines)", "shortDescription": {"text": "Very large file: src/app/admin/crm/organizations/org-side-panel.tsx (2884 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-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "16 test file(s) for 523 source file(s) (ratio 0.03). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "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 193 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 180 placeholder/mock markers across 57 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: ci, tests. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing ci, tests. 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-394b835cbf74f590", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/test-mollie-flow.ts:390", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/test-mollie-flow.ts:390"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2c0b5c70d495d03a", "name": "Commented-code block (6 lines) in scripts/create-pi-agent.ts:4", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/create-pi-agent.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0f7e2f9b15747344", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/test-webhook-live.ts:44", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/test-webhook-live.ts:44"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0768427c040f55d5", "name": "Commented-code block (5 lines) in scripts/test-webhook-roundtrip.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/test-webhook-roundtrip.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-05f9664ccb3617cd", "name": "Commented-code block (5 lines) in scripts/test-pricing-tiers.ts:45", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/test-pricing-tiers.ts:45"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bb0b817826f50f67", "name": "Commented-code block (7 lines) in src/proxy.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in src/proxy.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6f325d4352112fb1", "name": "Commented-code block (6 lines) in src/app/api/cron/monthly-affiliate-payout/route.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/cron/monthly-affiliate-payout/route.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6453a2fb2453d80c", "name": "Commented-code block (5 lines) in src/app/api/cron/expire-pending-orders/route.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/cron/expire-pending-orders/route.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c786722ec7ee26ea", "name": "Legacy-named symbol `cutoffOld` in src/app/api/cron/invite-reminders/route.ts:20", "shortDescription": {"text": "Legacy-named symbol `cutoffOld` in src/app/api/cron/invite-reminders/route.ts:20"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7cf5708b39a329bd", "name": "Commented-code block (9 lines) in src/app/api/mollie/webhook/route.ts:3", "shortDescription": {"text": "Commented-code block (9 lines) in src/app/api/mollie/webhook/route.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8d49fb72ad2ec33e", "name": "Commented-code block (5 lines) in src/app/api/admin/contacts/search/route.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/admin/contacts/search/route.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d350fb30bb844509", "name": "Commented-code block (5 lines) in src/app/api/admin/customers/[id]/payment-link/route.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/admin/customers/[id]/payment-link/route.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2a648fe5dbb4b7df", "name": "Commented-code block (5 lines) in src/app/api/admin/crm/[userId]/upgrade-to-business/route.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/admin/crm/[userId]/upgrade-to-business/route.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f1a33d332e4102c9", "name": "Commented-code block (11 lines) in src/app/api/admin/crm/organizations/[id]/payment-link/route.ts:3", "shortDescription": {"text": "Commented-code block (11 lines) in src/app/api/admin/crm/organizations/[id]/payment-link/route.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-38f30656b59050a6", "name": "Commented-code block (5 lines) in src/app/api/subscriptions/cancel/route.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/subscriptions/cancel/route.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ef729727779823cb", "name": "Commented-code block (6 lines) in src/app/api/partnership/route.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/partnership/route.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c19a2a7edfc5874a", "name": "Commented-code block (5 lines) in src/app/api/organization/invitations/[id]/accept/route.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/organization/invitations/[id]/accept/route.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7006649d9a870c61", "name": "Commented-code block (7 lines) in src/app/api/mcp/[transport]/route.ts:8", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/mcp/[transport]/route.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8374d105071b69cf", "name": "Commented-code block (8 lines) in src/app/api/resend/webhook/route.ts:154", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/api/resend/webhook/route.ts:154"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9bc0046b8ad2ca7c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/account/organization/org-dashboard.tsx:635", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/account/organization/org-dashboard.tsx:635"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-52a70086420ed15e", "name": "Commented-code block (6 lines) in src/app/account/licenses/purchase-banner.tsx:5", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/account/licenses/purchase-banner.tsx:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-099eb90086ab491b", "name": "Commented-code block (5 lines) in src/app/admin/revenue-roadmap.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/admin/revenue-roadmap.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e89757051a99ed71", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/borden/[id]/board-client.tsx:124", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/borden/[id]/board-client.tsx:124"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4550005f34919228", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/pi/pi-console.tsx:33", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/pi/pi-console.tsx:33"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-876ccd2726720a56", "name": "Commented-code block (5 lines) in src/app/admin/taken/taken-view.tsx:5", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/admin/taken/taken-view.tsx:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-68fea9be2366e50f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/orders/refund-button.tsx:32", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/orders/refund-button.tsx:32"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ab4b405e745d7f5e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/orders/fulfill-button.tsx:30", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/orders/fulfill-button.tsx:30"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8eab13b2343bd284", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/organizations/[id]/view.tsx:563", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/organizations/[id]/view.tsx:563"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c95eec24b9119589", "name": "Commented-code block (8 lines) in src/app/admin/organizations/[id]/page.tsx:3", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/admin/organizations/[id]/page.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4a5343d12c81eec1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/messages/messages-client.tsx:82", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/messages/messages-client.tsx:82"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c2469a6e9bc79d85", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/discounts/discounts-client.tsx:103", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/discounts/discounts-client.tsx:103"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0bf10c1e6ba1a9e3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/partners/partner-side-panel.tsx:558", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/partners/partner-side-panel.tsx:558"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2c189458e9132288", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/content/content-client.tsx:167", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/content/content-client.tsx:167"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-03b4b58998616532", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/content/post-panel.tsx:80", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/content/post-panel.tsx:80"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-178b64e7225cd44f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/affiliates/[id]/affiliate-detail-client.tsx:185", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/affiliates/[id]/affiliate-detail-client.tsx:185"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-70cedf177c42ae22", "name": "Commented-code block (7 lines) in src/app/admin/pricing/pricing-calculator.tsx:15", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/admin/pricing/pricing-calculator.tsx:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-525180f7400288dd", "name": "Commented-code block (5 lines) in src/app/admin/crm/crm-view.tsx:195", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/admin/crm/crm-view.tsx:195"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d068c1596d336aeb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/crm/crm-view.tsx:617", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/crm/crm-view.tsx:617"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6d41f72ce1f3aa62", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/crm/csv-import-modal.tsx:168", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/crm/csv-import-modal.tsx:168"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b83f64a7c724456c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/crm/add-prospect-modal.tsx:146", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/crm/add-prospect-modal.tsx:146"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e4ea7e134c37e085", "name": "Commented-code block (6 lines) in src/app/admin/crm/inline-prospect-row.tsx:5", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/admin/crm/inline-prospect-row.tsx:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8ec2b226803d2286", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/crm/inline-prospect-row.tsx:128", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/crm/inline-prospect-row.tsx:128"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-86633dda41b06790", "name": "Commented-code block (5 lines) in src/app/admin/crm/lead-list-campaign-sheet.tsx:5", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/admin/crm/lead-list-campaign-sheet.tsx:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bb04368e0b1fd49b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/crm/organizations/new-org-panel.tsx:92", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/crm/organizations/new-org-panel.tsx:92"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f9a6087460618ebb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/crm/organizations/org-side-panel.tsx:199", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/crm/organizations/org-side-panel.tsx:199"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9b153320d0e08c84", "name": "Commented-code block (5 lines) in src/app/auth/verify-email/page.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/auth/verify-email/page.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e8f96173d2b97867", "name": "Commented-code block (5 lines) in src/app/auth/verify-email/verify-client.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/auth/verify-email/verify-client.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8b043a88a989e1ea", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/auth/verify-email/verify-client.tsx:32", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/auth/verify-email/verify-client.tsx:32"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0d98ba9c045828fd", "name": "Commented-code block (5 lines) in src/app/(marketing)/[slug]/page.tsx:7", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(marketing)/[slug]/page.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a636d3f513a250e2", "name": "Legacy-named symbol `dicteren_cookie_consent_v1` in src/app/(marketing)/cookies/page.tsx:22", "shortDescription": {"text": "Legacy-named symbol `dicteren_cookie_consent_v1` in src/app/(marketing)/cookies/page.tsx:22"}, "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-b916617095f3dab6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/checkout/buy-button.tsx:43", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/checkout/buy-button.tsx:43"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9586d2b02de61341", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/DedupAlert.tsx:168", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/DedupAlert.tsx:168"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fcaa3db998494a3a", "name": "Commented-code block (7 lines) in src/components/analytics/GoogleAnalytics.tsx:3", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/analytics/GoogleAnalytics.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-07adcc5f09b08602", "name": "Commented-code block (7 lines) in src/lib/types/index.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/types/index.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-032a9a816d436ce5", "name": "Commented-code block (10 lines) in src/lib/auth/server.ts:10", "shortDescription": {"text": "Commented-code block (10 lines) in src/lib/auth/server.ts:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d3f587814ed176af", "name": "Commented-code block (6 lines) in src/lib/db/auth-schema.ts:214", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/db/auth-schema.ts:214"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8c713856eb115e14", "name": "Commented-code block (11 lines) in src/lib/db/schema/index.ts:6", "shortDescription": {"text": "Commented-code block (11 lines) in src/lib/db/schema/index.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4ded427109b2f94e", "name": "Commented-code block (6 lines) in src/lib/db/schema/crmDeals.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/db/schema/crmDeals.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b5aa8b40f56eddf5", "name": "Commented-code block (5 lines) in src/lib/db/schema/agentRuns.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/db/schema/agentRuns.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6dd8f92590cde300", "name": "Commented-code block (5 lines) in src/lib/db/schema/content.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/db/schema/content.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-98da7c561579ba3c", "name": "Commented-code block (11 lines) in src/lib/services/orderUpgrade.ts:5", "shortDescription": {"text": "Commented-code block (11 lines) in src/lib/services/orderUpgrade.ts:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-810ccca8085817d7", "name": "Commented-code block (5 lines) in src/lib/services/orgSeats.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/services/orgSeats.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f5135b654969a4aa", "name": "Commented-code block (6 lines) in src/lib/services/partner.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/services/partner.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4898f2af2f73aac4", "name": "Commented-code block (6 lines) in src/lib/services/mcpAgent.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/services/mcpAgent.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-223e25ff4d7348e9", "name": "Commented-code block (5 lines) in src/lib/services/revenueTimeline.ts:8", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/services/revenueTimeline.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fe52787585cf7edf", "name": "Commented-code block (5 lines) in src/lib/services/order.ts:191", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/services/order.ts:191"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6f5caa4686d98ced", "name": "Commented-code block (5 lines) in src/lib/services/columnPrefs.ts:39", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/services/columnPrefs.ts:39"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-366ce2ef98d0ee75", "name": "Commented-code block (5 lines) in src/lib/services/affiliateSlug.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/services/affiliateSlug.ts:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f69ab3246ac4cfef", "name": "Commented-code block (5 lines) in src/lib/services/crmPeople.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/services/crmPeople.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f62691588fb2ed53", "name": "Commented-code block (6 lines) in src/lib/services/pricingTiers.ts:6", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/services/pricingTiers.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1ad076d413b83a81", "name": "Commented-code block (5 lines) in src/lib/services/mollie.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/services/mollie.ts:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7415799a9b52663b", "name": "Commented-code block (6 lines) in src/lib/services/account.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/services/account.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-79be78fc7d253f60", "name": "Commented-code block (5 lines) in src/lib/services/discount.ts:148", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/services/discount.ts:148"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bc76de8d12158a1b", "name": "Commented-code block (5 lines) in src/lib/services/adminUsers.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/services/adminUsers.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1b1fd17ce5abfd0b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/services/pdok.ts:65", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/services/pdok.ts:65"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ef451eddad2582cb", "name": "Commented-code block (5 lines) in src/lib/config/crmActivity.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/config/crmActivity.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/24951"}, "properties": {"repository": "chris-co-creators-ai/dicteren.ai", "repoUrl": "https://github.com/chris-co-creators-ai/dicteren.ai", "branch": "main"}, "results": [{"ruleId": "scanner-3515f4626dd7c564", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-mollie-flow.ts:238"}, "properties": {"repobilityId": "26dcc7114977bd8f", "scanner": "scanner-primary", "fingerprint": "3515f4626dd7c564", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7ce305b6641b0ec4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-license-activate.ts:100"}, "properties": {"repobilityId": "02d2b9755d6338f8", "scanner": "scanner-primary", "fingerprint": "7ce305b6641b0ec4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9d47dea7cfe86a72", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-db.ts:23"}, "properties": {"repobilityId": "a80b31362908c14f", "scanner": "scanner-primary", "fingerprint": "9d47dea7cfe86a72", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f18c6f34a3a51921", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-pi-agent.ts:36"}, "properties": {"repobilityId": "b564d7eb16ee3699", "scanner": "scanner-primary", "fingerprint": "f18c6f34a3a51921", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0fb5ff415c0f9424", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-license-status.ts:105"}, "properties": {"repobilityId": "44d7ecd5b3c1f66d", "scanner": "scanner-primary", "fingerprint": "0fb5ff415c0f9424", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1f3724879167be04", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-dummy-data.ts:57"}, "properties": {"repobilityId": "cfb8faf118d4a54d", "scanner": "scanner-primary", "fingerprint": "1f3724879167be04", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a30b493c8fc640c8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-0002.ts:126"}, "properties": {"repobilityId": "029e20103adf45c4", "scanner": "scanner-primary", "fingerprint": "a30b493c8fc640c8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-98d94bf7b765643a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/send-org-email-previews.ts:45"}, "properties": {"repobilityId": "3d666057dcc2cd15", "scanner": "scanner-primary", "fingerprint": "98d94bf7b765643a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e662049508f1a851", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-0020.ts:82"}, "properties": {"repobilityId": "99868301971f88ca", "scanner": "scanner-primary", "fingerprint": "e662049508f1a851", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b5c7ae6be155fd75", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-agency-prospects.ts:110"}, "properties": {"repobilityId": "a57688b5d5c18763", "scanner": "scanner-primary", "fingerprint": "b5c7ae6be155fd75", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ba5c6205d0c3696b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-am-roy.ts:29"}, "properties": {"repobilityId": "a66403bd1a94b548", "scanner": "scanner-primary", "fingerprint": "ba5c6205d0c3696b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c689861593ee6723", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/render-tov.ts:303"}, "properties": {"repobilityId": "80e3d8e644362d20", "scanner": "scanner-primary", "fingerprint": "c689861593ee6723", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7421550c0057e7dc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-crm-static-columns.ts:75"}, "properties": {"repobilityId": "9dd936c8f4d1c94a", "scanner": "scanner-primary", "fingerprint": "7421550c0057e7dc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8396311078751c82", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-webhook-live.ts:26"}, "properties": {"repobilityId": "e28fe76f55c881b0", "scanner": "scanner-primary", "fingerprint": "8396311078751c82", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e536af1bdbf2bead", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-webhook-roundtrip.ts:23"}, "properties": {"repobilityId": "4c86cdb846cf0c14", "scanner": "scanner-primary", "fingerprint": "e536af1bdbf2bead", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de2bd38e8799a397", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-pricing-tiers.ts:23"}, "properties": {"repobilityId": "16952e324297973c", "scanner": "scanner-primary", "fingerprint": "de2bd38e8799a397", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1ce9033acc18dbf3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/grant-lifetime-team.ts:30"}, "properties": {"repobilityId": "97b344f4d5646bec", "scanner": "scanner-primary", "fingerprint": "1ce9033acc18dbf3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d984a0e06b8d5b2c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-resend-live.ts:39"}, "properties": {"repobilityId": "b4bd7c259e863b9d", "scanner": "scanner-primary", "fingerprint": "d984a0e06b8d5b2c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0e7bb847721279a7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/send-template-previews.ts:168"}, "properties": {"repobilityId": "dafbd0d8ec704d2f", "scanner": "scanner-primary", "fingerprint": "0e7bb847721279a7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8034cc810d81bf9c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/send-affiliate-email-previews.ts:25"}, "properties": {"repobilityId": "d18c58dc2122b513", "scanner": "scanner-primary", "fingerprint": "8034cc810d81bf9c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3345bec773a66c00", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-subscription-flow.ts:118"}, "properties": {"repobilityId": "3b23ca4a49618164", "scanner": "scanner-primary", "fingerprint": "3345bec773a66c00", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5dfc9a685029e13c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-org-seats-live.ts:35"}, "properties": {"repobilityId": "645b3661b122dfb8", "scanner": "scanner-primary", "fingerprint": "5dfc9a685029e13c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cecfaf56fd18740b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-partner-orgs.ts:56"}, "properties": {"repobilityId": "3d5347b2ce9bec69", "scanner": "scanner-primary", "fingerprint": "cecfaf56fd18740b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4595d1516622e5ef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-admin-data.ts:116"}, "properties": {"repobilityId": "93101aeb0164ad94", "scanner": "scanner-primary", "fingerprint": "4595d1516622e5ef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-feefc63cf4e89d6d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-0001.ts:77"}, "properties": {"repobilityId": "f721920e725005a4", "scanner": "scanner-primary", "fingerprint": "feefc63cf4e89d6d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ef92e0dec3754dac", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-0004.ts:17"}, "properties": {"repobilityId": "930a7464be69964e", "scanner": "scanner-primary", "fingerprint": "ef92e0dec3754dac", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f7b986ed9944553c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/upload-parakeet.ts:28"}, "properties": {"repobilityId": "e58a15d75944d3c6", "scanner": "scanner-primary", "fingerprint": "f7b986ed9944553c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b6cc1f3bf834668f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-cron-reminders.ts:92"}, "properties": {"repobilityId": "766b4cf0c2e44517", "scanner": "scanner-primary", "fingerprint": "b6cc1f3bf834668f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ddc84305701f3516", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-resend-webhook.ts:46"}, "properties": {"repobilityId": "9326932d1b99f824", "scanner": "scanner-primary", "fingerprint": "ddc84305701f3516", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c8a083cc44e5b22b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-affiliate-rules.ts:28"}, "properties": {"repobilityId": "49500687e5d46f60", "scanner": "scanner-primary", "fingerprint": "c8a083cc44e5b22b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7d9deac0e3a00669", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-0003.ts:91"}, "properties": {"repobilityId": "50b313ba72c2f1e2", "scanner": "scanner-primary", "fingerprint": "7d9deac0e3a00669", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-66fa21892593db79", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-email-log.ts:33"}, "properties": {"repobilityId": "d5c407dd84c6b25d", "scanner": "scanner-primary", "fingerprint": "66fa21892593db79", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1b5ea0f77d4081a7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-plans.ts:122"}, "properties": {"repobilityId": "cf072bfbc5547a5f", "scanner": "scanner-primary", "fingerprint": "1b5ea0f77d4081a7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb5555c82aa76d22", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/set-am-roy-password.ts:27"}, "properties": {"repobilityId": "aae21ced6b30db1d", "scanner": "scanner-primary", "fingerprint": "cb5555c82aa76d22", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3ec434841cb4d6db", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-affiliate-live.ts:42"}, "properties": {"repobilityId": "bfe21a78a5aafbb9", "scanner": "scanner-primary", "fingerprint": "3ec434841cb4d6db", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3691903d210c1ffc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-test-license.ts:53"}, "properties": {"repobilityId": "90a1c4be1192aa29", "scanner": "scanner-primary", "fingerprint": "3691903d210c1ffc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4cc7318262b75e08", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-trial-flow.ts:59"}, "properties": {"repobilityId": "0b1086acacb54d67", "scanner": "scanner-primary", "fingerprint": "4cc7318262b75e08", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-849aa9bf4460493a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/account/hulp/[categorie]/[artikel]/page.tsx:70"}, "properties": {"repobilityId": "696fbdbdda4133f2", "scanner": "scanner-primary", "fingerprint": "849aa9bf4460493a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2be80e3265ba7745", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/open-tasks-widget.tsx:174"}, "properties": {"repobilityId": "a28d1e88316709f1", "scanner": "scanner-primary", "fingerprint": "2be80e3265ba7745", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ea7837169b433395", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/my-activity-widget.tsx:88"}, "properties": {"repobilityId": "4e0d3a0b728c0637", "scanner": "scanner-primary", "fingerprint": "ea7837169b433395", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f26425440ef0db81", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/page.tsx:398"}, "properties": {"repobilityId": "8d313b2589100140", "scanner": "scanner-primary", "fingerprint": "f26425440ef0db81", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0958b70a9957dd31", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/support/support-search.tsx:95"}, "properties": {"repobilityId": "114a88e0804391ca", "scanner": "scanner-primary", "fingerprint": "0958b70a9957dd31", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-90928fadbdadcb3a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/users/users-client.tsx:283"}, "properties": {"repobilityId": "5c9f9794d02dc8cb", "scanner": "scanner-primary", "fingerprint": "90928fadbdadcb3a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ff37d9e3ef793ae6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/pi/pi-console.tsx:86"}, "properties": {"repobilityId": "afc9bec49baad703", "scanner": "scanner-primary", "fingerprint": "ff37d9e3ef793ae6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5709d55fb9402ece", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/admin/emails/emails-view.tsx:367"}, "properties": {"repobilityId": "2eb849c0868a4fb2", "scanner": "scanner-primary", "fingerprint": "5709d55fb9402ece", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-f2cc73dfbc680d5b", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/admin/messages/messages-client.tsx:269"}, "properties": {"repobilityId": "53571ef6d4fdb5a1", "scanner": "scanner-primary", "fingerprint": "f2cc73dfbc680d5b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-ecb2d95afb43781f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/settings/page.tsx:269"}, "properties": {"repobilityId": "84039c68432f8b90", "scanner": "scanner-primary", "fingerprint": "ecb2d95afb43781f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e1b097475f287bf9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/analytics/page.tsx:610"}, "properties": {"repobilityId": "5939d47e340e9f68", "scanner": "scanner-primary", "fingerprint": "e1b097475f287bf9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f93f2e1f7a4ba78a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/content/content-client.tsx:371"}, "properties": {"repobilityId": "68d1b8d62f25277e", "scanner": "scanner-primary", "fingerprint": "f93f2e1f7a4ba78a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-827c107e71ee1c11", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/admin/crm/crm-view.tsx:2038"}, "properties": {"repobilityId": "6992a5cfab808183", "scanner": "scanner-primary", "fingerprint": "827c107e71ee1c11", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-0f4cc50b53bacce7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/crm/crm-view.tsx:1098"}, "properties": {"repobilityId": "a97a479e349f1c77", "scanner": "scanner-primary", "fingerprint": "0f4cc50b53bacce7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a6ae320cf5db8e8f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/crm/csv-import-modal.tsx:311"}, "properties": {"repobilityId": "3ff159568bc1ef48", "scanner": "scanner-primary", "fingerprint": "a6ae320cf5db8e8f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3e9689ef1bab6461", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/crm/add-prospect-modal.tsx:562"}, "properties": {"repobilityId": "8a6036494d2fe2e6", "scanner": "scanner-primary", "fingerprint": "3e9689ef1bab6461", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b546e623b8cccb63", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/crm/kanban-view.tsx:136"}, "properties": {"repobilityId": "8571cdc78b52af1e", "scanner": "scanner-primary", "fingerprint": "b546e623b8cccb63", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fac973321c1067f3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/crm/[userId]/customer-detail-view.tsx:285"}, "properties": {"repobilityId": "80ebd2d7aa35b706", "scanner": "scanner-primary", "fingerprint": "fac973321c1067f3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bc6b14ee0ba8196b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/crm/[userId]/support-actions.tsx:404"}, "properties": {"repobilityId": "9c58549dfcd69bdd", "scanner": "scanner-primary", "fingerprint": "bc6b14ee0ba8196b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4edc47a3668ceb6f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/crm/organizations/organizations-view.tsx:825"}, "properties": {"repobilityId": "9391937ee30dd50d", "scanner": "scanner-primary", "fingerprint": "4edc47a3668ceb6f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-46d109278e47a013", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/crm/organizations/org-side-panel.tsx:253"}, "properties": {"repobilityId": "9dd528fc05f92348", "scanner": "scanner-primary", "fingerprint": "46d109278e47a013", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-df5a9eb3de65f8a3", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/wispr-flow-alternatief/page.tsx:198"}, "properties": {"repobilityId": "bf4bb7280739474d", "scanner": "scanner-primary", "fingerprint": "df5a9eb3de65f8a3", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-bacc5e4a2ccd96fa", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(marketing)/kennisbank/[categorie]/[artikel]/page.tsx:71"}, "properties": {"repobilityId": "f74e2b284c1e7317", "scanner": "scanner-primary", "fingerprint": "bacc5e4a2ccd96fa", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-14e0011663437a84", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(marketing)/zakelijk/page.tsx:166"}, "properties": {"repobilityId": "489a84e04d0e2469", "scanner": "scanner-primary", "fingerprint": "14e0011663437a84", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cb81a977d2f833d7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(marketing)/product/ai-tools/page.tsx:114"}, "properties": {"repobilityId": "a174d68fc284ef28", "scanner": "scanner-primary", "fingerprint": "cb81a977d2f833d7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-19940deb0a22cfb7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/admin-sidebar.tsx:153"}, "properties": {"repobilityId": "a9d747ba36c235da", "scanner": "scanner-primary", "fingerprint": "19940deb0a22cfb7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-59c21f8da0535694", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/DedupAlert.tsx:100"}, "properties": {"repobilityId": "a93b9650db0e6085", "scanner": "scanner-primary", "fingerprint": "59c21f8da0535694", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e59fa022f1c3c794", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/marketing/sections/works-anywhere.tsx:77"}, "properties": {"repobilityId": "970adcf855b2982d", "scanner": "scanner-primary", "fingerprint": "e59fa022f1c3c794", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d09757f03bb56384", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/marketing/sections/how-it-works.tsx:92"}, "properties": {"repobilityId": "1f81e454bcfe083e", "scanner": "scanner-primary", "fingerprint": "d09757f03bb56384", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7a1ca5c6e651870b", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/analytics/GoogleAnalytics.tsx:25"}, "properties": {"repobilityId": "28f838567d494739", "scanner": "scanner-primary", "fingerprint": "7a1ca5c6e651870b", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-0a48e75d45cd7fc6", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ui/chart.tsx:95"}, "properties": {"repobilityId": "b8c68f17a4018107", "scanner": "scanner-primary", "fingerprint": "0a48e75d45cd7fc6", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-091b77edbfece8a9", "level": "error", "message": {"text": "Possible secret in scripts/set-am-roy-password.ts"}, "properties": {"repobilityId": "1b8eb37554c41eaf", "scanner": "scanner-primary", "fingerprint": "091b77edbfece8a9", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/set-am-roy-password.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-472c3ff291fb5d8b", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/wispr-flow-alternatief/page.tsx:198"}, "properties": {"repobilityId": "5e976f746e26a0b0", "scanner": "scanner-primary", "fingerprint": "472c3ff291fb5d8b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(marketing)/wispr-flow-alternatief/page.tsx"}, "region": {"startLine": 198}}}]}, {"ruleId": "scanner-fc806afba25f70b5", "level": "error", "message": {"text": "Possible secret in src/app/(marketing)/download/page.tsx"}, "properties": {"repobilityId": "6ad641677bcbea76", "scanner": "scanner-primary", "fingerprint": "fc806afba25f70b5", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(marketing)/download/page.tsx"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-a6b318dc018b6a8b", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/analytics/GoogleAnalytics.tsx:25"}, "properties": {"repobilityId": "0b69977597e48f1d", "scanner": "scanner-primary", "fingerprint": "a6b318dc018b6a8b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/analytics/GoogleAnalytics.tsx"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-f36756e4816e3f59", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/ui/chart.tsx:95"}, "properties": {"repobilityId": "33f10636e53b4298", "scanner": "scanner-primary", "fingerprint": "f36756e4816e3f59", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/ui/chart.tsx"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-958a789f77b36393", "level": "note", "message": {"text": "Very large file: src/app/admin/crm/crm-view.tsx (4361 lines)"}, "properties": {"repobilityId": "d11aa35afbf4104a", "scanner": "scanner-primary", "fingerprint": "958a789f77b36393", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6359d477a11b6e45", "level": "note", "message": {"text": "Very large file: src/app/admin/crm/organizations/org-side-panel.tsx (2884 lines)"}, "properties": {"repobilityId": "4e365088eae25951", "scanner": "scanner-primary", "fingerprint": "6359d477a11b6e45", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "d7df9980bf09c827", "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": "e3ca9098292e63e6", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "abd4089840b7b43c", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "6a6fcf4299fbf24e", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "b029177bdd18e3f0", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-394b835cbf74f590", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/test-mollie-flow.ts:390"}, "properties": {"repobilityId": "28ebf79fe3b14729", "scanner": "scanner-primary", "fingerprint": "394b835cbf74f590", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2c0b5c70d495d03a", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/create-pi-agent.ts:4"}, "properties": {"repobilityId": "8bf9c15572c7152b", "scanner": "scanner-primary", "fingerprint": "2c0b5c70d495d03a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0f7e2f9b15747344", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/test-webhook-live.ts:44"}, "properties": {"repobilityId": "fd73ac69a5fb4b4a", "scanner": "scanner-primary", "fingerprint": "0f7e2f9b15747344", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0768427c040f55d5", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/test-webhook-roundtrip.ts:3"}, "properties": {"repobilityId": "9ccbdb5c464ee8ca", "scanner": "scanner-primary", "fingerprint": "0768427c040f55d5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-05f9664ccb3617cd", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/test-pricing-tiers.ts:45"}, "properties": {"repobilityId": "3c4abfa01809d62b", "scanner": "scanner-primary", "fingerprint": "05f9664ccb3617cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bb0b817826f50f67", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/proxy.ts:3"}, "properties": {"repobilityId": "60f83d873c02e751", "scanner": "scanner-primary", "fingerprint": "bb0b817826f50f67", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6f325d4352112fb1", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/cron/monthly-affiliate-payout/route.ts:3"}, "properties": {"repobilityId": "44b53f2d0fa94006", "scanner": "scanner-primary", "fingerprint": "6f325d4352112fb1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6453a2fb2453d80c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/cron/expire-pending-orders/route.ts:3"}, "properties": {"repobilityId": "b08030f5b2360e1c", "scanner": "scanner-primary", "fingerprint": "6453a2fb2453d80c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c786722ec7ee26ea", "level": "note", "message": {"text": "Legacy-named symbol `cutoffOld` in src/app/api/cron/invite-reminders/route.ts:20"}, "properties": {"repobilityId": "944a5407539a4b9c", "scanner": "scanner-primary", "fingerprint": "c786722ec7ee26ea", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7cf5708b39a329bd", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/app/api/mollie/webhook/route.ts:3"}, "properties": {"repobilityId": "ad877194ccb1e0ae", "scanner": "scanner-primary", "fingerprint": "7cf5708b39a329bd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d49fb72ad2ec33e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/admin/contacts/search/route.ts:6"}, "properties": {"repobilityId": "72b18ff84d0ae1c3", "scanner": "scanner-primary", "fingerprint": "8d49fb72ad2ec33e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d350fb30bb844509", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/admin/customers/[id]/payment-link/route.ts:3"}, "properties": {"repobilityId": "754df7143b7bdbf0", "scanner": "scanner-primary", "fingerprint": "d350fb30bb844509", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a648fe5dbb4b7df", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/admin/crm/[userId]/upgrade-to-business/route.ts:3"}, "properties": {"repobilityId": "e984ff260d4294f7", "scanner": "scanner-primary", "fingerprint": "2a648fe5dbb4b7df", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f1a33d332e4102c9", "level": "none", "message": {"text": "Commented-code block (11 lines) in src/app/api/admin/crm/organizations/[id]/payment-link/route.ts:3"}, "properties": {"repobilityId": "0e25db4e1c0fb130", "scanner": "scanner-primary", "fingerprint": "f1a33d332e4102c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-38f30656b59050a6", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/subscriptions/cancel/route.ts:3"}, "properties": {"repobilityId": "6f0087045ae29df0", "scanner": "scanner-primary", "fingerprint": "38f30656b59050a6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef729727779823cb", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/partnership/route.ts:3"}, "properties": {"repobilityId": "5068c35b9220237f", "scanner": "scanner-primary", "fingerprint": "ef729727779823cb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c19a2a7edfc5874a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/organization/invitations/[id]/accept/route.ts:3"}, "properties": {"repobilityId": "a84fa14f9a9f03b6", "scanner": "scanner-primary", "fingerprint": "c19a2a7edfc5874a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7006649d9a870c61", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/mcp/[transport]/route.ts:8"}, "properties": {"repobilityId": "3d0b5194bcfc2486", "scanner": "scanner-primary", "fingerprint": "7006649d9a870c61", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8374d105071b69cf", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/api/resend/webhook/route.ts:154"}, "properties": {"repobilityId": "96a46a4640dd9b3d", "scanner": "scanner-primary", "fingerprint": "8374d105071b69cf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9bc0046b8ad2ca7c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/account/organization/org-dashboard.tsx:635"}, "properties": {"repobilityId": "193bd6fd68c9377a", "scanner": "scanner-primary", "fingerprint": "9bc0046b8ad2ca7c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-52a70086420ed15e", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/account/licenses/purchase-banner.tsx:5"}, "properties": {"repobilityId": "50af607936b65d22", "scanner": "scanner-primary", "fingerprint": "52a70086420ed15e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-099eb90086ab491b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/admin/revenue-roadmap.tsx:3"}, "properties": {"repobilityId": "2bfc81a493492f7d", "scanner": "scanner-primary", "fingerprint": "099eb90086ab491b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e89757051a99ed71", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/borden/[id]/board-client.tsx:124"}, "properties": {"repobilityId": "eb5a19c14fb110f6", "scanner": "scanner-primary", "fingerprint": "e89757051a99ed71", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4550005f34919228", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/pi/pi-console.tsx:33"}, "properties": {"repobilityId": "5d0e0ecbe4fdcb74", "scanner": "scanner-primary", "fingerprint": "4550005f34919228", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-876ccd2726720a56", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/admin/taken/taken-view.tsx:5"}, "properties": {"repobilityId": "98b2be5d32dd2832", "scanner": "scanner-primary", "fingerprint": "876ccd2726720a56", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-68fea9be2366e50f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/orders/refund-button.tsx:32"}, "properties": {"repobilityId": "226148a386bbb5d4", "scanner": "scanner-primary", "fingerprint": "68fea9be2366e50f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ab4b405e745d7f5e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/orders/fulfill-button.tsx:30"}, "properties": {"repobilityId": "deb4009831e5f65c", "scanner": "scanner-primary", "fingerprint": "ab4b405e745d7f5e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8eab13b2343bd284", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/organizations/[id]/view.tsx:563"}, "properties": {"repobilityId": "ffc37a4da552219f", "scanner": "scanner-primary", "fingerprint": "8eab13b2343bd284", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c95eec24b9119589", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/admin/organizations/[id]/page.tsx:3"}, "properties": {"repobilityId": "53949321735fca69", "scanner": "scanner-primary", "fingerprint": "c95eec24b9119589", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4a5343d12c81eec1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/messages/messages-client.tsx:82"}, "properties": {"repobilityId": "4735822afc60b9d1", "scanner": "scanner-primary", "fingerprint": "4a5343d12c81eec1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c2469a6e9bc79d85", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/discounts/discounts-client.tsx:103"}, "properties": {"repobilityId": "078e3b662a50cfa9", "scanner": "scanner-primary", "fingerprint": "c2469a6e9bc79d85", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0bf10c1e6ba1a9e3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/partners/partner-side-panel.tsx:558"}, "properties": {"repobilityId": "3361baded6cc0495", "scanner": "scanner-primary", "fingerprint": "0bf10c1e6ba1a9e3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2c189458e9132288", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/content/content-client.tsx:167"}, "properties": {"repobilityId": "e7beacda0da76d43", "scanner": "scanner-primary", "fingerprint": "2c189458e9132288", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-03b4b58998616532", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/content/post-panel.tsx:80"}, "properties": {"repobilityId": "b8ea571a67e0e25f", "scanner": "scanner-primary", "fingerprint": "03b4b58998616532", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-178b64e7225cd44f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/affiliates/[id]/affiliate-detail-client.tsx:185"}, "properties": {"repobilityId": "3ae51b2ad8cb1953", "scanner": "scanner-primary", "fingerprint": "178b64e7225cd44f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-70cedf177c42ae22", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/admin/pricing/pricing-calculator.tsx:15"}, "properties": {"repobilityId": "55119f37e1940d33", "scanner": "scanner-primary", "fingerprint": "70cedf177c42ae22", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-525180f7400288dd", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/admin/crm/crm-view.tsx:195"}, "properties": {"repobilityId": "6859a52fb57ad7e9", "scanner": "scanner-primary", "fingerprint": "525180f7400288dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d068c1596d336aeb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/crm/crm-view.tsx:617"}, "properties": {"repobilityId": "36455946561ebf07", "scanner": "scanner-primary", "fingerprint": "d068c1596d336aeb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6d41f72ce1f3aa62", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/crm/csv-import-modal.tsx:168"}, "properties": {"repobilityId": "ead1d10cb5480aa3", "scanner": "scanner-primary", "fingerprint": "6d41f72ce1f3aa62", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b83f64a7c724456c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/crm/add-prospect-modal.tsx:146"}, "properties": {"repobilityId": "5e9c6836bdd94a24", "scanner": "scanner-primary", "fingerprint": "b83f64a7c724456c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e4ea7e134c37e085", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/admin/crm/inline-prospect-row.tsx:5"}, "properties": {"repobilityId": "d939faec87362e4e", "scanner": "scanner-primary", "fingerprint": "e4ea7e134c37e085", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8ec2b226803d2286", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/crm/inline-prospect-row.tsx:128"}, "properties": {"repobilityId": "856e6a90de4dc8de", "scanner": "scanner-primary", "fingerprint": "8ec2b226803d2286", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-86633dda41b06790", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/admin/crm/lead-list-campaign-sheet.tsx:5"}, "properties": {"repobilityId": "b7dab60bc171db07", "scanner": "scanner-primary", "fingerprint": "86633dda41b06790", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bb04368e0b1fd49b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/crm/organizations/new-org-panel.tsx:92"}, "properties": {"repobilityId": "27234ece98c26a4b", "scanner": "scanner-primary", "fingerprint": "bb04368e0b1fd49b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f9a6087460618ebb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/crm/organizations/org-side-panel.tsx:199"}, "properties": {"repobilityId": "4d92a3b37fbcac96", "scanner": "scanner-primary", "fingerprint": "f9a6087460618ebb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9b153320d0e08c84", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/auth/verify-email/page.tsx:3"}, "properties": {"repobilityId": "b0f70a86d4e673bd", "scanner": "scanner-primary", "fingerprint": "9b153320d0e08c84", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e8f96173d2b97867", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/auth/verify-email/verify-client.tsx:3"}, "properties": {"repobilityId": "25d28553ab36ac75", "scanner": "scanner-primary", "fingerprint": "e8f96173d2b97867", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b043a88a989e1ea", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/auth/verify-email/verify-client.tsx:32"}, "properties": {"repobilityId": "fa879ca1ac526ad0", "scanner": "scanner-primary", "fingerprint": "8b043a88a989e1ea", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0d98ba9c045828fd", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(marketing)/[slug]/page.tsx:7"}, "properties": {"repobilityId": "a2bec04510afb52f", "scanner": "scanner-primary", "fingerprint": "0d98ba9c045828fd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a636d3f513a250e2", "level": "note", "message": {"text": "Legacy-named symbol `dicteren_cookie_consent_v1` in src/app/(marketing)/cookies/page.tsx:22"}, "properties": {"repobilityId": "4d9422739f096c83", "scanner": "scanner-primary", "fingerprint": "a636d3f513a250e2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b916617095f3dab6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/checkout/buy-button.tsx:43"}, "properties": {"repobilityId": "7f80ba88334c8de6", "scanner": "scanner-primary", "fingerprint": "b916617095f3dab6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9586d2b02de61341", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/DedupAlert.tsx:168"}, "properties": {"repobilityId": "b60694a76fe9768e", "scanner": "scanner-primary", "fingerprint": "9586d2b02de61341", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fcaa3db998494a3a", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/analytics/GoogleAnalytics.tsx:3"}, "properties": {"repobilityId": "b236bbdbe51db224", "scanner": "scanner-primary", "fingerprint": "fcaa3db998494a3a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-07adcc5f09b08602", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/types/index.ts:3"}, "properties": {"repobilityId": "37930e9f29b06618", "scanner": "scanner-primary", "fingerprint": "07adcc5f09b08602", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-032a9a816d436ce5", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/lib/auth/server.ts:10"}, "properties": {"repobilityId": "2950b11a125a0f53", "scanner": "scanner-primary", "fingerprint": "032a9a816d436ce5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d3f587814ed176af", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/db/auth-schema.ts:214"}, "properties": {"repobilityId": "582757ddb6ea8865", "scanner": "scanner-primary", "fingerprint": "d3f587814ed176af", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8c713856eb115e14", "level": "none", "message": {"text": "Commented-code block (11 lines) in src/lib/db/schema/index.ts:6"}, "properties": {"repobilityId": "aaf5f2ea9cc7eeed", "scanner": "scanner-primary", "fingerprint": "8c713856eb115e14", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4ded427109b2f94e", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/db/schema/crmDeals.ts:3"}, "properties": {"repobilityId": "7caeea7972d5febb", "scanner": "scanner-primary", "fingerprint": "4ded427109b2f94e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b5aa8b40f56eddf5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/db/schema/agentRuns.ts:3"}, "properties": {"repobilityId": "3dff19ab8249b268", "scanner": "scanner-primary", "fingerprint": "b5aa8b40f56eddf5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6dd8f92590cde300", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/db/schema/content.ts:3"}, "properties": {"repobilityId": "fb3caaa763a71834", "scanner": "scanner-primary", "fingerprint": "6dd8f92590cde300", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-98da7c561579ba3c", "level": "none", "message": {"text": "Commented-code block (11 lines) in src/lib/services/orderUpgrade.ts:5"}, "properties": {"repobilityId": "c2d7af1a15d10303", "scanner": "scanner-primary", "fingerprint": "98da7c561579ba3c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-810ccca8085817d7", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/services/orgSeats.ts:6"}, "properties": {"repobilityId": "2c38d7cd4efb56bd", "scanner": "scanner-primary", "fingerprint": "810ccca8085817d7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f5135b654969a4aa", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/services/partner.ts:1"}, "properties": {"repobilityId": "9ec1096cd764e129", "scanner": "scanner-primary", "fingerprint": "f5135b654969a4aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4898f2af2f73aac4", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/services/mcpAgent.ts:3"}, "properties": {"repobilityId": "51cb16759621ea66", "scanner": "scanner-primary", "fingerprint": "4898f2af2f73aac4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-223e25ff4d7348e9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/services/revenueTimeline.ts:8"}, "properties": {"repobilityId": "f6eac6755be0ea42", "scanner": "scanner-primary", "fingerprint": "223e25ff4d7348e9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fe52787585cf7edf", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/services/order.ts:191"}, "properties": {"repobilityId": "d91d726984c3f159", "scanner": "scanner-primary", "fingerprint": "fe52787585cf7edf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6f5caa4686d98ced", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/services/columnPrefs.ts:39"}, "properties": {"repobilityId": "808112d28a3d5317", "scanner": "scanner-primary", "fingerprint": "6f5caa4686d98ced", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-366ce2ef98d0ee75", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/services/affiliateSlug.ts:5"}, "properties": {"repobilityId": "bfe66e796bdcc3b4", "scanner": "scanner-primary", "fingerprint": "366ce2ef98d0ee75", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f69ab3246ac4cfef", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/services/crmPeople.ts:3"}, "properties": {"repobilityId": "ad167f9571646f17", "scanner": "scanner-primary", "fingerprint": "f69ab3246ac4cfef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f62691588fb2ed53", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/services/pricingTiers.ts:6"}, "properties": {"repobilityId": "87805e6c5532c8f0", "scanner": "scanner-primary", "fingerprint": "f62691588fb2ed53", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ad076d413b83a81", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/services/mollie.ts:5"}, "properties": {"repobilityId": "2237e375a3c6aaf8", "scanner": "scanner-primary", "fingerprint": "1ad076d413b83a81", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7415799a9b52663b", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/services/account.ts:1"}, "properties": {"repobilityId": "28adae255240ed39", "scanner": "scanner-primary", "fingerprint": "7415799a9b52663b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-79be78fc7d253f60", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/services/discount.ts:148"}, "properties": {"repobilityId": "5b489cf77aabd2f0", "scanner": "scanner-primary", "fingerprint": "79be78fc7d253f60", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc76de8d12158a1b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/services/adminUsers.ts:1"}, "properties": {"repobilityId": "47ac23369d7b2325", "scanner": "scanner-primary", "fingerprint": "bc76de8d12158a1b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1b1fd17ce5abfd0b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/services/pdok.ts:65"}, "properties": {"repobilityId": "4c533076d103d3c4", "scanner": "scanner-primary", "fingerprint": "1b1fd17ce5abfd0b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ef451eddad2582cb", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/config/crmActivity.ts:3"}, "properties": {"repobilityId": "bbe961c3342e73fc", "scanner": "scanner-primary", "fingerprint": "ef451eddad2582cb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}]}]}