{"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-0788a4c1752587ab", "name": "Possibly dead Python function: generate_title_slide", "shortDescription": {"text": "Possibly dead Python function: generate_title_slide"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c7e9acd90beb5f20", "name": "Possibly dead Python function: generate_problem_slide", "shortDescription": {"text": "Possibly dead Python function: generate_problem_slide"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-757f65175217bbd4", "name": "Possibly dead Python function: generate_solution_slide", "shortDescription": {"text": "Possibly dead Python function: generate_solution_slide"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eee8242c9a3e670d", "name": "Possibly dead Python function: generate_metrics_slide", "shortDescription": {"text": "Possibly dead Python function: generate_metrics_slide"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7e13f3797d1c93de", "name": "Possibly dead Python function: generate_chart_slide", "shortDescription": {"text": "Possibly dead Python function: generate_chart_slide"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2be8c868587a8cd1", "name": "Possibly dead Python function: generate_testimonial_slide", "shortDescription": {"text": "Possibly dead Python function: generate_testimonial_slide"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0985f566c6f93168", "name": "Possibly dead Python function: generate_cta_slide", "shortDescription": {"text": "Possibly dead Python function: generate_cta_slide"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8b920d353e2c3133", "name": "Possibly dead Python function: call", "shortDescription": {"text": "Possibly dead Python function: call"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a586a43df491f725", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-agents.ts:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-agents.ts:72"}, "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-6534ada632c0bb7b", "name": "Stray `console.log` in TS/JS \u2014 scripts/farid-day.ts:105", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/farid-day.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-a71656d851e25016", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-cost-model.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-cost-model.ts:18"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3d05083db662f1e2", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-mtm.ts:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-mtm.ts:63"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f0754ca25ed9731a", "name": "Stray `console.log` in TS/JS \u2014 scripts/create-invoices-from-pricing.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-invoices-from-pricing.ts:32"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8916868f874093a5", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-planned-amounts.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-planned-amounts.ts:22"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ed0592bb4de5dce4", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-events.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-events.ts:14"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2a82d1ba54fd8231", "name": "Stray `console.log` in TS/JS \u2014 scripts/import-sales-actuals.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-sales-actuals.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-83189ba7c007b083", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-payment-registry.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-payment-registry.ts:19"}, "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-698b28a524fe063a", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-budget-q2-2026.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-budget-q2-2026.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-f313b5aaa3f210a8", "name": "Stray `console.log` in TS/JS \u2014 scripts/convert-heic-uploads.ts:59", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/convert-heic-uploads.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-5a4926b182b23e52", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-v1.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-v1.ts:34"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dbc81b4e2a6fc992", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-matrix.ts:98", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-matrix.ts:98"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9c0d6291408b3bf0", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-pipeline.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-pipeline.ts:18"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c2ef5537698c355e", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-sales-forecast-2026.ts:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-sales-forecast-2026.ts:58"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b32ac9e426b75fa0", "name": "Stray `console.log` in TS/JS \u2014 scripts/populate-plan.ts:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/populate-plan.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-de95c022d1967531", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-expense-structure.ts:69", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-expense-structure.ts:69"}, "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-76fb69031e17885f", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-renewal-alerts.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-renewal-alerts.ts:20"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-485939fad826d2e4", "name": "Stray `console.log` in TS/JS \u2014 scripts/reseed-budget-q2-2026.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reseed-budget-q2-2026.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-e389aaf7c327fa48", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-revenue-plan.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-revenue-plan.ts:47"}, "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-4d440c6c8aac4c22", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-plan-to-quarterly.ts:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-plan-to-quarterly.ts:58"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-df2a243822feeea5", "name": "Stray `console.log` in TS/JS \u2014 scripts/create-superadmin.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-superadmin.ts:31"}, "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-39a5fe4575355e34", "name": "Stray `console.log` in TS/JS \u2014 scripts/add-hints.js:1354", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/add-hints.js:1354"}, "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-472a7e2f8cc7cc6f", "name": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-stale-mtm-agents.ts:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-stale-mtm-agents.ts:55"}, "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-d38d31ca4c26e7a2", "name": "Stray `console.log` in TS/JS \u2014 scripts/farid-edge-cases.ts:59", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/farid-edge-cases.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-15ef59d8efb96f77", "name": "Stray `console.log` in TS/JS \u2014 scripts/import-expense-actuals.ts:112", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-expense-actuals.ts:112"}, "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-db32485227bdfc5e", "name": "Stray `console.log` in TS/JS \u2014 scripts/create-recurring-from-invoices.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-recurring-from-invoices.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-ea1c9fff2edbfe4a", "name": "Stray `console.log` in TS/JS \u2014 scripts/create-invoices-remaining.ts:77", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-invoices-remaining.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-1b17dae5245fd111", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-email-templates.ts:765", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-email-templates.ts:765"}, "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-1c535480bb34db3a", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-event-template.ts:172", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-event-template.ts:172"}, "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-16b3f017458da752", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-service-totals.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-service-totals.ts:13"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-445e8e700a0670d7", "name": "Stray `console.log` in TS/JS \u2014 scripts/create-admin.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-admin.ts:19"}, "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-3b6fddcbc94f55ca", "name": "Stray `console.log` in TS/JS \u2014 scripts/xss-exploit-test.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/xss-exploit-test.js:11"}, "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-13bdb9fe30e00e17", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 scripts/xss-exploit-test.js:4", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 scripts/xss-exploit-test.js:4"}, "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-76fef13458f44f04", "name": "Stray `console.log` in TS/JS \u2014 scripts/import-v1.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-v1.ts:32"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f60de19ba4c8a775", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-pricing-to-db.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-pricing-to-db.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-b20d7dac7691c49f", "name": "Stray `console.log` in TS/JS \u2014 prisma/seed.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed.ts:8"}, "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-3eb7e5a8d07637a9", "name": "Stray `console.log` in TS/JS \u2014 prisma/seed/kanban-demo.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed/kanban-demo.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-2c9a0eb3b54d317a", "name": "Stray `console.log` in TS/JS \u2014 prisma/seed/complaints-demo.ts:137", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed/complaints-demo.ts:137"}, "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-a7e22e39423b84f8", "name": "Stray `console.log` in TS/JS \u2014 telegram-bridge/bot.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 telegram-bridge/bot.js: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-feb242dbd6e0e098", "name": "Stray `console.log` in TS/JS \u2014 public/widget.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 public/widget.js:11"}, "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-17a4b65071395686", "name": "Stray `console.log` in TS/JS \u2014 src/instrumentation.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/instrumentation.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-2bd043c29f5d4087", "name": "TODO/FIXME marker in shipping code \u2014 src/__tests__/board-flow.test.ts:59", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/__tests__/board-flow.test.ts:59"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d0f57349c5d60f85", "name": "TODO/FIXME marker in shipping code \u2014 src/__tests__/api-mtm-photos.test.ts:135", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/__tests__/api-mtm-photos.test.ts:135"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1dbc9597a0a0abda", "name": "TODO/FIXME marker in shipping code \u2014 src/__tests__/board-columns.test.ts:56", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/__tests__/board-columns.test.ts:56"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-242279b431db5ad1", "name": "TODO/FIXME marker in shipping code \u2014 src/__tests__/lib-webhook-url-guard.test.ts:104", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/__tests__/lib-webhook-url-guard.test.ts:104"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-624a9e982daa0869", "name": "Stray `console.log` in TS/JS \u2014 src/__tests__/lib-tenant-pii-encryption.test.ts:228", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/__tests__/lib-tenant-pii-encryption.test.ts:228"}, "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-4c8168876d2218ae", "name": "TODO/FIXME marker in shipping code \u2014 src/__tests__/ai-pii-masker.test.ts:249", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/__tests__/ai-pii-masker.test.ts:249"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bc88422bf26a2769", "name": "Stray `console.log` in TS/JS \u2014 src/__tests__/lib-apex.test.ts:197", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/__tests__/lib-apex.test.ts:197"}, "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-2a3fe3a045ed791c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/color-stat-card.tsx:106", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/color-stat-card.tsx:106"}, "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-dcc13f1cce8df4c0", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/csv-import-dialog.tsx:183", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/csv-import-dialog.tsx:183"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-88b67ebafe5c2c1e", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/expense-forecast-tab.tsx:291", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/expense-forecast-tab.tsx:291"}, "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-74529812207ee3c1", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/lead-detail-modal.tsx:310", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/lead-detail-modal.tsx:310"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-20016ce280a38163", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/sidebar.tsx:389", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/sidebar.tsx:389"}, "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-3ef6160d29481c32", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/campaign-form.tsx:700", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/campaign-form.tsx:700"}, "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-5e58016ab7488f77", "name": "React Flow <Controls> without dark theming \u2014 src/components/campaign-flow-editor.tsx:236", "shortDescription": {"text": "React Flow <Controls> without dark theming \u2014 src/components/campaign-flow-editor.tsx:236"}, "fullDescription": {"text": "`<Controls>` ships with white buttons. Override `.react-flow__controls` and `.react-flow__controls-button` in your stylesheet or pass a styled wrapper.\n\nWhy: P1 in CHECKLIST.md \u2014 vendor defaults bleed light through.\nRule id: fq.controls.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e1f5d3cbf21b082e", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/campaign-flow-editor.tsx:80", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/campaign-flow-editor.tsx:80"}, "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-e20e95351771a893", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/header.tsx:147", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/header.tsx:147"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-97419a82378dd09b", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/file-preview.tsx:45", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/file-preview.tsx:45"}, "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-d50e5c26bc085fb9", "name": "React Flow <Controls> without dark theming \u2014 src/components/journey-flow-editor.tsx:484", "shortDescription": {"text": "React Flow <Controls> without dark theming \u2014 src/components/journey-flow-editor.tsx:484"}, "fullDescription": {"text": "`<Controls>` ships with white buttons. Override `.react-flow__controls` and `.react-flow__controls-button` in your stylesheet or pass a styled wrapper.\n\nWhy: P1 in CHECKLIST.md \u2014 vendor defaults bleed light through.\nRule id: fq.controls.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cc39442252287325", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/journey-flow-editor.tsx:82", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/journey-flow-editor.tsx:82"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a0d3d3dc57abec68", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/email-template-form.tsx:725", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/email-template-form.tsx:725"}, "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-b25cea6c488be8c6", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/lead-item-modal.tsx:564", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/lead-item-modal.tsx:564"}, "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-1573d1fe5d131837", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/incoming-call-popup.tsx:46", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/incoming-call-popup.tsx:46"}, "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-2ffda0c61a51a72e", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/saved-view-bar.tsx:208", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/saved-view-bar.tsx:208"}, "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-f6c353f7350788d2", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/grapes-editor.tsx:474", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/grapes-editor.tsx:474"}, "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-123eb83b1a67387b", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/interaction-timeline.tsx:109", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/interaction-timeline.tsx:109"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9fc13c329d3e6b94", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/user-picker.tsx:183", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/user-picker.tsx:183"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-407bd069df45332d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/notification-bell.tsx:206", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/notification-bell.tsx:206"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a9fc88fd88945914", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/offer-form.tsx:379", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/offer-form.tsx:379"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-64a63db62ab7cbf6", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/mtm/shelf-annotator.tsx:375", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/mtm/shelf-annotator.tsx:375"}, "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-8118a168f5fb7db7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/mtm/shelf-builder.tsx:235", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/mtm/shelf-builder.tsx:235"}, "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-7e18baa92dfa2771", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/leads/leads-analytics.tsx:197", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/leads/leads-analytics.tsx:197"}, "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-b4837b42693fb265", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/projects/project-overview-tab.tsx:104", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/projects/project-overview-tab.tsx:104"}, "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-de042b723be3bb2d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/projects/project-crm-activity-tab.tsx:183", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/projects/project-crm-activity-tab.tsx:183"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a572528e032f3b08", "name": "TODO/FIXME marker in shipping code \u2014 src/components/projects/project-crm-activity-tab.tsx:218", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/components/projects/project-crm-activity-tab.tsx:218"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fae92f6258e98e58", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/events/events-analytics.tsx:277", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/events/events-analytics.tsx:277"}, "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-da0ebf21ee3ccba2", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/ui/searchable-select.tsx:176", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/ui/searchable-select.tsx:176"}, "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-89fb65e00d32f897", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/lead-sources-donut.tsx:58", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/lead-sources-donut.tsx:58"}, "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-632a3de64d0cfa71", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/segments-widget.tsx:106", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/segments-widget.tsx:106"}, "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-fd7091ec047132c4", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/risks-banner.tsx:23", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/risks-banner.tsx:23"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-921d2082f158165c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/sales-pipeline.tsx:39", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/sales-pipeline.tsx:39"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7e32beb3a0a0a249", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/recent-deals.tsx:31", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/recent-deals.tsx:31"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bfd7636e98d8502f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/ai-value-widget.tsx:135", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/ai-value-widget.tsx:135"}, "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-a2a25a449490ec1f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/campaign-stats.tsx:23", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/campaign-stats.tsx:23"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7cf62152dd999274", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/churn-risk-widget.tsx:82", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/churn-risk-widget.tsx:82"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e0180bcb6fce8641", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/activity-feed.tsx:36", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/activity-feed.tsx:36"}, "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-0bcb648bafce063a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/kpi-card.tsx:20", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/kpi-card.tsx:20"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b4c282b6e38cbf53", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/recommended-actions.tsx:126", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/recommended-actions.tsx:126"}, "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-dc1f5ab8c178c2bc", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/ai-lead-scoring.tsx:44", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/ai-lead-scoring.tsx:44"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-51ddab81e8a1bb2d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/upcoming-events.tsx:41", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/upcoming-events.tsx:41"}, "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-1036e2a7613bcedc", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/cpq/deal-combobox.tsx:77", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/cpq/deal-combobox.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-7058ae48c3b8d3e7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/cpq/product-combobox.tsx:80", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/cpq/product-combobox.tsx:80"}, "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-662d7d8ea2619baf", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/finance/finance-dashboard.tsx:236", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/finance/finance-dashboard.tsx:236"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b302d0f79237a0dc", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/finance/payments-dashboard.tsx:168", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/finance/payments-dashboard.tsx:168"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-85bdb65f01944d1b", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/tasks/task-detail-view.tsx:224", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/tasks/task-detail-view.tsx:224"}, "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-d2c2da9f282499d0", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/tasks/inline-tasks-table.tsx:748", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/tasks/inline-tasks-table.tsx:748"}, "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-1a3b63ad7cdcdbef", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/marketing/module-showcase.tsx:97", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/marketing/module-showcase.tsx:97"}, "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-842b1c042aa78431", "name": "\"active\" state uses light bg in a dark theme \u2014 src/components/marketing/module-showcase.tsx:95", "shortDescription": {"text": "\"active\" state uses light bg in a dark theme \u2014 src/components/marketing/module-showcase.tsx:95"}, "fullDescription": {"text": "A ternary like `active ? 'bg-white' : '...'` (or bg-gray-100/200) on a dark theme produces jarring white pills. Use a dark-emphasized active state instead \u2014 border + ring or slightly brighter dark bg. Example: `active ? 'bg-gray-800 border-gray-500 ring-1 ring-blue-500/30' : '\u2026'`.\n\nWhy: P-E in CHECKLIST.md \u2014 light bg in a dark theme is a class of regression.\nRule id: fq.active-light-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7b2fbb2ab08fd651", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/marketing/invoice-preview.tsx:182", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/marketing/invoice-preview.tsx:182"}, "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-7b2bbc68afcf0857", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/marketing/dashboard-preview.tsx:170", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/marketing/dashboard-preview.tsx:170"}, "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-8f962c71707aacea", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/marketing/campaigns-preview.tsx:88", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/marketing/campaigns-preview.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-a9c733b8b895ffe7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/marketing/deal-preview.tsx:162", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/marketing/deal-preview.tsx:162"}, "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-a11cc700d9ccee80", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/marketing/module-previews.tsx:62", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/marketing/module-previews.tsx:62"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d9cacc3b6c7feae6", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/profitability/ai-observations.tsx:170", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/profitability/ai-observations.tsx:170"}, "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-f7045afb0a19c260", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/social/analytics-panel.tsx:165", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/social/analytics-panel.tsx:165"}, "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-489003b086f07db2", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/email-log/email-analytics.tsx:124", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/email-log/email-analytics.tsx:124"}, "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-40e8ca2661fb891c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/campaigns/campaigns-analytics.tsx:77", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/campaigns/campaigns-analytics.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-b94dfaae863e8d8c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/deals/stage-progress.tsx:61", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/deals/stage-progress.tsx:61"}, "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-e98847c4109a92c9", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/deals/deals-analytics.tsx:447", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/deals/deals-analytics.tsx:447"}, "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-4af0a14c6d763b68", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/deals/deal-card.tsx:129", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/deals/deal-card.tsx:129"}, "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-9aae4aa4658362c2", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/deals/deal-sidebar.tsx:136", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/deals/deal-sidebar.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-91cad6d2d6f54a38", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/deals/kanban-board.tsx:101", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/deals/kanban-board.tsx:101"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0978d4ff76891ac5", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/deals/quick-action-bar.tsx:234", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/deals/quick-action-bar.tsx:234"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-843b716dee12c12e", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/deals/next-best-offers.tsx:123", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/deals/next-best-offers.tsx:123"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b3b658169fb55cd9", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/boards/board-reports.tsx:378", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/boards/board-reports.tsx:378"}, "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-c761920be0a8dbe3", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/invoices/invoices-analytics.tsx:405", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/invoices/invoices-analytics.tsx:405"}, "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-386d7fe0e3afb379", "name": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/buyer-accounts/route.ts:110", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/buyer-accounts/route.ts:110"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0a2eef566676feb4", "name": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/subscription-plans/route.ts:103", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/subscription-plans/route.ts:103"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ac141a11246f07fe", "name": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/order-shipments/route.ts:156", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/order-shipments/route.ts:156"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7c31a41834e0c574", "name": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/mtm/promotions/route.ts:80", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/mtm/promotions/route.ts:80"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a89f846defb4a401", "name": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/mtm/promotions/[id]/route.ts:62", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/mtm/promotions/[id]/route.ts:62"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c38cb64a12543eab", "name": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/mtm/mobile/sync/push/route.ts:186", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/mtm/mobile/sync/push/route.ts:186"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-442e802cec2f5f0e", "name": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/mtm/skus/route.ts:40", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/mtm/skus/route.ts:40"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3db08cd54d227c06", "name": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/mtm/skus/import/route.ts:90", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/mtm/skus/import/route.ts:90"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1eb04c1ca3913de7", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/tracking/open/route.ts:100", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/tracking/open/route.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-26041770ff2f9f48", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/events/[id]/participants/route.ts:232", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/events/[id]/participants/route.ts:232"}, "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-ed09c6be8ca9a199", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/events/[id]/confirm-all/route.ts:138", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/events/[id]/confirm-all/route.ts:138"}, "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-b3ee506e297fabc0", "name": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/apps/[id]/install/route.ts:223", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/apps/[id]/install/route.ts:223"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-082b60da5b3823ed", "name": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/trade-promotions/route.ts:129", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/trade-promotions/route.ts:129"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-16fb186260ebf59b", "name": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/platform-events/definitions/route.ts:121", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/platform-events/definitions/route.ts:121"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-646396f582e57989", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/admin/tenants/route.ts:176", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/admin/tenants/route.ts:176"}, "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-0360ca2458e44850", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/admin/tenants/[id]/route.ts:173", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/admin/tenants/[id]/route.ts:173"}, "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-27750ef5c60b1e8e", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/admin/tenants/[id]/clear-demo/route.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/admin/tenants/[id]/clear-demo/route.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-c5553992cafdae05", "name": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/programs/route.ts:117", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/programs/route.ts:117"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cf21d2991198f7c4", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/tickets/[id]/route.ts:322", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/tickets/[id]/route.ts:322"}, "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-e0e7c60493153d13", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/tickets/[id]/comments/route.ts:104", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/tickets/[id]/comments/route.ts:104"}, "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-ae6dbd1ad582b2a4", "name": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/zapier/subscribe/route.ts:105", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/zapier/subscribe/route.ts:105"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4013a88eed2c02b5", "name": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/zapier/samples/[trigger]/route.ts:194", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/zapier/samples/[trigger]/route.ts:194"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6b8321ec3a85cf43", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/calls/webhook/threecx/route.ts:59", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/calls/webhook/threecx/route.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-7caaf250205a66e4", "name": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/donors/route.ts:126", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/donors/route.ts:126"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0659c70398197225", "name": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/storefronts/route.ts:110", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/storefronts/route.ts:110"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-41e03cf11c3cb791", "name": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/named-credentials/route.ts:68", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/named-credentials/route.ts:68"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ed3f940c723b8ddf", "name": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/dunning-attempts/route.ts:58", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/dunning-attempts/route.ts:58"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-318c13e003def068", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/public/events/[id]/register/route.ts:143", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/public/events/[id]/register/route.ts:143"}, "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-6aefaca17c5c9d60", "name": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/donations/route.ts:141", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/donations/route.ts:141"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-01bc5fb0446ea9a9", "name": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/subscriptions/route.ts:181", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/subscriptions/route.ts:181"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6aed01a94d351a38", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/demo-request/route.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/demo-request/route.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-550b040f458dacb0", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/webhooks/sms-inbound/route.ts:77", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/webhooks/sms-inbound/route.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-e611288eca44e765", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/webhooks/telegram/route.ts:77", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/webhooks/telegram/route.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-2240cffb4ef7f4d2", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/webhooks/whatsapp/route.ts:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/webhooks/whatsapp/route.ts:73"}, "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-8500831b35ea9049", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/inbox/route.ts:573", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/inbox/route.ts:573"}, "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-47ecb28698660605", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/forms/[id]/publish/route.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/forms/[id]/publish/route.ts:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9a40cd4f5ed90c2c", "name": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/order-returns/route.ts:295", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/order-returns/route.ts:295"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-530066112696a3e0", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/cron/purge-tenants/route.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/cron/purge-tenants/route.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-7ec6bc3c02179bd5", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/integrations/page.tsx:416", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/integrations/page.tsx:416"}, "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-416a9620b32d3f72", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/task-templates/page.tsx:261", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/task-templates/page.tsx:261"}, "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-be26a1c40c5ae09d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/macros/page.tsx:686", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/macros/page.tsx:686"}, "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-ee0d2afc4d54c3c7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/intake-forms/page.tsx:250", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/intake-forms/page.tsx:250"}, "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-5d414f87fae34527", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/pitch-links/page.tsx:112", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/pitch-links/page.tsx:112"}, "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-639a6c2085040e98", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/approval-rules/page.tsx:319", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/approval-rules/page.tsx:319"}, "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-fbfad9018f7d7e6b", "name": "Icon-only button without accessible name \u2014 src/app/(dashboard)/settings/territories/page.tsx:94", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/(dashboard)/settings/territories/page.tsx:94"}, "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-77e7498f2d59641f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/territories/page.tsx:396", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/territories/page.tsx:396"}, "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-717163a378aa9acd", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/workflows/page.tsx:333", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/workflows/page.tsx:333"}, "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-e19abdf8cab76775", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/channels/page.tsx:207", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/channels/page.tsx:207"}, "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-bc2d4f83518bd335", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/approval-delegates/page.tsx:209", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/approval-delegates/page.tsx:209"}, "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-e3c32e3cb2af8a8c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/journeys/page.tsx:473", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/journeys/page.tsx:473"}, "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-f6b2ce0cf37f869d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/marketplace/page.tsx:214", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/marketplace/page.tsx:214"}, "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-3f42d039216c1605", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/mtm/planogram-checks/page.tsx:196", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/mtm/planogram-checks/page.tsx:196"}, "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-1d8c42ccd159ad74", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/mtm/shelf-analytics/page.tsx:239", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/mtm/shelf-analytics/page.tsx:239"}, "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-d75cbe4a71a17c01", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/mtm/shelf-analytics/[id]/page.tsx:261", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/mtm/shelf-analytics/[id]/page.tsx:261"}, "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-07c57c00d21e6792", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/mtm/activity/page.tsx:155", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/mtm/activity/page.tsx:155"}, "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-3dc79b84b6bb0836", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/mtm/customers/page.tsx:174", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/mtm/customers/page.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-a386ce1b369d6e67", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/mtm/photos/page.tsx:188", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/mtm/photos/page.tsx:188"}, "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-6defc677642c0ce5", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/mtm/reports/page.tsx:170", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/mtm/reports/page.tsx:170"}, "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-4ac1484a2070d982", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/mtm/planograms/page.tsx:215", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/mtm/planograms/page.tsx:215"}, "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-402f709e98d2833d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/mtm/map/page.tsx:334", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/mtm/map/page.tsx:334"}, "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-4d51c79a45a2acfb", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/leads/page.tsx:617", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/leads/page.tsx:617"}, "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-6d347917dbacabdb", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/events/[id]/page.tsx:332", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/events/[id]/page.tsx:332"}, "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-4a3856c340ff78f6", "name": "Stray `console.log` in TS/JS \u2014 src/app/(dashboard)/events/[id]/page.tsx:173", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/(dashboard)/events/[id]/page.tsx:173"}, "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-9d08a9915603b7f6", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/health/[id]/page.tsx:221", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/health/[id]/page.tsx:221"}, "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-0c6b3058b0a6fe11", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/media/[id]/page.tsx:135", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/media/[id]/page.tsx:135"}, "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-e694c188330a2d04", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/knowledge-base/page.tsx:392", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/knowledge-base/page.tsx:392"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4f4293c3787b5722", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(dashboard)/knowledge-base/[id]/page.tsx:136", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(dashboard)/knowledge-base/[id]/page.tsx:136"}, "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-9d446426850ad7cb", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/design-check/page.tsx:216", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/design-check/page.tsx:216"}, "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-b6d915ed5fc340d8", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/loyalty/earn-rules/page.tsx:585", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/loyalty/earn-rules/page.tsx:585"}, "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-34126ff07c7680fa", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/loyalty/dashboard/page.tsx:309", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/loyalty/dashboard/page.tsx:309"}, "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-4e6119075342303d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/loyalty/tiers/page.tsx:436", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/loyalty/tiers/page.tsx:436"}, "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-398a823607b9067b", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/loyalty/accounts/[id]/page.tsx:459", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/loyalty/accounts/[id]/page.tsx:459"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-af94cb1fc941b751", "name": "Icon-only button without accessible name \u2014 src/app/(dashboard)/sequences/page.tsx:157", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/(dashboard)/sequences/page.tsx:157"}, "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-84d6980c7cf8b99c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/sequences/page.tsx:413", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/sequences/page.tsx:413"}, "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-7f3234caceeb8c00", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/insurance/[id]/page.tsx:199", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/insurance/[id]/page.tsx:199"}, "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-60f387ea507fbd0f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/surveys/page.tsx:227", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/surveys/page.tsx:227"}, "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-fe398bcc5f3d3b82", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/tasks/page.tsx:209", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/tasks/page.tsx:209"}, "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-df1ebf0a1164fe54", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/accounts/engagement/page.tsx:232", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/accounts/engagement/page.tsx:232"}, "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-29bd0126469bf388", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/billing/subscriptions/page.tsx:272", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/billing/subscriptions/page.tsx:272"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0e8f3cf8759f246c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/tickets/[id]/page.tsx:511", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/tickets/[id]/page.tsx:511"}, "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-629019f1cd0ceb6e", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/cdp/insights/page.tsx:555", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/cdp/insights/page.tsx:555"}, "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-cd02c1adca151b94", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/cdp/merge-queue/page.tsx:121", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/cdp/merge-queue/page.tsx:121"}, "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-dfd29981b10696fd", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/pages/page.tsx:301", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/pages/page.tsx:301"}, "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-1386426e0e2d2f2d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/forecast/page.tsx:207", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/forecast/page.tsx:207"}, "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-f2c533a5fd4bd92f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/email-log/page.tsx:292", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/email-log/page.tsx:292"}, "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-52b48cb57fb9bb34", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(dashboard)/email-log/page.tsx:331", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(dashboard)/email-log/page.tsx:331"}, "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-6f828e42a8689522", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/energy/[id]/page.tsx:204", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/energy/[id]/page.tsx:204"}, "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-590949ed06e23951", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/campaigns/[id]/page.tsx:123", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/campaigns/[id]/page.tsx:123"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c5593f99a4aacfaf", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/contacts/list/page.tsx:578", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/contacts/list/page.tsx:578"}, "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-947ed0a445196bdc", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/ai-command-center/page.tsx:608", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/ai-command-center/page.tsx:608"}, "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-85c6851b75423a27", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/contracts/page.tsx:1121", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/contracts/page.tsx:1121"}, "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-8345d5d7fb05306d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/contracts/[id]/page.tsx:2438", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/contracts/[id]/page.tsx:2438"}, "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-15f9f00fb3f27066", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/contracts/[id]/editor/page.tsx:504", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/contracts/[id]/editor/page.tsx:504"}, "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-31d55f39cbf1df0e", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/contracts/milestones/page.tsx:288", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/contracts/milestones/page.tsx:288"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e73c0e7d8283d636", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/contracts/templates/page.tsx:1092", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/contracts/templates/page.tsx:1092"}, "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-18cc1d8f1b283142", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/contracts/lifecycle/page.tsx:310", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/contracts/lifecycle/page.tsx:310"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0f61f365ada31f46", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/contracts/request/page.tsx:129", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/contracts/request/page.tsx:129"}, "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-38e058bb57414e39", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/reports/page.tsx:210", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/reports/page.tsx:210"}, "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-15beab81d37cf025", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/reports/builder/page.tsx:928", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/reports/builder/page.tsx:928"}, "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-b6d211f032a73f0e", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/support/entitlements/page.tsx:226", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/support/entitlements/page.tsx:226"}, "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-04edc8eaee928af3", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/support/calendar/page.tsx:347", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/support/calendar/page.tsx:347"}, "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-572e0bd4c346371f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/voip/insights/page.tsx:348", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/voip/insights/page.tsx:348"}, "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-b8aa7e8c2aaddeb0", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/attribution/models/page.tsx:809", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/attribution/models/page.tsx:809"}, "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-f40fb16b39af7311", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/segments/page.tsx:262", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/segments/page.tsx:262"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-af94faca0169d592", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/inbox/page.tsx:800", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/inbox/page.tsx:800"}, "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-4b1c022448ee1ee0", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/inbox/analytics/page.tsx:387", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/inbox/analytics/page.tsx:387"}, "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-d092503692830a99", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/inbox/legacy/page.tsx:466", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/inbox/legacy/page.tsx:466"}, "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-352a0cf35f33a8d7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/inbox/web-chat/page.tsx:295", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/inbox/web-chat/page.tsx:295"}, "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-1e2dc71d47afb888", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/social-monitoring/page.tsx:557", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/social-monitoring/page.tsx:557"}, "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-40a2648ec848e1a2", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/deals/[id]/page.tsx:322", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/deals/[id]/page.tsx:322"}, "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-709a48b55856497a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/forms/page.tsx:107", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/forms/page.tsx:107"}, "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-dfd1ba664ae80bd4", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/boards/page.tsx:74", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/boards/page.tsx:74"}, "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-9cd55bd73060b2a3", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/companies/page.tsx:398", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/companies/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-57d38cb5a951ba89", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/companies/[id]/page.tsx:184", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/companies/[id]/page.tsx:184"}, "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-fa0b5fc07c8a1594", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/invoices/recurring/page.tsx:476", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/invoices/recurring/page.tsx:476"}, "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-0bd37b336daa113f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/invoices/[id]/page.tsx:205", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/invoices/[id]/page.tsx:205"}, "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-168ddc0076aebfa7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/invoices/[id]/edit/page.tsx:341", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/invoices/[id]/edit/page.tsx:341"}, "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-ad9383006e2f34c2", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/invoices/create/page.tsx:571", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/invoices/create/page.tsx:571"}, "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-64e6984e6b6d39ac", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/embed/chat/[key]/embed-chat-client.tsx:314", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/embed/chat/[key]/embed-chat-client.tsx:314"}, "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-e751ca188701e0db", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/portal/knowledge-base/page.tsx:83", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/portal/knowledge-base/page.tsx:83"}, "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-a1e13b72c5499566", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/about/page.tsx:41", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/about/page.tsx:41"}, "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-304a72b624853e9f", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/home/page.tsx:91", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/home/page.tsx:91"}, "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-76e0f5a6b28757eb", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(public)/_custom-domain/page.tsx:199", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(public)/_custom-domain/page.tsx:199"}, "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-9d9e34005411d5a2", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(public)/p/[slug]/page.tsx:87", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(public)/p/[slug]/page.tsx:87"}, "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-e87a77e74ee85889", "name": "Stray `console.log` in TS/JS \u2014 src/lib/email.ts:232", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/email.ts:232"}, "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-3980998db620a1ed", "name": "TODO/FIXME marker in shipping code \u2014 src/lib/ticket-reopen.ts:187", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/lib/ticket-reopen.ts:187"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8cc0802ca13688a2", "name": "Stray `console.log` in TS/JS \u2014 src/lib/journey-engine.ts:200", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/journey-engine.ts:200"}, "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-6729fb6867e56d1b", "name": "Stray `console.log` in TS/JS \u2014 src/lib/cloudflare-dns.ts:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/cloudflare-dns.ts:70"}, "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-b66849b17f8c8932", "name": "TODO/FIXME marker in shipping code \u2014 src/lib/report-engine.ts:216", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/lib/report-engine.ts:216"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f27719fcb2a60d4f", "name": "Stray `console.log` in TS/JS \u2014 src/lib/tenant-provisioning.ts:297", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/tenant-provisioning.ts:297"}, "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-7bd67a1987107a06", "name": "TODO/FIXME marker in shipping code \u2014 src/lib/tax/providers/local.ts:135", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/lib/tax/providers/local.ts:135"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7e93d7bd504961ce", "name": "TODO/FIXME marker in shipping code \u2014 src/lib/ai/prompt-safety.ts:187", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/lib/ai/prompt-safety.ts:187"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-764a68cc74c0a85d", "name": "Stray `console.log` in TS/JS \u2014 src/lib/crypto/tenant-pii-encryption.ts:86", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/crypto/tenant-pii-encryption.ts:86"}, "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-c74c75e71c1d6b9e", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/lib/unified-profile/identity-keys.ts:22", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/lib/unified-profile/identity-keys.ts:22"}, "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-6b0794ae6de46e0b", "name": "TODO/FIXME marker in shipping code \u2014 src/lib/agent/atlas/prompt-builder.ts:161", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/lib/agent/atlas/prompt-builder.ts:161"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-58975e3c525fa131", "name": "Stray `console.log` in TS/JS \u2014 src/lib/finance/telegram-notify.ts:123", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/finance/telegram-notify.ts:123"}, "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-733496372953af71", "name": "TODO/FIXME marker in shipping code \u2014 src/lib/queue/worker.ts:240", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/lib/queue/worker.ts:240"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e0e5304522c7db9e", "name": "Stray `console.log` in TS/JS \u2014 src/lib/queue/worker.ts:263", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/queue/worker.ts:263"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-80839cda6adb11cd", "name": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 src/lib/schema-builder/registry.ts:546", "shortDescription": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 src/lib/schema-builder/registry.ts:546"}, "fullDescription": {"text": "React Flow edge labels render with a white rectangle behind the text by default, which scatters bright boxes across a dark canvas. Either drop the label, or override `.react-flow__edge-textbg` and `.react-flow__edge-text` in your stylesheet.\n\nWhy: P-H in CHECKLIST.md \u2014 vendor edge labels bleed white through a dark canvas.\nRule id: fq.edge-label.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dc8211b27e31d6d5", "name": "Privileged port 15 in use", "shortDescription": {"text": "Privileged port 15 in use"}, "fullDescription": {"text": "Port 15 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f2927c32bcee6a40", "name": "Privileged port 465 in use", "shortDescription": {"text": "Privileged port 465 in use"}, "fullDescription": {"text": "Port 465 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8987d6d1c30c7202", "name": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e118961fa98bcfb9", "name": "Dockerfile runs as root: services/compute/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: services/compute/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-945e062a277ecc00", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8bbdd5df11393ac6", "name": "Possible secret in scripts/seed-mtm.ts", "shortDescription": {"text": "Possible secret in scripts/seed-mtm.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-e1ff86edfc141d67", "name": "Possible secret in scripts/xss-test-02-07-08.mjs", "shortDescription": {"text": "Possible secret in scripts/xss-test-02-07-08.mjs"}, "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-8fb8acc672bc4c13", "name": "Possible secret in scripts/xss-exploit.mjs", "shortDescription": {"text": "Possible secret in scripts/xss-exploit.mjs"}, "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-5aa2355fb06cdec8", "name": "Possible secret in scripts/capture-ai-email.mjs", "shortDescription": {"text": "Possible secret in scripts/capture-ai-email.mjs"}, "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-502302550594812a", "name": "Possible secret in scripts/capture-fixes.mjs", "shortDescription": {"text": "Possible secret in scripts/capture-fixes.mjs"}, "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-e52a616ee982b1df", "name": "Possible secret in scripts/capture-email-portal.mjs", "shortDescription": {"text": "Possible secret in scripts/capture-email-portal.mjs"}, "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-9168a4fd956e98b4", "name": "Insecure pattern 'node_child_process' in scripts/lint-encrypted-columns.mjs:33", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/lint-encrypted-columns.mjs:33"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e715d0c0caa72867", "name": "Possible secret in scripts/farid-edge-cases.ts", "shortDescription": {"text": "Possible secret in scripts/farid-edge-cases.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-4e32350a5a66ac82", "name": "Possible secret in scripts/take-screenshots.mjs", "shortDescription": {"text": "Possible secret in scripts/take-screenshots.mjs"}, "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-9bec3984868bab2b", "name": "Possible secret in scripts/xss-exploit-test.js", "shortDescription": {"text": "Possible secret in scripts/xss-exploit-test.js"}, "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-ca9815076aae1295", "name": "Insecure pattern 'node_child_process' in telegram-bridge/bot.js:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in telegram-bridge/bot.js:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a6e0ccde47b7c0cb", "name": "Insecure pattern 'dangerous_innerhtml' in deliverables/xss_exploitation_queue.json:9", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in deliverables/xss_exploitation_queue.json:9"}, "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-f107f25d5b1ebf5d", "name": "Insecure pattern 'direct_innerhtml_assignment' in deliverables/xss_exploitation_queue.json:57", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in deliverables/xss_exploitation_queue.json:57"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bb98eee61b83e01e", "name": "Insecure pattern 'dangerous_innerhtml' in deliverables/xss_exploitation_queue_temp.json:9", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in deliverables/xss_exploitation_queue_temp.json:9"}, "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-67587d7efb1e874c", "name": "Insecure pattern 'direct_innerhtml_assignment' in deliverables/xss_exploitation_queue_temp.json:57", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in deliverables/xss_exploitation_queue_temp.json:57"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6f91e38326d94f18", "name": "Insecure pattern 'node_child_process' in .claude/skills/brand/scripts/sync-brand-to-tokens.cjs:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/skills/brand/scripts/sync-brand-to-tokens.cjs:14"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c2e85a43f4e6bb36", "name": "Insecure pattern 'direct_innerhtml_assignment' in public/widget.js:71", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/widget.js:71"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-09a8e72b247de7b7", "name": "Insecure pattern 'eval_used' in src/__tests__/lib-apex.test.ts:348", "shortDescription": {"text": "Insecure pattern 'eval_used' in src/__tests__/lib-apex.test.ts:348"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-05b1e91fe52d5f42", "name": "Insecure pattern 'local_storage_auth_token' in src/components/marketing/live-chat.tsx:34", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in src/components/marketing/live-chat.tsx:34"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6a86ac2e66eca1c4", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/profitability/ai-observations.tsx:170", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/profitability/ai-observations.tsx:170"}, "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-6e18db277d362d51", "name": "Insecure pattern 'cors_wildcard' in src/app/api/v1/mtm/mobile/shelf-analytics/[id]/route.ts:68", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in src/app/api/v1/mtm/mobile/shelf-analytics/[id]/route.ts:68"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cfb21a107aba687e", "name": "Insecure pattern 'cors_wildcard' in src/app/api/v1/mtm/mobile/shelf-analytics/analyze/route.ts:548", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in src/app/api/v1/mtm/mobile/shelf-analytics/analyze/route.ts:548"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4e2481a844274cab", "name": "Insecure pattern 'exec_used' in src/app/api/v1/admin/tenants/route.ts:171", "shortDescription": {"text": "Insecure pattern 'exec_used' in src/app/api/v1/admin/tenants/route.ts:171"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-38c8c8a1acf29911", "name": "Insecure pattern 'node_child_process' in src/app/api/v1/admin/tenants/route.ts:12", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/app/api/v1/admin/tenants/route.ts:12"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-281e6d7adf8dd572", "name": "Insecure pattern 'cors_wildcard' in src/app/api/v1/public/leads/route.ts:58", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in src/app/api/v1/public/leads/route.ts:58"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-54f7a3478c404694", "name": "Insecure pattern 'cors_wildcard' in src/app/api/v1/public/form-submit/route.ts:8", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in src/app/api/v1/public/form-submit/route.ts:8"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b781a1628cfbe45a", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/(dashboard)/knowledge-base/[id]/page.tsx:136", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(dashboard)/knowledge-base/[id]/page.tsx:136"}, "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-a28b76670804c618", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/(dashboard)/email-log/page.tsx:331", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(dashboard)/email-log/page.tsx:331"}, "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-e4940a06f6c0c0df", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/portal/knowledge-base/page.tsx:83", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/portal/knowledge-base/page.tsx:83"}, "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-6b6dee4d92c40aa1", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/about/page.tsx:41", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/about/page.tsx:41"}, "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-a992780642aa13e1", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/home/page.tsx:91", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/home/page.tsx:91"}, "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-6e21a7f48ecd5343", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/(public)/_custom-domain/page.tsx:199", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(public)/_custom-domain/page.tsx:199"}, "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-b93a6bee6cd2edad", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/app/(public)/_custom-domain/page.tsx:241", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/app/(public)/_custom-domain/page.tsx:241"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e3bfcde47663c8ff", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/(public)/p/[slug]/page.tsx:87", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(public)/p/[slug]/page.tsx:87"}, "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-aa47801cf61f15f9", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/app/(public)/p/[slug]/page.tsx:129", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/app/(public)/p/[slug]/page.tsx:129"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0f6271f1018698ed", "name": "Insecure pattern 'cors_wildcard' in src/lib/mtm/shelf-scan-response.ts:18", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in src/lib/mtm/shelf-scan-response.ts:18"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e74f294b720edd78", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v6 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-28c4a04bd807da0c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v6 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b3107cf04f90de94", "name": "Very large file: scripts/seed-tenant-demo.mjs (4363 lines)", "shortDescription": {"text": "Very large file: scripts/seed-tenant-demo.mjs (4363 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-d5263ff5866a9f54", "name": "Very large file: scripts/add-hints.js (1357 lines)", "shortDescription": {"text": "Very large file: scripts/add-hints.js (1357 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-7ea3a94d0b3c375d", "name": "Very large file: scripts/seeds/afigroup.mjs (1331 lines)", "shortDescription": {"text": "Very large file: scripts/seeds/afigroup.mjs (1331 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bcccbba53270667b", "name": "Very large file: src/__tests__/api-tasks.test.ts (1636 lines)", "shortDescription": {"text": "Very large file: src/__tests__/api-tasks.test.ts (1636 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-074a0680392f517a", "name": "Very large file: src/__tests__/api-sign-portal.test.ts (1673 lines)", "shortDescription": {"text": "Very large file: src/__tests__/api-sign-portal.test.ts (1673 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-2eb6244dd1a05cdd", "name": "Very large file: src/components/tasks/task-detail-view.tsx (1589 lines)", "shortDescription": {"text": "Very large file: src/components/tasks/task-detail-view.tsx (1589 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-62690a93b9c6e6f2", "name": "Very large file: src/components/tasks/inline-tasks-table.tsx (1993 lines)", "shortDescription": {"text": "Very large file: src/components/tasks/inline-tasks-table.tsx (1993 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-3f12194848fc46df", "name": "Very large file: src/components/marketing/module-showcase.tsx (2330 lines)", "shortDescription": {"text": "Very large file: src/components/marketing/module-showcase.tsx (2330 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-6f7a8fdd72b20e37", "name": "Very large file: src/components/marketing/module-previews.tsx (1316 lines)", "shortDescription": {"text": "Very large file: src/components/marketing/module-previews.tsx (1316 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-ea82de6794e0523a", "name": "Very large file: src/app/api/v1/webhooks/whatsapp/route.ts (1036 lines)", "shortDescription": {"text": "Very large file: src/app/api/v1/webhooks/whatsapp/route.ts (1036 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-0e87183883d7acff", "name": "Very large file: src/app/(dashboard)/journeys/page.tsx (1056 lines)", "shortDescription": {"text": "Very large file: src/app/(dashboard)/journeys/page.tsx (1056 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-41b67f1da555fc15", "name": "Very large file: src/app/(dashboard)/leads/page.tsx (1207 lines)", "shortDescription": {"text": "Very large file: src/app/(dashboard)/leads/page.tsx (1207 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-c1a4ad9b2f381f2a", "name": "Very large file: src/app/(dashboard)/leads/[id]/page.tsx (1397 lines)", "shortDescription": {"text": "Very large file: src/app/(dashboard)/leads/[id]/page.tsx (1397 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-d010e451c8d1dfa9", "name": "Very large file: src/app/(dashboard)/tasks/page.tsx (1475 lines)", "shortDescription": {"text": "Very large file: src/app/(dashboard)/tasks/page.tsx (1475 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-e08b269049779665", "name": "Very large file: src/app/(dashboard)/tickets/[id]/page.tsx (1237 lines)", "shortDescription": {"text": "Very large file: src/app/(dashboard)/tickets/[id]/page.tsx (1237 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-ea667f299ae4c8ad", "name": "Very large file: src/app/(dashboard)/budgeting/page.tsx (4225 lines)", "shortDescription": {"text": "Very large file: src/app/(dashboard)/budgeting/page.tsx (4225 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-4eb7802618a0cc05", "name": "Very large file: src/app/(dashboard)/ai-command-center/page.tsx (1161 lines)", "shortDescription": {"text": "Very large file: src/app/(dashboard)/ai-command-center/page.tsx (1161 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-9e0420aec7bacc5f", "name": "Very large file: src/app/(dashboard)/contracts/page.tsx (1596 lines)", "shortDescription": {"text": "Very large file: src/app/(dashboard)/contracts/page.tsx (1596 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-e0e1c7c090ada38e", "name": "Very large file: src/app/(dashboard)/contracts/[id]/page.tsx (3694 lines)", "shortDescription": {"text": "Very large file: src/app/(dashboard)/contracts/[id]/page.tsx (3694 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-0646381d551a4057", "name": "Very large file: src/app/(dashboard)/contracts/templates/page.tsx (1311 lines)", "shortDescription": {"text": "Very large file: src/app/(dashboard)/contracts/templates/page.tsx (1311 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-372382bf26375a63", "name": "Very large file: src/app/(dashboard)/inbox/page.tsx (1617 lines)", "shortDescription": {"text": "Very large file: src/app/(dashboard)/inbox/page.tsx (1617 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-899e79636ee18570", "name": "Very large file: src/app/(dashboard)/boards/[divisionId]/page.tsx (1062 lines)", "shortDescription": {"text": "Very large file: src/app/(dashboard)/boards/[divisionId]/page.tsx (1062 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-4d31e7661606ec3c", "name": "Very large file: src/app/(dashboard)/pricing/page.tsx (1556 lines)", "shortDescription": {"text": "Very large file: src/app/(dashboard)/pricing/page.tsx (1556 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-86e25b1768a54dfa", "name": "Very large file: src/app/(dashboard)/invoices/[id]/page.tsx (2070 lines)", "shortDescription": {"text": "Very large file: src/app/(dashboard)/invoices/[id]/page.tsx (2070 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-fc443a907f5fe132", "name": "Very large file: src/content/help/registry.ts (1186 lines)", "shortDescription": {"text": "Very large file: src/content/help/registry.ts (1186 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea3b5e389d8c9c0f", "name": "Low test-to-source ratio", "shortDescription": {"text": "Low test-to-source ratio"}, "fullDescription": {"text": "565 tests / 2295 src (ratio 0.25)."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-44a7cf0cfc2b6b0b", "name": "72 TODO/FIXME markers", "shortDescription": {"text": "72 TODO/FIXME markers"}, "fullDescription": {"text": "High count of TODO/FIXME/HACK markers \u2014 track them as issues so they're not forgotten."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 1610 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 917 placeholder/mock markers across 284 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-122f91b7f2906dc4", "name": "Agent authority lacks a verifier contract: .claude/settings.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/settings.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-646ebf94ee5f0daf", "name": "Agent authority lacks a verifier contract: .claude/agents/architect.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/agents/architect.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fe4826c8fe2e64d5", "name": "Agent authority lacks a verifier contract: .claude/skills/brand/references/asset-organization.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/brand/references/asset-organization.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4f1adf71fa42c354", "name": "Agent authority lacks a verifier contract: .claude/skills/brand/templates/brand-guidelines-starter.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/brand/templates/brand-guidelines-starter.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9aacdde86114e962", "name": "Agent authority lacks a verifier contract: .claude/skills/ui-styling/references/shadcn-accessibility.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/ui-styling/references/shadcn-accessibility.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-174e2536d1171d35", "name": "Agent authority lacks a verifier contract: .claude/skills/ui-styling/references/shadcn-components.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/ui-styling/references/shadcn-components.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-297a89e3aaefd34f", "name": "Agent authority lacks a verifier contract: .claude/skills/banner-design/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/banner-design/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7fa5686d97d8e5e8", "name": "Agent authority lacks a verifier contract: .claude/skills/banner-design/references/banner-sizes-and-styles.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/banner-design/references/banner-sizes-and-styles.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-efd944ff0e1991f3", "name": "Agent authority lacks a verifier contract: .claude/skills/design/references/slides-layout-patterns.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/design/references/slides-layout-patterns.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5f1d43b3de4e0dcd", "name": "Agent authority lacks a verifier contract: .claude/skills/design/references/cip-design.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/design/references/cip-design.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bc31d2bbc9c2d406", "name": "Agent authority lacks a verifier contract: .claude/skills/design/references/banner-sizes-and-styles.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/design/references/banner-sizes-and-styles.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-db0739837029be5e", "name": "Agent authority lacks a verifier contract: .claude/skills/design/references/slides-strategies.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/design/references/slides-strategies.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ec269b993ce6613a", "name": "Agent authority lacks a verifier contract: .claude/skills/design/references/logo-design.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/design/references/logo-design.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-287d4cf2d33f58ff", "name": "Agent authority lacks a verifier contract: .claude/skills/design/references/slides.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/design/references/slides.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a9efd6148b14c4dd", "name": "Agent authority lacks a verifier contract: .claude/skills/design-system/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/design-system/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d60e06b48b7fa56d", "name": "Agent authority lacks a verifier contract: .claude/skills/design-system/references/tailwind-integration.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/design-system/references/tailwind-integration.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-08f8f3764ea9cbf2", "name": "Agent authority lacks a verifier contract: .claude/skills/slides/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/slides/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5df68c6f99043d0b", "name": "Agent authority lacks a verifier contract: .claude/skills/slides/references/layout-patterns.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/slides/references/layout-patterns.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-44315c6caebd5a6a", "name": "Agent authority lacks a verifier contract: .claude/skills/slides/references/slide-strategies.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/slides/references/slide-strategies.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-62acb21c7af162dc", "name": "Commented-code block (7 lines) in ecosystem.config.cjs:26", "shortDescription": {"text": "Commented-code block (7 lines) in ecosystem.config.cjs:26"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a16b5cf73d1c1b1a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 ecosystem.config.cjs:30", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 ecosystem.config.cjs: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-792e09f75d2d46cc", "name": "Commented-code block (5 lines) in next.config.ts:12", "shortDescription": {"text": "Commented-code block (5 lines) in next.config.ts:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a981d084f319c911", "name": "Commented-code block (13 lines) in generated/logos/master-d-notch.mjs:14", "shortDescription": {"text": "Commented-code block (13 lines) in generated/logos/master-d-notch.mjs:14"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b824dc9e1093615f", "name": "Commented-code block (5 lines) in scripts/seed-mtm.ts:65", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/seed-mtm.ts:65"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-de28de727d2b9886", "name": "Legacy-named symbol `sha256_demo_hash_not_real_key_deprecated_old` in scripts/seed-tenant-demo.mjs:2975", "shortDescription": {"text": "Legacy-named symbol `sha256_demo_hash_not_real_key_deprecated_old` in scripts/seed-tenant-demo.mjs:2975"}, "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-9ccfdcdfcf62a224", "name": "Commented-code block (7 lines) in scripts/seed-tenant-demo.mjs:82", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/seed-tenant-demo.mjs:82"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d0eb4641ce189058", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/xss-exploit.mjs:52", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/xss-exploit.mjs:52"}, "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-abbd6663dccd4a2f", "name": "Commented-code block (6 lines) in scripts/_rls.mjs:1", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/_rls.mjs: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-8f3e8606962b6c15", "name": "Commented-code block (6 lines) in scripts/seed-plan-templates.mjs:9", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/seed-plan-templates.mjs:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e520af54b55efed3", "name": "Commented-code block (6 lines) in scripts/backfill-group-modules.mjs:1", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/backfill-group-modules.mjs: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-f16fdab102106f47", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/capture-ai-email.mjs:29", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/capture-ai-email.mjs:29"}, "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-13fd2821777a5cea", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/capture-fixes.mjs:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/capture-fixes.mjs:13"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-024903d0dd49980e", "name": "Commented-code block (8 lines) in scripts/backfill-sales-module.mjs:1", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/backfill-sales-module.mjs: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-09376c8fed9d0756", "name": "Commented-code block (5 lines) in scripts/migrate-v1.ts:24", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/migrate-v1.ts:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3214bb03bad130cb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/capture-email-portal.mjs:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/capture-email-portal.mjs:13"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-07dad327b8ba6f1c", "name": "Commented-code block (5 lines) in scripts/lint-encrypted-columns.mjs:155", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lint-encrypted-columns.mjs:155"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-74d0cf631ab8c9bd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/check-fb-token.mjs:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/check-fb-token.mjs:27"}, "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-005e5ac1d75e1cd9", "name": "Commented-code block (5 lines) in scripts/farid-edge-cases.ts:308", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/farid-edge-cases.ts:308"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3254d041117bb583", "name": "Commented-code block (9 lines) in scripts/backfill-plan-features.mjs:4", "shortDescription": {"text": "Commented-code block (9 lines) in scripts/backfill-plan-features.mjs: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-6b141e12dbd55846", "name": "Commented-code block (5 lines) in scripts/migrate-mtm-orders-items.mjs:1", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/migrate-mtm-orders-items.mjs: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-e7e54435c0ec9578", "name": "Commented-code block (7 lines) in scripts/backfill-attribution-touchpoints.mjs:4", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/backfill-attribution-touchpoints.mjs: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-38938e17a00024c7", "name": "Commented-code block (5 lines) in scripts/backfill-base-modules.mjs:1", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/backfill-base-modules.mjs: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-b708dfdda986f84e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/xss-exploit-test.js:31", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/xss-exploit-test.js:31"}, "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-a0a987b89759ea90", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/capture-marketing-screenshots.mjs:63", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/capture-marketing-screenshots.mjs:63"}, "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-0290f6033b1384ae", "name": "Legacy-named symbol `n_copy` in scripts/graphify-fix-collapsed-handlers.py:89", "shortDescription": {"text": "Legacy-named symbol `n_copy` in scripts/graphify-fix-collapsed-handlers.py:89"}, "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-195148076e60d4a0", "name": "Commented-code block (5 lines) in scripts/graphify-fix-collapsed-handlers.py:110", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/graphify-fix-collapsed-handlers.py:110"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ca835d1c26453f5b", "name": "Commented-code block (5 lines) in scripts/seeds/mars.mjs:3", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/seeds/mars.mjs: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-563df3980300926a", "name": "Commented-code block (9 lines) in scripts/seeds/mars-planogram-test.mjs:3", "shortDescription": {"text": "Commented-code block (9 lines) in scripts/seeds/mars-planogram-test.mjs: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-3c70b6fe22b34610", "name": "Commented-code block (5 lines) in scripts/rls/spike-extension-mechanics.mjs:82", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/rls/spike-extension-mechanics.mjs:82"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-457fd7ebe9387c6d", "name": "Commented-code block (6 lines) in scripts/rls/generate-rls-policies.mjs:1", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/rls/generate-rls-policies.mjs: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-a9b318eb3310b1ca", "name": "Network/subprocess call without timeout or try/except \u2014 .claude/skills/design-system/scripts/slide-token-validator.py:30", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 .claude/skills/design-system/scripts/slide-token-validator.py:30"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c9b0916cddc3953a", "name": "Legacy-named symbol `item_copy` in services/compute/cost_model.py:89", "shortDescription": {"text": "Legacy-named symbol `item_copy` in services/compute/cost_model.py:89"}, "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-1320de959133474a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 public/sw.js:1", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 public/sw.js:1"}, "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-3ed4b218950de679", "name": "Commented-code block (7 lines) in src/middleware.ts:18", "shortDescription": {"text": "Commented-code block (7 lines) in src/middleware.ts:18"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-af8d8015290a6ee5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/__tests__/email-providers.test.ts:34", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/__tests__/email-providers.test.ts:34"}, "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-56e3ad56519ceb5c", "name": "Commented-code block (7 lines) in src/__tests__/lib-segment-activation.test.ts:450", "shortDescription": {"text": "Commented-code block (7 lines) in src/__tests__/lib-segment-activation.test.ts:450"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-835046dad66c209a", "name": "Commented-code block (5 lines) in src/__tests__/lib-board-permission.test.ts:118", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/lib-board-permission.test.ts:118"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-438fc765e0ffb751", "name": "Commented-code block (6 lines) in src/__tests__/shelf-analysis-metrics.test.ts:112", "shortDescription": {"text": "Commented-code block (6 lines) in src/__tests__/shelf-analysis-metrics.test.ts:112"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1dd44cd02bb62d36", "name": "Commented-code block (5 lines) in src/__tests__/api-contacts-bulk.test.ts:130", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/api-contacts-bulk.test.ts:130"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e089671d79762cc6", "name": "Commented-code block (5 lines) in src/__tests__/api-oms-routes.test.ts:449", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/api-oms-routes.test.ts:449"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cd112d200463683c", "name": "Commented-code block (6 lines) in src/__tests__/no-bare-anthropic-constructor.test.ts:7", "shortDescription": {"text": "Commented-code block (6 lines) in src/__tests__/no-bare-anthropic-constructor.test.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4cea9ba2c75fff38", "name": "Commented-code block (8 lines) in src/__tests__/mobile-auth-scope.test.ts:392", "shortDescription": {"text": "Commented-code block (8 lines) in src/__tests__/mobile-auth-scope.test.ts:392"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8f84f7437e40e6c7", "name": "Legacy-named symbol `usedOld` in src/__tests__/lib-queue-otp-cleanup.test.ts:9", "shortDescription": {"text": "Legacy-named symbol `usedOld` in src/__tests__/lib-queue-otp-cleanup.test.ts:9"}, "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-30e413b47f1df935", "name": "Commented-code block (5 lines) in src/__tests__/lib-unified-profile.test.ts:90", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/lib-unified-profile.test.ts:90"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cc0380d4fe850554", "name": "Commented-code block (6 lines) in src/__tests__/lib-cpq-totals.test.ts:178", "shortDescription": {"text": "Commented-code block (6 lines) in src/__tests__/lib-cpq-totals.test.ts:178"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0e94ebb2e2aceee8", "name": "Commented-code block (5 lines) in src/__tests__/lib-schema-builder-registry.test.ts:71", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/lib-schema-builder-registry.test.ts:71"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-18a4ff8d7d227939", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/__tests__/lib-transcription-types.test.ts:105", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/__tests__/lib-transcription-types.test.ts:105"}, "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-6dc16519542ccc8b", "name": "Commented-code block (7 lines) in src/__tests__/lib-contract-lifecycle.test.ts:729", "shortDescription": {"text": "Commented-code block (7 lines) in src/__tests__/lib-contract-lifecycle.test.ts:729"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9d5d66eb1780b279", "name": "Commented-code block (6 lines) in src/__tests__/api-deals-bulk.test.ts:52", "shortDescription": {"text": "Commented-code block (6 lines) in src/__tests__/api-deals-bulk.test.ts:52"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8e11940502389f41", "name": "Commented-code block (5 lines) in src/__tests__/lib-api-auth.test.ts:411", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/lib-api-auth.test.ts:411"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eb031ed8678ca469", "name": "Legacy-named symbol `r_old` in src/__tests__/lib-loyalty.test.ts:950", "shortDescription": {"text": "Legacy-named symbol `r_old` in src/__tests__/lib-loyalty.test.ts:950"}, "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-65a503b7d82a4bc6", "name": "Commented-code block (5 lines) in src/__tests__/lib-health.test.ts:513", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/lib-health.test.ts:513"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cb50363bc1fd4388", "name": "Commented-code block (6 lines) in src/__tests__/lib-cpq-spawn-contract.test.ts:74", "shortDescription": {"text": "Commented-code block (6 lines) in src/__tests__/lib-cpq-spawn-contract.test.ts:74"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3ac0c3c67a548bb9", "name": "Commented-code block (5 lines) in src/__tests__/lib-notifications-taxonomy.test.ts:36", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/lib-notifications-taxonomy.test.ts:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9564d252bbd13482", "name": "Commented-code block (5 lines) in src/__tests__/api-revenue-recalculate.test.ts:285", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/api-revenue-recalculate.test.ts:285"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3540e9a1ce5974f2", "name": "Commented-code block (6 lines) in src/__tests__/rls-withrls-no-reresolve.test.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/__tests__/rls-withrls-no-reresolve.test.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2f66d1e05272bebe", "name": "Commented-code block (7 lines) in src/__tests__/lib-mtm-photo-watermark-validate-exif.test.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in src/__tests__/lib-mtm-photo-watermark-validate-exif.test.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5eaa8f4255fdec99", "name": "Commented-code block (5 lines) in src/__tests__/api-contract-body.test.ts:289", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/api-contract-body.test.ts:289"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a40c1c70660c72d7", "name": "Commented-code block (5 lines) in src/__tests__/lib-notifications-access.test.ts:114", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/lib-notifications-access.test.ts:114"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9cdb78ae461219df", "name": "Commented-code block (5 lines) in src/__tests__/api-deals-ai-analysis-timeout.test.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/api-deals-ai-analysis-timeout.test.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fb8b4e7954467790", "name": "Commented-code block (5 lines) in src/__tests__/api-submit-for-approval.test.ts:117", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/api-submit-for-approval.test.ts:117"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a24bdba03e07422e", "name": "Commented-code block (5 lines) in src/__tests__/api-mtm-routes.test.ts:79", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/api-mtm-routes.test.ts:79"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-275f3a802751bbf7", "name": "Commented-code block (9 lines) in src/__tests__/nav-items.test.ts:69", "shortDescription": {"text": "Commented-code block (9 lines) in src/__tests__/nav-items.test.ts:69"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-23665a9643cee93e", "name": "Commented-code block (5 lines) in src/__tests__/api-tasks-bulk.test.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/api-tasks-bulk.test.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7ce0c761919c0f88", "name": "Commented-code block (5 lines) in src/__tests__/shelf-metrics-m3-3c.test.ts:46", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/shelf-metrics-m3-3c.test.ts:46"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-340cdf4bc1764bc3", "name": "Commented-code block (5 lines) in src/__tests__/lib-headless-commerce.test.ts:478", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/lib-headless-commerce.test.ts:478"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ffca669d9d262125", "name": "Commented-code block (6 lines) in src/__tests__/api-subscriptions-routes.test.ts:559", "shortDescription": {"text": "Commented-code block (6 lines) in src/__tests__/api-subscriptions-routes.test.ts:559"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2d07fc1f6ba82d59", "name": "Commented-code block (6 lines) in src/__tests__/lib-prisma-soft-delete.test.ts:4", "shortDescription": {"text": "Commented-code block (6 lines) in src/__tests__/lib-prisma-soft-delete.test.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-570b6b69d9b9b1c7", "name": "Commented-code block (5 lines) in src/__tests__/api-webhooks-mgmt.test.ts:59", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/api-webhooks-mgmt.test.ts:59"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-572d62afe0f834c9", "name": "Commented-code block (6 lines) in src/__tests__/api-blind-index-backfill-audit.test.ts:290", "shortDescription": {"text": "Commented-code block (6 lines) in src/__tests__/api-blind-index-backfill-audit.test.ts:290"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5d7db2ba4aafb37a", "name": "Commented-code block (5 lines) in src/__tests__/lib-module-catalog.test.ts:146", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/lib-module-catalog.test.ts:146"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-abd372e5e2649c4c", "name": "Commented-code block (5 lines) in src/__tests__/lib-auth-tenant-scope.test.ts:149", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/lib-auth-tenant-scope.test.ts:149"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1450382ba5968b10", "name": "Commented-code block (8 lines) in src/__tests__/api-webhooks-rls-scope.test.ts:11", "shortDescription": {"text": "Commented-code block (8 lines) in src/__tests__/api-webhooks-rls-scope.test.ts:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-72fdc4c625a4dd69", "name": "Commented-code block (5 lines) in src/__tests__/shelf-analysis-roboflow.test.ts:133", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/shelf-analysis-roboflow.test.ts:133"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-72b1de40a52ff409", "name": "Commented-code block (7 lines) in src/__tests__/analytics-cache.test.ts:195", "shortDescription": {"text": "Commented-code block (7 lines) in src/__tests__/analytics-cache.test.ts:195"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e0103292607eb9e8", "name": "Commented-code block (5 lines) in src/__tests__/lib-approval-rules.test.ts:220", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/lib-approval-rules.test.ts:220"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-88f9de4d9c5a5eba", "name": "Commented-code block (5 lines) in src/__tests__/shelf-analysis-m3-3b.test.ts:226", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/shelf-analysis-m3-3b.test.ts:226"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-088305ebcaa64243", "name": "Commented-code block (5 lines) in src/__tests__/api-contract-score-risk.test.ts:752", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/api-contract-score-risk.test.ts:752"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fa689e126af3800c", "name": "Commented-code block (5 lines) in src/__tests__/lib-task-list-query.test.ts:125", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/lib-task-list-query.test.ts:125"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-98dae8506e916cf3", "name": "Commented-code block (5 lines) in src/__tests__/lib-mtm-equipment-derive-event.test.ts:37", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/lib-mtm-equipment-derive-event.test.ts:37"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b149f8d5d64a24be", "name": "Commented-code block (5 lines) in src/__tests__/lib-seed-body-html.test.ts:119", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/lib-seed-body-html.test.ts:119"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-86e71ca3652ea9b4", "name": "Commented-code block (7 lines) in src/__tests__/lib-media.test.ts:554", "shortDescription": {"text": "Commented-code block (7 lines) in src/__tests__/lib-media.test.ts:554"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a10dcc7fd5f98cc5", "name": "Commented-code block (5 lines) in src/__tests__/lib-tenant-pii-encryption.test.ts:218", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/lib-tenant-pii-encryption.test.ts:218"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7c4cfc2a0125ebfe", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/__tests__/api-board-analytics-route.test.ts:86", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/__tests__/api-board-analytics-route.test.ts:86"}, "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-cf9a76b8f637a8ef", "name": "Commented-code block (5 lines) in src/__tests__/lib-workflow-permissions.test.ts:164", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/lib-workflow-permissions.test.ts:164"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-00080d2265d982ee", "name": "Legacy-named symbol `sk_test_old` in src/__tests__/api-payment-providers.test.ts:252", "shortDescription": {"text": "Legacy-named symbol `sk_test_old` in src/__tests__/api-payment-providers.test.ts:252"}, "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-f1c7cdd0ed7c4ac7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/__tests__/shelf-analysis-roboflow-uploader.test.ts:4", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/__tests__/shelf-analysis-roboflow-uploader.test.ts:4"}, "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-d12cd762469f8590", "name": "Commented-code block (6 lines) in src/__tests__/anthropic-client-factory.test.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in src/__tests__/anthropic-client-factory.test.ts:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dee1d28583b77641", "name": "Commented-code block (6 lines) in src/__tests__/api-sign-portal.test.ts:931", "shortDescription": {"text": "Commented-code block (6 lines) in src/__tests__/api-sign-portal.test.ts:931"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3ddcf3ce5d86b4f6", "name": "Commented-code block (8 lines) in src/__tests__/lib-marketing-attribution.test.ts:916", "shortDescription": {"text": "Commented-code block (8 lines) in src/__tests__/lib-marketing-attribution.test.ts:916"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3db66aeebdc977d8", "name": "Commented-code block (5 lines) in src/__tests__/api-pii-column-wrap.test.ts:168", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/api-pii-column-wrap.test.ts:168"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cce9ca6de16041a4", "name": "Commented-code block (6 lines) in src/__tests__/lib-mtm-photo-watermark-compose.test.ts:73", "shortDescription": {"text": "Commented-code block (6 lines) in src/__tests__/lib-mtm-photo-watermark-compose.test.ts:73"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5cd71bc5e8c0fd84", "name": "Commented-code block (5 lines) in src/__tests__/shelf-analysis-worker-m3-1c.test.ts:220", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/shelf-analysis-worker-m3-1c.test.ts:220"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8eb9089ce9636e5f", "name": "Commented-code block (6 lines) in src/__tests__/api-mtm-orders.test.ts:308", "shortDescription": {"text": "Commented-code block (6 lines) in src/__tests__/api-mtm-orders.test.ts:308"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-89e46db416c342be", "name": "Commented-code block (5 lines) in src/__tests__/api-calls.test.ts:381", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/api-calls.test.ts:381"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-943abfa3594bb6c1", "name": "Commented-code block (8 lines) in src/__tests__/public-pages-rls-scope.test.ts:13", "shortDescription": {"text": "Commented-code block (8 lines) in src/__tests__/public-pages-rls-scope.test.ts:13"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0ae52058161f9332", "name": "Commented-code block (5 lines) in src/__tests__/api-uploads-proxy.test.ts:19", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/api-uploads-proxy.test.ts:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4c8e4162342224ff", "name": "Commented-code block (7 lines) in src/__tests__/lib-oms.test.ts:511", "shortDescription": {"text": "Commented-code block (7 lines) in src/__tests__/lib-oms.test.ts:511"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1227bc946712b581", "name": "Commented-code block (6 lines) in src/__tests__/shelf-golden-match.test.ts:92", "shortDescription": {"text": "Commented-code block (6 lines) in src/__tests__/shelf-golden-match.test.ts:92"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9e8f3f6b188c293c", "name": "Commented-code block (7 lines) in src/__tests__/admin-pages-rls-scope.test.ts:8", "shortDescription": {"text": "Commented-code block (7 lines) in src/__tests__/admin-pages-rls-scope.test.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-8c21f63803cbaeb3", "name": "Commented-code block (5 lines) in src/__tests__/api-deals.test.ts:522", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/api-deals.test.ts:522"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e1bfb382f69eded7", "name": "Commented-code block (5 lines) in src/__tests__/lib-esign.test.ts:210", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/lib-esign.test.ts:210"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-434e19bdb1044e8f", "name": "Commented-code block (5 lines) in src/__tests__/lib-omnistudio.test.ts:724", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/lib-omnistudio.test.ts:724"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fca40769ee722dca", "name": "Commented-code block (5 lines) in src/__tests__/api-users-assignable.test.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/api-users-assignable.test.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4d9963024ceca20e", "name": "Commented-code block (6 lines) in src/__tests__/rls-modelop-repro.test.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/__tests__/rls-modelop-repro.test.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-19dcb226d765ebbe", "name": "Commented-code block (5 lines) in src/__tests__/lib-project-rollup.test.ts:147", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/lib-project-rollup.test.ts:147"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2bf3ab626177c760", "name": "Commented-code block (6 lines) in src/__tests__/lib-recurrence-parse.test.ts:148", "shortDescription": {"text": "Commented-code block (6 lines) in src/__tests__/lib-recurrence-parse.test.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-60d2b57414b58021", "name": "Commented-code block (5 lines) in src/__tests__/lib-mtm-repair-request-form-helpers.test.ts:133", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/lib-mtm-repair-request-form-helpers.test.ts:133"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c2b8f20775059987", "name": "Commented-code block (5 lines) in src/__tests__/lib-content-perf-score-compute.test.ts:234", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/lib-content-perf-score-compute.test.ts:234"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a2828efabe23f461", "name": "Commented-code block (5 lines) in src/__tests__/helpers/bulk-auth.ts:41", "shortDescription": {"text": "Commented-code block (5 lines) in src/__tests__/helpers/bulk-auth.ts:41"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-45672b4c577b9ebf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/expense-forecast-tab.tsx:187", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/expense-forecast-tab.tsx:187"}, "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-bb35130c2d71d0a8", "name": "Commented-code block (5 lines) in src/components/email-visual-editor.tsx:124", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/email-visual-editor.tsx:124"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eddae1a1324b2711", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/lead-detail-modal.tsx:129", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/lead-detail-modal.tsx:129"}, "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-2f1b8e10053cbbad", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/lead-form.tsx:80", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/lead-form.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-8fee3206c8d91a28", "name": "Commented-code block (6 lines) in src/components/sidebar.tsx:221", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/sidebar.tsx:221"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8783eef908487e17", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/sidebar.tsx:108", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/sidebar.tsx:108"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3c0e734a9c575c0a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/campaign-form.tsx:191", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/campaign-form.tsx:191"}, "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-7cea9764ee7009a4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ticket-form.tsx:163", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ticket-form.tsx:163"}, "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-15a55afdb12f4f51", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/digest-subscriptions-panel.tsx:80", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/digest-subscriptions-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-2dc01269a74a0b82", "name": "Commented-code block (5 lines) in src/components/channel-config-form.tsx:233", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/channel-config-form.tsx:233"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-11b9a2f970a3d702", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/budget-plan-fact-dashboard.tsx:65", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/budget-plan-fact-dashboard.tsx: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-757eb5bc9c8fcfc0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/portal-chat-widget.tsx:103", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/portal-chat-widget.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-f0541ac55ddee615", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/sales-forecast-tab.tsx:131", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/sales-forecast-tab.tsx:131"}, "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-38e64c9e45fe7322", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/segment-form.tsx:237", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/segment-form.tsx:237"}, "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-74b6119fd713ee0d", "name": "Commented-code block (5 lines) in src/components/email-template-form.tsx:68", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/email-template-form.tsx:68"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3e39672ca37be032", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/email-template-form.tsx:275", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/email-template-form.tsx:275"}, "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-30e664a75d5ae839", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/lead-item-modal.tsx:653", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/lead-item-modal.tsx:653"}, "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-f2f9298e7f571506", "name": "Commented-code block (6 lines) in src/components/delete-confirm-dialog.tsx:9", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/delete-confirm-dialog.tsx:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-542fd581965a92b7", "name": "Commented-code block (6 lines) in src/components/task-form.tsx:269", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/task-form.tsx:269"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-96e015bfb4c7e2ff", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/task-form.tsx:154", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/task-form.tsx:154"}, "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-b6f293b551e703de", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/company-form.tsx:109", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/company-form.tsx:109"}, "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-9eb0df0251b1771e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/user-picker.tsx:61", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/user-picker.tsx:61"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cafcfde326ec99c2", "name": "Commented-code block (5 lines) in src/components/notification-bell.tsx:95", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/notification-bell.tsx:95"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8375354f552b73ed", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/lead-convert-dialog.tsx:62", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/lead-convert-dialog.tsx:62"}, "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-488dfdbb6667e998", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/budget-config-tab.tsx:98", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/budget-config-tab.tsx:98"}, "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-27750e3dd43b906a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/journey-form.tsx:224", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/journey-form.tsx:224"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-21ce314d00cbd861", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/offer-form.tsx:252", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/offer-form.tsx:252"}, "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-c5c128c6dba8b497", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/budget-odds-report.tsx:53", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/budget-odds-report.tsx:53"}, "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-1d7cb17d093961a0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/deal-form.tsx:101", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/deal-form.tsx:101"}, "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-def4a2aff0aafdb7", "name": "Commented-code block (5 lines) in src/components/content-perf/content-score-badge.tsx:98", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/content-perf/content-score-badge.tsx:98"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-44cca08427b29182", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/mtm/sku-form.tsx:121", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/mtm/sku-form.tsx:121"}, "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-a4b2aa354fffbe57", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/mtm/repair-request-edit-dialog.tsx:167", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/mtm/repair-request-edit-dialog.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-894eb9ef70626d1b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/mtm/sku-import-modal.tsx:55", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/mtm/sku-import-modal.tsx:55"}, "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-c2076073fdd40ad1", "name": "Commented-code block (8 lines) in src/components/mtm/route-form.tsx:56", "shortDescription": {"text": "Commented-code block (8 lines) in src/components/mtm/route-form.tsx:56"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d4687ba3bc0a08e2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/mtm/equipment-form.tsx:106", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/mtm/equipment-form.tsx:106"}, "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-678d6005f2287569", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/projects/project-form.tsx:121", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/projects/project-form.tsx:121"}, "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-5e43fda4827dc3dd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/projects/project-members-tab.tsx:55", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/projects/project-members-tab.tsx:55"}, "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-4465be81f4da64ef", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/projects/project-milestones-tab.tsx:38", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/projects/project-milestones-tab.tsx:38"}, "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-792e3ad182b45da6", "name": "Commented-code block (7 lines) in src/components/projects/project-crm-activity-tab.tsx:99", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/projects/project-crm-activity-tab.tsx:99"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-812b4125f4227643", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/projects/project-crm-activity-tab.tsx:43", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/projects/project-crm-activity-tab.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-3b0cad6703bd67a3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/projects/project-tasks-tab.tsx:100", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/projects/project-tasks-tab.tsx:100"}, "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-1853077ff79fa5df", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/events/events-analytics.tsx:233", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/events/events-analytics.tsx:233"}, "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-ea0d0be3fb571091", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/segments-widget.tsx:36", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/segments-widget.tsx:36"}, "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-5dfbe6f3875d66f2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/recommended-actions.tsx:75", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/recommended-actions.tsx:75"}, "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-80d9ec13e9fbb1f2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/cpq/quote-create-dialog.tsx:126", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/cpq/quote-create-dialog.tsx:126"}, "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-331ed519531ca23e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/surveys/analytics-dashboard.tsx:42", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/surveys/analytics-dashboard.tsx:42"}, "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-9c0edb52f6d7c04a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/surveys/unsubscribes-panel.tsx:67", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/surveys/unsubscribes-panel.tsx:67"}, "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-864d2caa7ff83a86", "name": "Commented-code block (6 lines) in src/components/tasks/task-detail-view.tsx:150", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/tasks/task-detail-view.tsx:150"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c67d8c1e23850cbf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/tasks/task-detail-view.tsx:419", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/tasks/task-detail-view.tsx:419"}, "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-9a9d3290c3b53326", "name": "Commented-code block (5 lines) in src/components/tasks/inline-tasks-table.tsx:121", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/tasks/inline-tasks-table.tsx:121"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-821211937715557b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/tasks/inline-tasks-table.tsx:308", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/tasks/inline-tasks-table.tsx:308"}, "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-8de2a080ac459f38", "name": "Commented-code block (6 lines) in src/components/cobrowse/customer-widget.tsx:93", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/cobrowse/customer-widget.tsx:93"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-80c4bbae733849ad", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/social/analytics-panel.tsx:54", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/social/analytics-panel.tsx:54"}, "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-81c47a44364876a8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/deals/invoices-tab.tsx:45", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/deals/invoices-tab.tsx:45"}, "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-9213e84e342d1aae", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/deals/deal-sidebar.tsx:535", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/deals/deal-sidebar.tsx:535"}, "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-2ce953d132845618", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/deals/offers-tab.tsx:90", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/deals/offers-tab.tsx:90"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6b8582cd1b57b8fe", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/deals/quick-action-bar.tsx:111", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/deals/quick-action-bar.tsx:111"}, "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-0239cfe777683f8a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/deals/next-best-offers.tsx:40", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/deals/next-best-offers.tsx:40"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0016a2735f1c9454", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/deals/engagement-tab.tsx:33", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/deals/engagement-tab.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-7c10a3dcec48e034", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/deals/activity-timeline.tsx:50", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/deals/activity-timeline.tsx:50"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b1de2272c69d1051", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/boards/config-table-sections.tsx:54", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/boards/config-table-sections.tsx:54"}, "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-3bc4a4a1b479c916", "name": "Commented-code block (6 lines) in src/components/boards/board-reports.tsx:519", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/boards/board-reports.tsx:519"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9c2c791abffb884a", "name": "Commented-code block (5 lines) in src/contexts/wallpaper-context.tsx:82", "shortDescription": {"text": "Commented-code block (5 lines) in src/contexts/wallpaper-context.tsx:82"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ac0bf3585af3dcc2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/contexts/launcher-prefs-context.tsx:64", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/contexts/launcher-prefs-context.tsx:64"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-22bb9823c8bb82b0", "name": "Commented-code block (6 lines) in src/app/api/v1/utility-customers/route.ts:30", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/utility-customers/route.ts:30"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-de968d99fed0aa8f", "name": "Commented-code block (5 lines) in src/app/api/v1/order-shipments/[id]/transition/route.ts:76", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/order-shipments/[id]/transition/route.ts:76"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-18a68d47cb8c282e", "name": "Commented-code block (5 lines) in src/app/api/v1/public-sector-licenses/[id]/route.ts:38", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/public-sector-licenses/[id]/route.ts:38"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1c4af5c83fe34778", "name": "Commented-code block (5 lines) in src/app/api/v1/sales-quotas/[id]/attainment/route.ts:31", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/sales-quotas/[id]/attainment/route.ts:31"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-851ff6e6d570b7f5", "name": "Commented-code block (6 lines) in src/app/api/v1/sales-quotas/leaderboard/route.ts:70", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/sales-quotas/leaderboard/route.ts:70"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f4c15ed72c012abc", "name": "Commented-code block (5 lines) in src/app/api/v1/ai/route.ts:251", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/ai/route.ts:251"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a8bdcac06c70890f", "name": "Commented-code block (14 lines) in src/app/api/v1/mtm/orders/route.ts:44", "shortDescription": {"text": "Commented-code block (14 lines) in src/app/api/v1/mtm/orders/route.ts:44"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-215f7d8f207cb66f", "name": "Commented-code block (6 lines) in src/app/api/v1/mtm/dashboard/route.ts:11", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/mtm/dashboard/route.ts:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0b8ebd9871f1a3e3", "name": "Commented-code block (5 lines) in src/app/api/v1/mtm/equipment/[id]/route.ts:94", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/mtm/equipment/[id]/route.ts:94"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-36da715a3e9a0068", "name": "Commented-code block (7 lines) in src/app/api/v1/mtm/mobile/sync/push/route.ts:185", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/v1/mtm/mobile/sync/push/route.ts:185"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-17df2c16ec55bea8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/mtm/mobile/sync/pull/route.ts:30", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/mtm/mobile/sync/pull/route.ts: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-3e7b488c5fdc95a8", "name": "Commented-code block (5 lines) in src/app/api/v1/mtm/mobile/auth/route.ts:74", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/mtm/mobile/auth/route.ts:74"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f155fa798fd60ef8", "name": "Commented-code block (5 lines) in src/app/api/v1/mtm/mobile/shelf-analytics/analyze/route.ts:218", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/mtm/mobile/shelf-analytics/analyze/route.ts:218"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1f25aa1481f15f74", "name": "Commented-code block (6 lines) in src/app/api/v1/mtm/routes/route.ts:27", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/mtm/routes/route.ts:27"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cc57b2d5f79af1ca", "name": "Commented-code block (6 lines) in src/app/api/v1/mtm/erp-health/route.ts:58", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/mtm/erp-health/route.ts:58"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-76f81dc8367332ac", "name": "Commented-code block (5 lines) in src/app/api/v1/mtm/photos/route.ts:21", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/mtm/photos/route.ts:21"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cabf6aec8b764f31", "name": "Commented-code block (5 lines) in src/app/api/v1/mtm/photos/[id]/golden-analyze/route.ts:45", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/mtm/photos/[id]/golden-analyze/route.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-5e5021e4171fec9c", "name": "Commented-code block (5 lines) in src/app/api/v1/mtm/skus/route.ts:66", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/mtm/skus/route.ts:66"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e9bbe5ed451a879d", "name": "Commented-code block (6 lines) in src/app/api/v1/mtm/credit-limits/[customerId]/route.ts:40", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/mtm/credit-limits/[customerId]/route.ts:40"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f3f02704763e2376", "name": "Commented-code block (6 lines) in src/app/api/v1/mtm/visits/route.ts:223", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/mtm/visits/route.ts:223"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2e5f7a6006ef36a2", "name": "Commented-code block (6 lines) in src/app/api/v1/attribution-models/route.ts:77", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/attribution-models/route.ts:77"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a85a2610c5a76a40", "name": "Commented-code block (6 lines) in src/app/api/v1/complaints/facets/route.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/complaints/facets/route.ts:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5b2205b51064f067", "name": "Commented-code block (6 lines) in src/app/api/v1/auth/sms-otp/verify/route.ts:29", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/auth/sms-otp/verify/route.ts:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9a9692768cdd6732", "name": "Commented-code block (8 lines) in src/app/api/v1/entitlements/route.ts:73", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/api/v1/entitlements/route.ts:73"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-de97a22bd99e4fb6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/entitlements/route.ts:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/entitlements/route.ts:79"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cd5f334dbb58d551", "name": "Commented-code block (7 lines) in src/app/api/v1/tracking/open/route.ts:81", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/v1/tracking/open/route.ts:81"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-22edcf8e296b39b2", "name": "Commented-code block (5 lines) in src/app/api/v1/health-medical-records/route.ts:134", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/health-medical-records/route.ts:134"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6350befad1f28bf0", "name": "Commented-code block (5 lines) in src/app/api/v1/subscriptions-overview/route.ts:83", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/subscriptions-overview/route.ts:83"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c14bd8dbdea6b3e7", "name": "Commented-code block (5 lines) in src/app/api/v1/policy-holders/route.ts:32", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/policy-holders/route.ts:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-79703d58013f0691", "name": "Commented-code block (5 lines) in src/app/api/v1/apps/[id]/install/route.ts:146", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/apps/[id]/install/route.ts:146"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-38dbdd0efe572174", "name": "Commented-code block (6 lines) in src/app/api/v1/claims/[id]/route.ts:40", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/claims/[id]/route.ts:40"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9c8ace6f3124596e", "name": "Commented-code block (7 lines) in src/app/api/v1/dashboard/executive/route.ts:296", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/v1/dashboard/executive/route.ts:296"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-017cc9d048decda2", "name": "Commented-code block (5 lines) in src/app/api/v1/citizens/route.ts:54", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/citizens/route.ts:54"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-22cda6b1ed5e1408", "name": "Commented-code block (6 lines) in src/app/api/v1/promo-codes/[id]/redeem/route.ts:158", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/promo-codes/[id]/redeem/route.ts:158"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-86ef09a4412d7153", "name": "Commented-code block (6 lines) in src/app/api/v1/loyalty-tiers/[id]/route.ts:179", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/loyalty-tiers/[id]/route.ts:179"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-64c2cece6a3972b4", "name": "Commented-code block (5 lines) in src/app/api/v1/loyalty-overview/route.ts:163", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/loyalty-overview/route.ts:163"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-aebf74676819f2a0", "name": "Commented-code block (5 lines) in src/app/api/v1/ps-cloud/utilization/route.ts:61", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/ps-cloud/utilization/route.ts:61"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c6820d0d0904305d", "name": "Commented-code block (6 lines) in src/app/api/v1/sign/[token]/route.ts:182", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/sign/[token]/route.ts:182"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-effa771868b3a937", "name": "Commented-code block (5 lines) in src/app/api/v1/uploads/[...path]/route.ts:108", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/uploads/[...path]/route.ts:108"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f2ed4b5365ffcab2", "name": "Commented-code block (5 lines) in src/app/api/v1/service-calls/route.ts:26", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/service-calls/route.ts:26"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-199ca186f8c600f9", "name": "Commented-code block (6 lines) in src/app/api/v1/campaign-roi/route.ts:27", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/campaign-roi/route.ts:27"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-403fa725d154ba54", "name": "Commented-code block (5 lines) in src/app/api/v1/board-permissions/route.ts:105", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/board-permissions/route.ts:105"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c540c5dc02f3e8f7", "name": "Commented-code block (5 lines) in src/app/api/v1/tasks/[id]/route.ts:71", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/tasks/[id]/route.ts:71"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7ee30a96d01f103d", "name": "Commented-code block (7 lines) in src/app/api/v1/agent-sessions/[id]/steps/route.ts:89", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/v1/agent-sessions/[id]/steps/route.ts:89"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a850264817ad27e1", "name": "Commented-code block (6 lines) in src/app/api/v1/cobrowse/sessions/[id]/route.ts:118", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/cobrowse/sessions/[id]/route.ts:118"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8eb8e83d1259842b", "name": "Commented-code block (7 lines) in src/app/api/v1/platform-events/publish/route.ts:51", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/v1/platform-events/publish/route.ts:51"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b8dca7fed66c0b44", "name": "Commented-code block (5 lines) in src/app/api/v1/tickets/[id]/route.ts:149", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/tickets/[id]/route.ts:149"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a61e5f01499b93cc", "name": "Commented-code block (6 lines) in src/app/api/v1/beneficiaries/route.ts:84", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/beneficiaries/route.ts:84"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4726a87962f764e4", "name": "Commented-code block (5 lines) in src/app/api/v1/beneficiaries/[id]/route.ts:214", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/beneficiaries/[id]/route.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-043e3af1be2b526d", "name": "Commented-code block (6 lines) in src/app/api/v1/social/mentions/[id]/convert-to-lead/route.ts:121", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/social/mentions/[id]/convert-to-lead/route.ts:121"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1e5be1fe6e3e4b31", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/social/mentions/[id]/reply/route.ts:54", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/social/mentions/[id]/reply/route.ts:54"}, "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-515c18e32592c71b", "name": "Commented-code block (6 lines) in src/app/api/v1/social/oauth/facebook/callback/route.ts:71", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/social/oauth/facebook/callback/route.ts:71"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-38b096de5691d035", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/social/oauth/facebook/callback/route.ts:99", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/social/oauth/facebook/callback/route.ts:99"}, "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-dad0eb9694b5516e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/social/oauth/twitter/callback/route.ts:40", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/social/oauth/twitter/callback/route.ts:40"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5e087f18a86ed736", "name": "Commented-code block (6 lines) in src/app/api/v1/social/oauth/instagram/callback/route.ts:177", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/social/oauth/instagram/callback/route.ts:177"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5c81f920b231825e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/social/oauth/instagram/callback/route.ts:101", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/social/oauth/instagram/callback/route.ts:101"}, "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-e635c97b376a9d53", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/social/oauth/youtube/callback/route.ts:33", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/social/oauth/youtube/callback/route.ts:33"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2caed69b525d0eef", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/social/oauth/tiktok/callback/route.ts:34", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/social/oauth/tiktok/callback/route.ts:34"}, "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-be268f5cc3e8f4b4", "name": "Commented-code block (5 lines) in src/app/api/v1/zapier/subscribe/route.ts:105", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/zapier/subscribe/route.ts:105"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2d2cefab99eb95b8", "name": "Commented-code block (12 lines) in src/app/api/v1/calls/webhook/threecx/route.ts:20", "shortDescription": {"text": "Commented-code block (12 lines) in src/app/api/v1/calls/webhook/threecx/route.ts:20"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-26d44cff34dbf7ca", "name": "Commented-code block (7 lines) in src/app/api/v1/rollup-fields/route.ts:124", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/v1/rollup-fields/route.ts:124"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1ec9d8156723d92e", "name": "Commented-code block (5 lines) in src/app/api/v1/rollup-fields/[id]/recompute/route.ts:198", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/rollup-fields/[id]/recompute/route.ts:198"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-16c35da977404d80", "name": "Commented-code block (5 lines) in src/app/api/v1/loyalty-accounts/[id]/earn/route.ts:113", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/loyalty-accounts/[id]/earn/route.ts:113"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9a5ebf60ef1426d6", "name": "Commented-code block (5 lines) in src/app/api/v1/whatsapp/templates/route.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/whatsapp/templates/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-039d95a62bb9117f", "name": "Commented-code block (6 lines) in src/app/api/v1/email-log/[id]/analyze/route.ts:59", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/email-log/[id]/analyze/route.ts:59"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-12dcd4b54286c21e", "name": "Commented-code block (6 lines) in src/app/api/v1/public-sector-cases/[id]/route.ts:36", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/public-sector-cases/[id]/route.ts:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-680dd64ce4a8337c", "name": "Commented-code block (6 lines) in src/app/api/v1/health-patients/route.ts:36", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/health-patients/route.ts:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7208d77671cea469", "name": "Commented-code block (5 lines) in src/app/api/v1/policies/route.ts:60", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/policies/route.ts:60"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-32fb1211ac7f040a", "name": "Commented-code block (6 lines) in src/app/api/v1/policies/[id]/route.ts:32", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/policies/[id]/route.ts:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ba1818fd8391dc4f", "name": "Commented-code block (5 lines) in src/app/api/v1/health-encounters/route.ts:237", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/health-encounters/route.ts:237"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-03b3000d28e85182", "name": "Commented-code block (6 lines) in src/app/api/v1/health-encounters/[id]/route.ts:290", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/health-encounters/[id]/route.ts:290"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0d1b844e1c239659", "name": "Commented-code block (5 lines) in src/app/api/v1/campaigns/[id]/send/route.ts:19", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/campaigns/[id]/send/route.ts:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7ad44dbd8d9898e6", "name": "Commented-code block (6 lines) in src/app/api/v1/contract-lifecycle/route.ts:177", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/contract-lifecycle/route.ts:177"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f473914bd09f2c40", "name": "Commented-code block (5 lines) in src/app/api/v1/digest-subscriptions/test/route.ts:7", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/digest-subscriptions/test/route.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-52aa30ca7510c5fb", "name": "Commented-code block (7 lines) in src/app/api/v1/contacts/bulk/route.ts:120", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/v1/contacts/bulk/route.ts:120"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-65e209bc552dba95", "name": "Commented-code block (6 lines) in src/app/api/v1/named-credentials/route.ts:65", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/named-credentials/route.ts:65"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cb44a4511d5f798c", "name": "Commented-code block (5 lines) in src/app/api/v1/named-credentials/[id]/test/route.ts:88", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/named-credentials/[id]/test/route.ts:88"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-04fed59f4330f3f3", "name": "Commented-code block (6 lines) in src/app/api/v1/contracts/upload-image/route.ts:14", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/contracts/upload-image/route.ts:14"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b943160ae3d1d544", "name": "Commented-code block (7 lines) in src/app/api/v1/contracts/[id]/route.ts:31", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/v1/contracts/[id]/route.ts:31"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6e3c358e0d559966", "name": "Commented-code block (5 lines) in src/app/api/v1/contracts/[id]/submit-for-approval/route.ts:321", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/contracts/[id]/submit-for-approval/route.ts:321"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1b200b03f9c49894", "name": "Commented-code block (5 lines) in src/app/api/v1/contracts/[id]/create-invoice/route.ts:39", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/contracts/[id]/create-invoice/route.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-e5b47e31cc2e4ff4", "name": "Commented-code block (5 lines) in src/app/api/v1/contracts/[id]/deviations/[flagId]/route.ts:43", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/contracts/[id]/deviations/[flagId]/route.ts:43"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b377ed6375c547e7", "name": "Commented-code block (5 lines) in src/app/api/v1/contracts/[id]/extract/route.ts:179", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/contracts/[id]/extract/route.ts:179"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8e6553a3c22eef67", "name": "Commented-code block (7 lines) in src/app/api/v1/contracts/[id]/esign/[envelopeId]/send/route.ts:162", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/v1/contracts/[id]/esign/[envelopeId]/send/route.ts:162"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d4d43b7f5b5ca83d", "name": "Commented-code block (5 lines) in src/app/api/v1/contracts/[id]/score-risk/route.ts:74", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/contracts/[id]/score-risk/route.ts:74"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bb21ba80ca9ceb5e", "name": "Commented-code block (7 lines) in src/app/api/v1/contracts/[id]/approvals/[order]/route.ts:160", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/v1/contracts/[id]/approvals/[order]/route.ts:160"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ba5f79d5b91ffa90", "name": "Commented-code block (7 lines) in src/app/api/v1/contracts/[id]/performance-obligations/recalculate/route.ts:84", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/v1/contracts/[id]/performance-obligations/recalculate/route.ts:84"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6a8a09992cef27aa", "name": "Commented-code block (5 lines) in src/app/api/v1/contracts/[id]/amend/route.ts:148", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/contracts/[id]/amend/route.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-93e1fd8bc15a0687", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/contracts/[id]/reindex/route.ts:42", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/contracts/[id]/reindex/route.ts:42"}, "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-4e1d6c40ac9a3b5f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/contracts/search/semantic/route.ts:45", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/contracts/search/semantic/route.ts:45"}, "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-f52bb3c4d5f68a29", "name": "Commented-code block (7 lines) in src/app/api/v1/metering-points/[id]/route.ts:257", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/v1/metering-points/[id]/route.ts:257"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d368e4361b978a2b", "name": "Commented-code block (5 lines) in src/app/api/v1/payment-refunds/route.ts:163", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/payment-refunds/route.ts:163"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-07f20208b464a9c8", "name": "Commented-code block (5 lines) in src/app/api/v1/saved-views/route.ts:125", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/saved-views/route.ts:125"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7fdfef4172d31f83", "name": "Commented-code block (7 lines) in src/app/api/v1/saved-views/[id]/route.ts:55", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/v1/saved-views/[id]/route.ts:55"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-089717e89b94657c", "name": "Commented-code block (5 lines) in src/app/api/v1/public/resend-webhook/route.ts:11", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/public/resend-webhook/route.ts:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-34d1e07332a177c1", "name": "Commented-code block (5 lines) in src/app/api/v1/public/cobrowse/stream/route.ts:55", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/public/cobrowse/stream/route.ts:55"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a8a966ad44aee00c", "name": "Commented-code block (5 lines) in src/app/api/v1/public/cobrowse/consent/route.ts:88", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/public/cobrowse/consent/route.ts:88"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-56f32dcc41d42a89", "name": "Commented-code block (6 lines) in src/app/api/v1/public/portal-unsubscribe/route.ts:11", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/public/portal-unsubscribe/route.ts:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7bd1efcf7fa1ec1f", "name": "Commented-code block (5 lines) in src/app/api/v1/public/portal-auth/route.ts:19", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/public/portal-auth/route.ts:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6617d379cb89a263", "name": "Commented-code block (7 lines) in src/app/api/v1/public/portal-auth/register/route.ts:86", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/v1/public/portal-auth/register/route.ts:86"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-853789a87cab5060", "name": "Commented-code block (9 lines) in src/app/api/v1/public/email-inbound/route.ts:23", "shortDescription": {"text": "Commented-code block (9 lines) in src/app/api/v1/public/email-inbound/route.ts:23"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e482768781ed7863", "name": "Commented-code block (7 lines) in src/app/api/v1/public/commerce/storefronts/[slug]/route.ts:56", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/v1/public/commerce/storefronts/[slug]/route.ts:56"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1e9a7023f0c2bd92", "name": "Commented-code block (5 lines) in src/app/api/v1/public/forms/[slug]/submit/route.ts:70", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/public/forms/[slug]/submit/route.ts:70"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-31e4099b5d4bc25e", "name": "Commented-code block (6 lines) in src/app/api/v1/media-subscribers/route.ts:27", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/media-subscribers/route.ts:27"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7575e3c03572405d", "name": "Commented-code block (11 lines) in src/app/api/v1/webhooks/facebook/route.ts:26", "shortDescription": {"text": "Commented-code block (11 lines) in src/app/api/v1/webhooks/facebook/route.ts:26"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-09828d99a52f3175", "name": "Commented-code block (5 lines) in src/app/api/v1/webhooks/sms-inbound/route.ts:58", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/webhooks/sms-inbound/route.ts:58"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a344f4b7742d631b", "name": "Commented-code block (5 lines) in src/app/api/v1/webhooks/telegram/route.ts:141", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/webhooks/telegram/route.ts:141"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0fdb1894bd84441d", "name": "Commented-code block (6 lines) in src/app/api/v1/webhooks/whatsapp/route.ts:33", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/webhooks/whatsapp/route.ts:33"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-85c51f02ee8051eb", "name": "Commented-code block (5 lines) in src/app/api/v1/inbox/route.ts:237", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/inbox/route.ts:237"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-029c3597598fa5a2", "name": "Commented-code block (7 lines) in src/app/api/v1/contract-clauses/draft/route.ts:239", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/v1/contract-clauses/draft/route.ts:239"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7a28b41cea9cb5af", "name": "Commented-code block (5 lines) in src/app/api/v1/prediction-models/[id]/train/route.ts:74", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/prediction-models/[id]/train/route.ts:74"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2438368c390c779d", "name": "Commented-code block (5 lines) in src/app/api/v1/public-sector-grants/route.ts:27", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/public-sector-grants/route.ts:27"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-17906021aaeb1a56", "name": "Commented-code block (6 lines) in src/app/api/v1/public-sector-grants/[id]/route.ts:44", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/public-sector-grants/[id]/route.ts:44"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3ed2fe01a0fb72a6", "name": "Commented-code block (6 lines) in src/app/api/v1/quotes/route.ts:115", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/quotes/route.ts:115"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3d8e0ccd6b34c736", "name": "Commented-code block (8 lines) in src/app/api/v1/quotes/[id]/route.ts:126", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/api/v1/quotes/[id]/route.ts:126"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fc664281d46d8b39", "name": "Commented-code block (5 lines) in src/app/api/v1/quotes/[id]/pdf/route.ts:21", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/quotes/[id]/pdf/route.ts:21"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-adc7b684d56ed74b", "name": "Commented-code block (6 lines) in src/app/api/v1/ai-feedback/aggregate/route.ts:68", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/ai-feedback/aggregate/route.ts:68"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6f7e0f4efd3bb30f", "name": "Commented-code block (6 lines) in src/app/api/v1/deals/bulk/route.ts:47", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/deals/bulk/route.ts:47"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9c9ed90f3a0a84d7", "name": "Commented-code block (6 lines) in src/app/api/v1/deals/[id]/route.ts:271", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/deals/[id]/route.ts:271"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-446e0ddcdbe17591", "name": "Commented-code block (6 lines) in src/app/api/v1/companies/[id]/timeline/route.ts:10", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/companies/[id]/timeline/route.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-d9084b1525893cc6", "name": "Commented-code block (7 lines) in src/app/api/v1/order-returns/route.ts:81", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/v1/order-returns/route.ts:81"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c909d75389b8afa", "name": "Commented-code block (6 lines) in src/app/api/v1/order-returns/[id]/transition/route.ts:73", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/v1/order-returns/[id]/transition/route.ts:73"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-497bb791cf184201", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/chat/send/route.ts:25", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/chat/send/route.ts:25"}, "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-29a6ad4f9d080cff", "name": "Commented-code block (5 lines) in src/app/api/cron/mtm-shelf-backstop/route.ts:166", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/cron/mtm-shelf-backstop/route.ts:166"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ec17531b6898f2aa", "name": "Commented-code block (5 lines) in src/app/api/cron/mtm-cleanup/route.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/cron/mtm-cleanup/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-b4bf76f6ae40c357", "name": "Commented-code block (6 lines) in src/app/api/cron/pii-blind-index-backfill/route.ts:85", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/cron/pii-blind-index-backfill/route.ts:85"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eb992a0417ff187e", "name": "Commented-code block (7 lines) in src/app/api/cron/content-perf-refresh/route.ts:205", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/cron/content-perf-refresh/route.ts:205"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1567e12024443f04", "name": "Commented-code block (6 lines) in src/app/api/cron/contract-embeddings/route.ts:81", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/cron/contract-embeddings/route.ts:81"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c1d96ea202099b18", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/cron/contract-embeddings/route.ts:42", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/cron/contract-embeddings/route.ts:42"}, "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-d6911dd533ac0e56", "name": "Commented-code block (5 lines) in src/app/api/cron/attribution-drain/route.ts:29", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/cron/attribution-drain/route.ts:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-509dd716cc5284e5", "name": "Commented-code block (8 lines) in src/app/api/cron/cobrowse-reaper/route.ts:57", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/api/cron/cobrowse-reaper/route.ts:57"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e9b6636bdb83deeb", "name": "Commented-code block (5 lines) in src/app/api/cron/esign-reminders/route.ts:152", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/cron/esign-reminders/route.ts:152"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-600c83cdfffbf51e", "name": "Commented-code block (6 lines) in src/app/api/cron/proactive-alerts-trigger/route.ts:71", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/cron/proactive-alerts-trigger/route.ts:71"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-040517cfdbe1492a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/page.tsx:45", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/page.tsx:45"}, "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-b0d883abe8746081", "name": "Commented-code block (9 lines) in src/app/(dashboard)/layout.tsx:42", "shortDescription": {"text": "Commented-code block (9 lines) in src/app/(dashboard)/layout.tsx:42"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ccff192f3c5b478e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/layout.tsx:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/layout.tsx:79"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c153dc327000888b", "name": "Commented-code block (6 lines) in src/app/(dashboard)/settings/page.tsx:20", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/(dashboard)/settings/page.tsx:20"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-acdf71a5cd6f574b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/integrations/page.tsx:178", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/integrations/page.tsx:178"}, "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-63c48d54b911e123", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/security/page.tsx:52", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/security/page.tsx:52"}, "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-423364c6da06a6dc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/users/page.tsx:162", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/users/page.tsx:162"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aa27a9d9e9718dbc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/sla-policies/page.tsx:68", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/sla-policies/page.tsx:68"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cbfa104612863acc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/smtp-settings/page.tsx:46", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/smtp-settings/page.tsx:46"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-02dd6c0b3bdaf09b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/portal-users/page.tsx:67", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/portal-users/page.tsx:67"}, "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-e415353bea5649d5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/finance-notifications/page.tsx:61", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/finance-notifications/page.tsx:61"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ccd936303258b5af", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/pipelines/page.tsx:303", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/pipelines/page.tsx:303"}, "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-2dc2cbd47a9fb418", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/ticket-queues/page.tsx:224", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/ticket-queues/page.tsx:224"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b5e7f63009bde283", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/field-permissions/page.tsx:144", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/field-permissions/page.tsx:144"}, "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-af1f131604957c58", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/escalation/page.tsx:282", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/escalation/page.tsx:282"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-43803390593cdcf7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/macros/page.tsx:384", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/macros/page.tsx:384"}, "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-ee4900c07dbbb55c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/intake-forms/page.tsx:172", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/intake-forms/page.tsx:172"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-558ef2abc27260b2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/pitch-links/page.tsx:73", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/pitch-links/page.tsx:73"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-16ae548355b97c5a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/quotas/page.tsx:82", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/quotas/page.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-03ebb313e6f1f4ac", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/roles/page.tsx:219", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/roles/page.tsx:219"}, "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-e8650157a155d393", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/invoice-settings/page.tsx:65", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/invoice-settings/page.tsx: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-0817d5bfc421b0fb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/approval-rules/page.tsx:120", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/approval-rules/page.tsx:120"}, "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-7734548f4d8eef86", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/territories/page.tsx:294", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/territories/page.tsx:294"}, "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-d622386c4c4df98c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/workflows/page.tsx:162", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/workflows/page.tsx:162"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-46d8504b0abe4c79", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/budget-config/page.tsx:99", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/budget-config/page.tsx:99"}, "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-da220f08c7840766", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/channels/page.tsx:100", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/channels/page.tsx:100"}, "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-ee97f409482807ff", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/voip/page.tsx:160", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/voip/page.tsx:160"}, "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-31beb4a65f80dabd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/currencies/page.tsx:55", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/currencies/page.tsx:55"}, "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-9247c730203138ea", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/sales-forecast/page.tsx:149", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/sales-forecast/page.tsx:149"}, "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-44e69745f09a2c7f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/web-chat/page.tsx:47", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/web-chat/page.tsx:47"}, "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-567e67340c20fb00", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/journeys/page.tsx:267", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/journeys/page.tsx:267"}, "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-05a9e6c05d2fd185", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/planogram-checks/page.tsx:67", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/planogram-checks/page.tsx:67"}, "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-f7747bb6e90d084f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/orders/page.tsx:72", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/orders/page.tsx:72"}, "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-4faa58280244920e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/shelf-analytics/page.tsx:68", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/shelf-analytics/page.tsx:68"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a00736c8a73dfbfd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/customers/page.tsx:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/customers/page.tsx:79"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4602c6cf15314d16", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/model-training/page.tsx:43", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/model-training/page.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-789b28b566b1dabb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/equipment/page.tsx:94", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/equipment/page.tsx:94"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-06b4aa857c66d3f0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/equipment/types/page.tsx:87", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/equipment/types/page.tsx:87"}, "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-bfec2cc4f2ff2c84", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/equipment/[id]/page.tsx:85", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/equipment/[id]/page.tsx:85"}, "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-6258b49177b41eb2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/tasks/page.tsx:98", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/tasks/page.tsx:98"}, "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-eb791b186a5712f2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/routes/page.tsx:91", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/routes/page.tsx:91"}, "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-44773acdae50327a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/alerts/page.tsx:81", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/alerts/page.tsx:81"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2b5eed48e89d0343", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/categories/page.tsx:211", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/categories/page.tsx:211"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3e28e8488487c99a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/agents/page.tsx:89", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/agents/page.tsx:89"}, "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-b54188d55c838d9e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/photos/page.tsx:83", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/photos/page.tsx:83"}, "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-deaf09ebab1213c8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/skus/page.tsx:103", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/skus/page.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-5eee9ad2069f6fc6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/skus/[id]/page.tsx:87", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/skus/[id]/page.tsx:87"}, "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-2f27dbf1d648f4ac", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/repair-requests/page.tsx:71", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/repair-requests/page.tsx:71"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d9daaa19d86dde2a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/visits/page.tsx:70", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/visits/page.tsx:70"}, "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-0cf6b090f2623490", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/planograms/page.tsx:57", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/planograms/page.tsx:57"}, "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-cd1c9c50563c0909", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/planograms/[id]/page.tsx:46", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/planograms/[id]/page.tsx:46"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8bf9630909fa8c05", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/map/page.tsx:87", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/map/page.tsx:87"}, "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-740e2fb5cef13f4b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/complaints/page.tsx:88", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/complaints/page.tsx:88"}, "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-437dce6a7e880ce0", "name": "Legacy-named symbol `flatOld` in src/app/(dashboard)/complaints/[id]/page.tsx:306", "shortDescription": {"text": "Legacy-named symbol `flatOld` in src/app/(dashboard)/complaints/[id]/page.tsx:306"}, "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-542eeef14b4b447f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/complaints/[id]/page.tsx:123", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/complaints/[id]/page.tsx:123"}, "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-08f9c7ea6a626676", "name": "Commented-code block (6 lines) in src/app/(dashboard)/leads/page.tsx:248", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/(dashboard)/leads/page.tsx:248"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-55277099b6d7022d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/leads/page.tsx:280", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/leads/page.tsx:280"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e7d3c7d10b61d7ee", "name": "Commented-code block (5 lines) in src/app/(dashboard)/leads/[id]/page.tsx:384", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(dashboard)/leads/[id]/page.tsx:384"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e8a355dda32c8a3d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/leads/[id]/page.tsx:352", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/leads/[id]/page.tsx:352"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0492979e7b86f53c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/projects/page.tsx:86", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/projects/page.tsx:86"}, "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-3cc76a19cb0f99ee", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/projects/[id]/page.tsx:83", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/projects/[id]/page.tsx:83"}, "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-5851b17a3341a8f8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/events/page.tsx:84", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/events/page.tsx:84"}, "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-4b393a660bcd4196", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/events/[id]/page.tsx:286", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/events/[id]/page.tsx:286"}, "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-906cdbbfbe1dd2b9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/health/page.tsx:71", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/health/page.tsx:71"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6505b14dfb62bd9b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/health/care-plans/page.tsx:63", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/health/care-plans/page.tsx:63"}, "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-bd35a025c8ab8070", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/health/encounters/page.tsx:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/health/encounters/page.tsx:66"}, "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-f77ba06675b07b3a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/health/[id]/page.tsx:133", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/health/[id]/page.tsx:133"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-50691679b779b4e0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/health/providers/page.tsx:67", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/health/providers/page.tsx:67"}, "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-31be3a39e54fddd9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/media/page.tsx:74", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/media/page.tsx:74"}, "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-4f13e41c06964af5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/media/content/page.tsx:75", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/media/content/page.tsx:75"}, "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-26b0d9d58915e448", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/media/ad-campaigns/page.tsx:76", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/media/ad-campaigns/page.tsx:76"}, "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-a073dfa4028e3c45", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/knowledge-base/page.tsx:148", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/knowledge-base/page.tsx:148"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-033bf1b9b3469d65", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/knowledge-base/[id]/page.tsx:50", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/knowledge-base/[id]/page.tsx:50"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dccdbe7f21b30bd2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/dashboard/page.tsx:59", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/dashboard/page.tsx:59"}, "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-38781ed899792689", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/loyalty/earn-rules/page.tsx:138", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/loyalty/earn-rules/page.tsx:138"}, "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-56723cf3fbc06bf0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/loyalty/promo-codes/page.tsx:222", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/loyalty/promo-codes/page.tsx:222"}, "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-fbf5bcba9785cee5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/loyalty/tiers/page.tsx:178", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/loyalty/tiers/page.tsx:178"}, "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-7e4528718281dd82", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/sequences/page.tsx:312", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/sequences/page.tsx:312"}, "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-64c97460612f8f17", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/insurance/page.tsx:69", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/insurance/page.tsx:69"}, "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-a3b7230a548cd74d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/insurance/claims/page.tsx:67", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/insurance/claims/page.tsx:67"}, "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-4ef0efdf88b3dedd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/insurance/policies/page.tsx:64", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/insurance/policies/page.tsx:64"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2a6991879cb8120b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/surveys/page.tsx:125", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/surveys/page.tsx:125"}, "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-6e6123b764d3ce95", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/surveys/[id]/page.tsx:70", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/surveys/[id]/page.tsx:70"}, "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-37a19e7ff245fe92", "name": "Commented-code block (5 lines) in src/app/(dashboard)/tasks/page.tsx:68", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(dashboard)/tasks/page.tsx:68"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3c788fc071393360", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/tasks/page.tsx:734", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/tasks/page.tsx:734"}, "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-6ea6bca2dd8caad5", "name": "Commented-code block (5 lines) in src/app/(dashboard)/cobrowse/[id]/page.tsx:84", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(dashboard)/cobrowse/[id]/page.tsx:84"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a10b4dedbe316278", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/tickets/page.tsx:142", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/tickets/page.tsx:142"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f40514ba99879e57", "name": "Commented-code block (5 lines) in src/app/(dashboard)/forecast/page.tsx:23", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(dashboard)/forecast/page.tsx:23"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5d4b07a6292e1a46", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/forecast/page.tsx:47", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/forecast/page.tsx:47"}, "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-224bcb4aafba8b47", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/budgeting/page.tsx:1584", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/budgeting/page.tsx:1584"}, "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-12677205cbf17afe", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/email-templates/page.tsx:125", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/email-templates/page.tsx:125"}, "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-5dd713b04f79fa0c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/email-log/page.tsx:91", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/email-log/page.tsx:91"}, "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-764834a4919af162", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/energy/page.tsx:73", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/energy/page.tsx:73"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-85614f1ed862b502", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/energy/outages/page.tsx:77", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/energy/outages/page.tsx:77"}, "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-87af9c26d1410620", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/energy/service-calls/page.tsx:77", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/energy/service-calls/page.tsx:77"}, "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-4e5fe94ae4df1fca", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/energy/metering/page.tsx:72", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/energy/metering/page.tsx:72"}, "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-55b9321548c20bc0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/campaigns/[id]/page.tsx:80", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/campaigns/[id]/page.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-f5462867837a6361", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/contacts/list/page.tsx:190", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/contacts/list/page.tsx:190"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-869f77cc0182df75", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/contacts/[id]/page.tsx:78", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/contacts/[id]/page.tsx:78"}, "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-697b582d197ec3c4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/ai-command-center/page.tsx:216", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/ai-command-center/page.tsx:216"}, "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-81c33661e077778d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/offers/page.tsx:71", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/offers/page.tsx:71"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2ae3e99385d60499", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/offers/[id]/page.tsx:96", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/offers/[id]/page.tsx:96"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-384c8ba0eee5f0a9", "name": "Commented-code block (5 lines) in src/app/(dashboard)/profile/page.tsx:613", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(dashboard)/profile/page.tsx:613"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ba619442c826b4db", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/contracts/page.tsx:471", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/contracts/page.tsx:471"}, "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-0b7a3566f5c27c4b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/contracts/analytics/page.tsx:145", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/contracts/analytics/page.tsx:145"}, "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-372b78657b3d515c", "name": "Commented-code block (6 lines) in src/app/(dashboard)/contracts/[id]/page.tsx:1708", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/(dashboard)/contracts/[id]/page.tsx:1708"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2fabc994876e54c1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/contracts/[id]/page.tsx:451", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/contracts/[id]/page.tsx:451"}, "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-0d5f429f215ccd9e", "name": "Commented-code block (5 lines) in src/app/(dashboard)/contracts/[id]/editor/page.tsx:74", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(dashboard)/contracts/[id]/editor/page.tsx:74"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-186d047e0b4a68c9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/contracts/[id]/editor/page.tsx:258", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/contracts/[id]/editor/page.tsx:258"}, "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-03403500ed792304", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/contracts/milestones/page.tsx:119", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/contracts/milestones/page.tsx:119"}, "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-3b506b783fef80c3", "name": "Commented-code block (5 lines) in src/app/(dashboard)/contracts/templates/page.tsx:971", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(dashboard)/contracts/templates/page.tsx:971"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-95eb173ade358900", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/contracts/templates/page.tsx:925", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/contracts/templates/page.tsx:925"}, "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-761f93158bf91770", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/reports/builder/page.tsx:285", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/reports/builder/page.tsx:285"}, "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-ad332e76a3d73377", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/support/agent-desktop/page.tsx:113", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/support/agent-desktop/page.tsx:113"}, "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-ceca5c3c795fae2c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/support/voip/page.tsx:88", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/support/voip/page.tsx:88"}, "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-c42e50a64ce18282", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/attribution/models/page.tsx:419", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/attribution/models/page.tsx:419"}, "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-2ec2924ece072dff", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/segments/page.tsx:89", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/segments/page.tsx:89"}, "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-4dc7d325d0917738", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/public-sector/page.tsx:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/public-sector/page.tsx:66"}, "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-eced6dd94e527352", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/public-sector/cases/page.tsx:86", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/public-sector/cases/page.tsx:86"}, "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-419b47a4bf90bbab", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/public-sector/licenses/page.tsx:75", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/public-sector/licenses/page.tsx:75"}, "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-cab9c6c176fe4753", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/public-sector/grants/page.tsx:78", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/public-sector/grants/page.tsx:78"}, "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-7b20e6f512dd7db9", "name": "Commented-code block (6 lines) in src/app/(dashboard)/inbox/page.tsx:179", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/(dashboard)/inbox/page.tsx:179"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9e070a53bb4a0054", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/inbox/analytics/page.tsx:87", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/inbox/analytics/page.tsx:87"}, "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-b2974d515ca3398f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/inbox/legacy/page.tsx:177", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/inbox/legacy/page.tsx:177"}, "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-129f4559b50d7d7e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/inbox/web-chat/page.tsx:133", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/inbox/web-chat/page.tsx:133"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1a446cbce19980d9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/social-monitoring/page.tsx:105", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/social-monitoring/page.tsx:105"}, "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-2259bd4dc1c57bc3", "name": "Commented-code block (5 lines) in src/app/(dashboard)/quotes/[id]/page.tsx:98", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(dashboard)/quotes/[id]/page.tsx:98"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5f94749d8c2b917f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/quotes/[id]/page.tsx:232", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/quotes/[id]/page.tsx:232"}, "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-72a5857b74d57de2", "name": "Commented-code block (6 lines) in src/app/(dashboard)/deals/page.tsx:1010", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/(dashboard)/deals/page.tsx:1010"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-067814ff1686fc76", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/deals/page.tsx:334", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/deals/page.tsx:334"}, "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-dafc58217462a9e7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/deals/[id]/page.tsx:119", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/deals/[id]/page.tsx:119"}, "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-2dd342cb1512b190", "name": "Commented-code block (5 lines) in src/app/(dashboard)/forms/[id]/page.tsx:96", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(dashboard)/forms/[id]/page.tsx:96"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cd6b33eb421627ef", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/boards/page.tsx:401", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/boards/page.tsx:401"}, "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-f6b28e2fb9c691c5", "name": "Commented-code block (5 lines) in src/app/(dashboard)/boards/[divisionId]/page.tsx:372", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(dashboard)/boards/[divisionId]/page.tsx:372"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-985e8118e63d6731", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/companies/page.tsx:209", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/companies/page.tsx:209"}, "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-03094bcb14de5897", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/pricing/page.tsx:365", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/pricing/page.tsx:365"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-85a7d8279a5262bf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/invoices/page.tsx:152", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/invoices/page.tsx:152"}, "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-2b40d5173660f4c0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/invoices/recurring/page.tsx:179", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/invoices/recurring/page.tsx:179"}, "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-01dc803c9d55cff4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/invoices/[id]/page.tsx:692", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/invoices/[id]/page.tsx:692"}, "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-ab3e11edd90b4aec", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/invoices/[id]/edit/page.tsx:93", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/invoices/[id]/edit/page.tsx:93"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fe3df5f7831fa99d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/sign/[token]/page.tsx:236", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/sign/[token]/page.tsx:236"}, "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-319039d79c995ba7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/tenants/[id]/tenant-actions.tsx:47", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/tenants/[id]/tenant-actions.tsx:47"}, "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-c110f42bb9425788", "name": "Commented-code block (6 lines) in src/app/admin/tenants/[id]/edit/page.tsx:569", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/admin/tenants/[id]/edit/page.tsx:569"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-90b6f5ded2064279", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/tenants/[id]/edit/page.tsx:113", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/tenants/[id]/edit/page.tsx:113"}, "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-a33d7e5a5922cf78", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/plans/plans-client.tsx:61", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/plans/plans-client.tsx:61"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3c4fbab53d12c156", "name": "Commented-code block (6 lines) in src/app/f/[slug]/page.tsx:28", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/f/[slug]/page.tsx:28"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9f6eb423a74c0531", "name": "Commented-code block (6 lines) in src/app/(auth)/layout.tsx:7", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/(auth)/layout.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-bd009892d1a81b2e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(public)/_custom-domain/page.tsx:229", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(public)/_custom-domain/page.tsx:229"}, "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-620cfbb9b6c5f41f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(public)/p/[slug]/page.tsx:117", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(public)/p/[slug]/page.tsx:117"}, "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-1583f557ae486de3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(public)/events/[id]/register/page.tsx:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(public)/events/[id]/register/page.tsx:27"}, "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-9597a7762bc61437", "name": "Commented-code block (5 lines) in src/lib/project-rollup.ts:59", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/project-rollup.ts:59"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b730e4fe99b0d422", "name": "Commented-code block (7 lines) in src/lib/auth.ts:226", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/auth.ts:226"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6e1c41d3d6a880f4", "name": "Commented-code block (6 lines) in src/lib/mtm-validators.ts:121", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/mtm-validators.ts:121"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4afb8dcf480ed4f5", "name": "Commented-code block (5 lines) in src/lib/permissions.ts:25", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/permissions.ts:25"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-90aa571d88694686", "name": "Commented-code block (7 lines) in src/lib/plan-limits.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/plan-limits.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-41fb83df0b01d51a", "name": "Commented-code block (10 lines) in src/lib/nav-items.ts:86", "shortDescription": {"text": "Commented-code block (10 lines) in src/lib/nav-items.ts:86"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f8e3dee6d3b542bc", "name": "Commented-code block (5 lines) in src/lib/sms.ts:55", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/sms.ts:55"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-67004fc7cb115d9b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/push-client.ts:58", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/push-client.ts:58"}, "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-30b636003dbf8008", "name": "Commented-code block (5 lines) in src/lib/api-auth.ts:164", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/api-auth.ts:164"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-198655d60341d5d0", "name": "Commented-code block (6 lines) in src/lib/rls-context.ts:33", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/rls-context.ts:33"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-32c95fa9e9e18399", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/vkontakte.ts:15", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/vkontakte.ts:15"}, "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-551d81664255ec37", "name": "Commented-code block (13 lines) in src/lib/tenant-plans.ts:1", "shortDescription": {"text": "Commented-code block (13 lines) in src/lib/tenant-plans.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-54602c4664b45de4", "name": "Commented-code block (6 lines) in src/lib/rate-limit.ts:12", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/rate-limit.ts:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c1f95e3a00380438", "name": "Commented-code block (5 lines) in src/lib/whatsapp.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/whatsapp.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-13bdb6d498ef2f87", "name": "Commented-code block (7 lines) in src/lib/journey-engine.ts:176", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/journey-engine.ts:176"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5910de7b38ba3a7d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/journey-engine.ts:188", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/journey-engine.ts:188"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f5466cb6de0c5180", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/cloudflare-dns.ts:104", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/cloudflare-dns.ts:104"}, "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-7accb491e0d43428", "name": "Commented-code block (6 lines) in src/lib/sanitize.ts:82", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/sanitize.ts:82"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c5101bd5029676d9", "name": "Commented-code block (5 lines) in src/lib/survey-triggers.ts:73", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/survey-triggers.ts:73"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1a3d497bd02d8042", "name": "Commented-code block (6 lines) in src/lib/report-engine.ts:216", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/report-engine.ts:216"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7e48c5bc81ecd7d5", "name": "Commented-code block (5 lines) in src/lib/marketing-data.ts:104", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/marketing-data.ts:104"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-592f00724df395b9", "name": "Commented-code block (5 lines) in src/lib/tenant-domain.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/tenant-domain.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-ecc3590425c2a8b2", "name": "Commented-code block (6 lines) in src/lib/modules.ts:69", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/modules.ts:69"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c11ebd91a3d10a3", "name": "Commented-code block (8 lines) in src/lib/shelf-analysis/golden-slots.ts:123", "shortDescription": {"text": "Commented-code block (8 lines) in src/lib/shelf-analysis/golden-slots.ts:123"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1d82857783c49594", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/shelf-analysis/providers/roboflow.ts:59", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/shelf-analysis/providers/roboflow.ts:59"}, "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-bb20ac8da9e9919d", "name": "Commented-code block (5 lines) in src/lib/advertising-studio/audience-payload-builder.ts:137", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/advertising-studio/audience-payload-builder.ts:137"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b5c482ddab4406f7", "name": "Commented-code block (5 lines) in src/lib/inventory/low-stock-detector.ts:55", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/inventory/low-stock-detector.ts:55"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d023ec983f64b93d", "name": "Commented-code block (5 lines) in src/lib/marketing-attribution/model-config-validator.ts:201", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/marketing-attribution/model-config-validator.ts:201"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f636a2e05eebfde9", "name": "Commented-code block (5 lines) in src/lib/marketing-attribution/recompute-worker.ts:195", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/marketing-attribution/recompute-worker.ts:195"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fd82a90b5dca12c1", "name": "Commented-code block (8 lines) in src/lib/marketing-attribution/revenue-allocator.ts:120", "shortDescription": {"text": "Commented-code block (8 lines) in src/lib/marketing-attribution/revenue-allocator.ts:120"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e233379165fef489", "name": "Commented-code block (5 lines) in src/lib/marketing-attribution/attribution-model-evaluator.ts:191", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/marketing-attribution/attribution-model-evaluator.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-cdbaafd115999656", "name": "Commented-code block (6 lines) in src/lib/segment-activation/schedule-evaluator.ts:213", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/segment-activation/schedule-evaluator.ts:213"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-327ba32cab6b0851", "name": "Commented-code block (7 lines) in src/lib/notifications/access.ts:79", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/notifications/access.ts:79"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-75fe14c66e3c02df", "name": "Commented-code block (5 lines) in src/lib/tax/providers/local.ts:135", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/tax/providers/local.ts:135"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-91813172f74d23d6", "name": "Commented-code block (9 lines) in src/lib/ai/anthropic-client.ts:5", "shortDescription": {"text": "Commented-code block (9 lines) in src/lib/ai/anthropic-client.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-33b330051756f9dc", "name": "Commented-code block (6 lines) in src/lib/ai/predictive.ts:102", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/ai/predictive.ts:102"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5f2fcab36cd8c148", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/ai/embeddings.ts:15", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/ai/embeddings.ts:15"}, "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-75cf54d5a3769166", "name": "Commented-code block (5 lines) in src/lib/ai/pii-masker.ts:126", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/ai/pii-masker.ts:126"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a833cb120842014a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/crypto/tenant-pii-encryption.ts:26", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/crypto/tenant-pii-encryption.ts:26"}, "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-3a50654a5be2d9cb", "name": "Commented-code block (6 lines) in src/lib/mtm/shelf-backstop.ts:89", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/mtm/shelf-backstop.ts:89"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6c2e5f55f3a37969", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/mtm/price-ocr/google-vision-provider.ts:171", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/mtm/price-ocr/google-vision-provider.ts:171"}, "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-70c8fc2a4ef515bd", "name": "Commented-code block (5 lines) in src/lib/clm/contract-pdf.ts:242", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/clm/contract-pdf.ts:242"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f0aa724aaf1bc271", "name": "Commented-code block (7 lines) in src/lib/clm/serialize-body.ts:118", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/clm/serialize-body.ts:118"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ab5732e721c791be", "name": "Commented-code block (7 lines) in src/lib/apex/api-surface.ts:125", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/apex/api-surface.ts:125"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-06d52d2b2c1a3ffd", "name": "Commented-code block (5 lines) in src/lib/apex/node-vm-executor.ts:136", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/apex/node-vm-executor.ts:136"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6dd1fae6e3736e56", "name": "Commented-code block (5 lines) in src/lib/apex/engine.ts:47", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/apex/engine.ts:47"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1138eefc35a9584f", "name": "Commented-code block (5 lines) in src/lib/activity-capture/engine.ts:77", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/activity-capture/engine.ts:77"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-39874a082a7a548c", "name": "Commented-code block (6 lines) in src/lib/media/content-metric-aggregator.ts:115", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/media/content-metric-aggregator.ts:115"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-daeba555f5faf9c0", "name": "Commented-code block (5 lines) in src/lib/apps/manifest-parser.ts:24", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/apps/manifest-parser.ts:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-31be5582be86483e", "name": "Commented-code block (6 lines) in src/lib/unified-profile/identity-keys.ts:88", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/unified-profile/identity-keys.ts:88"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dcda8e1d41c2ccb9", "name": "Commented-code block (5 lines) in src/lib/unified-profile/profile-builder.ts:174", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/unified-profile/profile-builder.ts:174"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fa8ce731a0b065df", "name": "Commented-code block (7 lines) in src/lib/recurrence/spawn.ts:92", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/recurrence/spawn.ts:92"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e89f8672e6258cb5", "name": "Commented-code block (5 lines) in src/lib/recurrence/parse.ts:153", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/recurrence/parse.ts:153"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ef7b6db8406692bc", "name": "Commented-code block (5 lines) in src/lib/cpq/quote-pdf.ts:290", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/cpq/quote-pdf.ts:290"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cbd5c4a757ef38b0", "name": "Commented-code block (5 lines) in src/lib/cpq/spawn-contract.ts:57", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/cpq/spawn-contract.ts:57"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-218b496ea83a09db", "name": "Commented-code block (5 lines) in src/lib/loyalty/promo-validator.ts:102", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/loyalty/promo-validator.ts:102"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ca76665903b2a5c6", "name": "Commented-code block (7 lines) in src/lib/loyalty/discount-calculator.ts:32", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/loyalty/discount-calculator.ts:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-907327c97cb40c9d", "name": "Commented-code block (5 lines) in src/lib/loyalty/expiry-cron.ts:200", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/loyalty/expiry-cron.ts:200"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1293f76f93605c14", "name": "Commented-code block (6 lines) in src/lib/loyalty/points-engine.ts:74", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/loyalty/points-engine.ts:74"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-facfc35937849c67", "name": "Commented-code block (5 lines) in src/lib/loyalty/earn-pipeline.ts:144", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/loyalty/earn-pipeline.ts:144"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0d515a6f7bfd224e", "name": "Commented-code block (5 lines) in src/lib/loyalty/redemption-helpers.ts:67", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/loyalty/redemption-helpers.ts:67"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-048384a5131b684d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/cost-model/hooks.ts:20", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/cost-model/hooks.ts:20"}, "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-635014b813d48219", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/finance/hooks.ts:35", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/finance/hooks.ts:35"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-60d00807fd3bb2d6", "name": "Commented-code block (6 lines) in src/lib/external-services/client.ts:75", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/external-services/client.ts:75"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-205500d59a9b8446", "name": "Commented-code block (6 lines) in src/lib/education/term-resolver.ts:39", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/education/term-resolver.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-978c75c6432fb8f6", "name": "Commented-code block (5 lines) in src/lib/education/enrollment-validator.ts:99", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/education/enrollment-validator.ts:99"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-06ad420b66b89c9f", "name": "Commented-code block (14 lines) in src/lib/platform-events/payload-validator.ts:110", "shortDescription": {"text": "Commented-code block (14 lines) in src/lib/platform-events/payload-validator.ts:110"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-875ae48b1a2a1951", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/social/vk-poller.ts:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/social/vk-poller.ts:23"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9035f9ac0b94c133", "name": "Commented-code block (7 lines) in src/lib/social/inbox-channel.ts:29", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/social/inbox-channel.ts:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a29810fea5249381", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/social/telegram-scanner.ts:71", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/social/telegram-scanner.ts:71"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ab71b7f3e320fd96", "name": "Commented-code block (6 lines) in src/lib/social/facebook-poller.ts:48", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/social/facebook-poller.ts:48"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-76d3a99aed5f8348", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/social/facebook-poller.ts:56", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/social/facebook-poller.ts:56"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a1e4e63ca6373c1a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/social/twitter-poller.ts:47", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/social/twitter-poller.ts:47"}, "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-321a433656f10ef5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/social/tiktok-poller.ts:25", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/social/tiktok-poller.ts:25"}, "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-b0e86afa93c31d36", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/social/youtube-poller.ts:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/social/youtube-poller.ts:23"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-334527ca494c4edb", "name": "Commented-code block (7 lines) in src/lib/social/tenant-meta-app.ts:32", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/social/tenant-meta-app.ts:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6e5d0b5fdd287f35", "name": "Commented-code block (7 lines) in src/lib/esign/audit-event-builder.ts:98", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/esign/audit-event-builder.ts:98"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-01c82b4facc5f421", "name": "Commented-code block (5 lines) in src/lib/esign/token-issuer.ts:85", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/esign/token-issuer.ts:85"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6a1589c956e28b9d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/budgeting/hooks.ts:26", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/budgeting/hooks.ts:26"}, "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-6fc0057dcfeaa875", "name": "Commented-code block (6 lines) in src/lib/queue/worker.ts:160", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/queue/worker.ts:160"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7401da1b0af7bec4", "name": "Commented-code block (5 lines) in src/lib/queue/jobs/shelf-analysis.ts:30", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/queue/jobs/shelf-analysis.ts:30"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f2414bf7cbc4aace", "name": "Legacy-named symbol `deletedUsedOld` in src/lib/queue/jobs/otp-cleanup.ts:13", "shortDescription": {"text": "Legacy-named symbol `deletedUsedOld` in src/lib/queue/jobs/otp-cleanup.ts:13"}, "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-59176062514fc510", "name": "Commented-code block (5 lines) in src/lib/queue/jobs/erp-order-push.ts:47", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/queue/jobs/erp-order-push.ts:47"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-df59f1eca897dbbd", "name": "Commented-code block (6 lines) in src/lib/data-cloud-segmentation/query-validator.ts:157", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/data-cloud-segmentation/query-validator.ts:157"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6f156ed13b50639b", "name": "Commented-code block (5 lines) in src/lib/calculated-insights/days-since-last-purchase.ts:52", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/calculated-insights/days-since-last-purchase.ts:52"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5668c4d4f379e193", "name": "Commented-code block (5 lines) in src/lib/calculated-insights/compute-org-insights.ts:107", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/calculated-insights/compute-org-insights.ts:107"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2d60112f9db58c16", "name": "Legacy-named symbol `hex_legacy` in src/lib/payments/providers/stripe.ts:46", "shortDescription": {"text": "Legacy-named symbol `hex_legacy` in src/lib/payments/providers/stripe.ts:46"}, "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-0af87bd678fde064", "name": "Commented-code block (5 lines) in src/lib/contract-lifecycle/upsert-renewal-alerts.ts:64", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/contract-lifecycle/upsert-renewal-alerts.ts:64"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-df2b80388fadb4e3", "name": "Commented-code block (6 lines) in src/lib/contract-lifecycle/renewal-alert-scheduler.ts:67", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/contract-lifecycle/renewal-alert-scheduler.ts:67"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-da003d78557c1650", "name": "Commented-code block (5 lines) in src/lib/contract-lifecycle/clause-substituter.ts:231", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/contract-lifecycle/clause-substituter.ts:231"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9411e96599f6a94f", "name": "Commented-code block (6 lines) in src/lib/form-builder/validate-submission.ts:31", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/form-builder/validate-submission.ts:31"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7fee039786b52561", "name": "Commented-code block (5 lines) in src/lib/oms/return-quantity-validator.ts:68", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/oms/return-quantity-validator.ts:68"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-724d4ca35f10b096", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/voip/providers/twilio.ts:40", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/voip/providers/twilio.ts:40"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-14017b080f79db67", "name": "Commented-code block (8 lines) in src/lib/headless-commerce/tenant-from-host.ts:47", "shortDescription": {"text": "Commented-code block (8 lines) in src/lib/headless-commerce/tenant-from-host.ts:47"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bb20f2a4894b0121", "name": "Commented-code block (5 lines) in src/lib/subscriptions/subscription-state-machine.ts:56", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/subscriptions/subscription-state-machine.ts:56"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b83a883785eda0a1", "name": "Commented-code block (5 lines) in src/lib/subscriptions/dunning-scheduler.ts:69", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/subscriptions/dunning-scheduler.ts:69"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8356fffee76b18ec", "name": "Commented-code block (5 lines) in src/lib/subscriptions/proration-calculator.ts:78", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/subscriptions/proration-calculator.ts:78"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e138ab5ed0506172", "name": "Commented-code block (5 lines) in src/lib/identity-resolution/merge-resolver.ts:32", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/identity-resolution/merge-resolver.ts:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ccc7178b16cf0257", "name": "Commented-code block (10 lines) in src/lib/app-builder/widget-validator.ts:205", "shortDescription": {"text": "Commented-code block (10 lines) in src/lib/app-builder/widget-validator.ts:205"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3d77f2e84f123fcc", "name": "Commented-code block (7 lines) in src/lib/public-sector/license-expiration-calculator.ts:100", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/public-sector/license-expiration-calculator.ts:100"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8cefb07da3238faa", "name": "Commented-code block (5 lines) in src/lib/rollup/filter.ts:29", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/rollup/filter.ts:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9754d5638c3c5165", "name": "Commented-code block (5 lines) in src/lib/entitlement-process/entitlement-lifecycle.ts:39", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/entitlement-process/entitlement-lifecycle.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-357425707bd80d0e", "name": "Commented-code block (5 lines) in src/lib/energy-utilities/meter-reading-validator.ts:130", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/energy-utilities/meter-reading-validator.ts:130"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1e694c302ba8fbd5", "name": "Commented-code block (5 lines) in src/lib/energy-utilities/types.ts:94", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/energy-utilities/types.ts:94"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c4e5872241839b2", "name": "Commented-code block (6 lines) in src/lib/omnistudio/flex-card-validator.ts:69", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/omnistudio/flex-card-validator.ts:69"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e0e2c7480015cb56", "name": "Commented-code block (6 lines) in src/lib/revenue-recognition/recognition-calculator.ts:102", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/revenue-recognition/recognition-calculator.ts:102"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b99a09943ccdf30f", "name": "Commented-code block (6 lines) in src/lib/revenue-recognition/allocation-engine.ts:109", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/revenue-recognition/allocation-engine.ts:109"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-52f5ffdc37adc32f", "name": "Commented-code block (5 lines) in src/lib/revenue-recognition/schedule-generator.ts:165", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/revenue-recognition/schedule-generator.ts:165"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c3d8a32f5bdf364b", "name": "Commented-code block (5 lines) in src/lib/revenue-recognition/decimal-minor.ts:115", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/revenue-recognition/decimal-minor.ts:115"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f9b3f98e2950eedf", "name": "Commented-code block (5 lines) in src/lib/distributed-marketing/template-variable-validator.ts:98", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/distributed-marketing/template-variable-validator.ts:98"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a85a2e5fecbac43c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/use-field-permissions.ts:14", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/use-field-permissions.ts:14"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fcdd1307187b61cc", "name": "98 env vars used in code but missing from .env.example", "shortDescription": {"text": "98 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ADMIN_PASSWORD`, `APP_DIR`, `APP_PORT`, `APP_URL`, `ATL_`, `ATL_ENDPOINT`, `ATL_LOGIN`, `ATL_PASSWORD` + 90 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\n.claude/skills/design/scripts/cip/core.py:tokenize, .claude/skills/design/scripts/logo/core.py:tokenize, .claude/skills/design-system/scripts/slide_search_core.py:tokenize, .claude/skills/ui-ux-pro-max/scripts/core.py:tokenize\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\n.claude/skills/design/scripts/cip/core.py:search_all, .claude/skills/design/scripts/logo/core.py:search_all\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-415b40d14b87442d", "name": "FastAPI POST `post_analytics` without auth dependency \u2014 services/compute/routes/cost_model.py:23", "shortDescription": {"text": "FastAPI POST `post_analytics` without auth dependency \u2014 services/compute/routes/cost_model.py:23"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e60f591a91be33f9", "name": "FastAPI POST `score_lead` without auth dependency \u2014 services/compute/routes/ai.py:7", "shortDescription": {"text": "FastAPI POST `score_lead` without auth dependency \u2014 services/compute/routes/ai.py:7"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-efe6be6cf6fe43a1", "name": "FastAPI POST `suggest_reply` without auth dependency \u2014 services/compute/routes/ai.py:13", "shortDescription": {"text": "FastAPI POST `suggest_reply` without auth dependency \u2014 services/compute/routes/ai.py:13"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2ae52f405b57e20c", "name": "FastAPI POST `analyze` without auth dependency \u2014 services/compute/routes/ai.py:19", "shortDescription": {"text": "FastAPI POST `analyze` without auth dependency \u2014 services/compute/routes/ai.py:19"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e77ce58d60e10451", "name": "FastAPI POST `chat` without auth dependency \u2014 services/compute/routes/ai.py:25", "shortDescription": {"text": "FastAPI POST `chat` without auth dependency \u2014 services/compute/routes/ai.py:25"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4f69bed704585269", "name": "Dangling fetch: GET /api/v1/users (scripts/xss-exploit.mjs:141)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users (scripts/xss-exploit.mjs:141)"}, "fullDescription": {"text": "`scripts/xss-exploit.mjs:141` calls `GET /api/v1/users` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7174ff2dd1f514fd", "name": "Dangling fetch: GET https://graph.facebook.com/v21.0/debug_token?input_token=${token}&access_token=${process.env.FACEBOO", "shortDescription": {"text": "Dangling fetch: GET https://graph.facebook.com/v21.0/debug_token?input_token=${token}&access_token=${process.env.FACEBOOK_APP_ID}|${process.env.FACEBOOK_APP_SECRET} (scripts/check-fb-token.mjs:27)"}, "fullDescription": {"text": "`scripts/check-fb-token.mjs:27` calls `GET https://graph.facebook.com/v21.0/debug_token?input_token=${token}&access_token=${process.env.FACEBOOK_APP_ID}|${process.env.FACEBOOK_APP_SECRET}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.facebook.com/v21.0/debug_token`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1477800699283ed1", "name": "Dangling fetch: GET https://graph.facebook.com/v21.0/me?access_token=${token} (scripts/check-fb-token.mjs:32)", "shortDescription": {"text": "Dangling fetch: GET https://graph.facebook.com/v21.0/me?access_token=${token} (scripts/check-fb-token.mjs:32)"}, "fullDescription": {"text": "`scripts/check-fb-token.mjs:32` calls `GET https://graph.facebook.com/v21.0/me?access_token=${token}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.facebook.com/v21.0/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-25f7908146a4f6b7", "name": "Dangling fetch: POST https://api.telegram.org/bot${BOT_TOKEN}/sendMessage (src/instrumentation.ts:113)", "shortDescription": {"text": "Dangling fetch: POST https://api.telegram.org/bot${BOT_TOKEN}/sendMessage (src/instrumentation.ts:113)"}, "fullDescription": {"text": "`src/instrumentation.ts:113` calls `POST https://api.telegram.org/bot${BOT_TOKEN}/sendMessage` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.telegram.org/bot/<p>/sendmessage`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1c259dba8a9331d7", "name": "Dangling fetch: POST https://api.telegram.org/bot${BOT_TOKEN}/sendMessage (src/instrumentation.ts:128)", "shortDescription": {"text": "Dangling fetch: POST https://api.telegram.org/bot${BOT_TOKEN}/sendMessage (src/instrumentation.ts:128)"}, "fullDescription": {"text": "`src/instrumentation.ts:128` calls `POST https://api.telegram.org/bot${BOT_TOKEN}/sendMessage` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.telegram.org/bot/<p>/sendmessage`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-efb2960f0776249d", "name": "Dangling fetch: POST https://api.resend.com/emails (src/__tests__/email-providers.test.ts:34)", "shortDescription": {"text": "Dangling fetch: POST https://api.resend.com/emails (src/__tests__/email-providers.test.ts:34)"}, "fullDescription": {"text": "`src/__tests__/email-providers.test.ts:34` calls `POST https://api.resend.com/emails` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.resend.com/emails`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-51316070eede0cd2", "name": "Dangling fetch: POST https://api.postmarkapp.com/email (src/__tests__/email-providers.test.ts:57)", "shortDescription": {"text": "Dangling fetch: POST https://api.postmarkapp.com/email (src/__tests__/email-providers.test.ts:57)"}, "fullDescription": {"text": "`src/__tests__/email-providers.test.ts:57` calls `POST https://api.postmarkapp.com/email` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.postmarkapp.com/email`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-334b83364d192a21", "name": "Dangling fetch: POST https://api.postmarkapp.com/email (src/__tests__/email-providers.test.ts:85)", "shortDescription": {"text": "Dangling fetch: POST https://api.postmarkapp.com/email (src/__tests__/email-providers.test.ts:85)"}, "fullDescription": {"text": "`src/__tests__/email-providers.test.ts:85` calls `POST https://api.postmarkapp.com/email` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.postmarkapp.com/email`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-08187cc580d269ac", "name": "Dangling fetch: POST https://api.resend.com/emails (src/__tests__/email-providers.test.ts:99)", "shortDescription": {"text": "Dangling fetch: POST https://api.resend.com/emails (src/__tests__/email-providers.test.ts:99)"}, "fullDescription": {"text": "`src/__tests__/email-providers.test.ts:99` calls `POST https://api.resend.com/emails` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.resend.com/emails`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-489d8667c4f4b1a4", "name": "Dangling fetch: GET /api/budgeting/cost-types?includeInactive=false (src/components/expense-forecast-tab.tsx:81)", "shortDescription": {"text": "Dangling fetch: GET /api/budgeting/cost-types?includeInactive=false (src/components/expense-forecast-tab.tsx:81)"}, "fullDescription": {"text": "`src/components/expense-forecast-tab.tsx:81` calls `GET /api/budgeting/cost-types?includeInactive=false` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/cost-types`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ffdf02221b571422", "name": "Dangling fetch: GET /api/budgeting/departments?includeInactive=false (src/components/expense-forecast-tab.tsx:82)", "shortDescription": {"text": "Dangling fetch: GET /api/budgeting/departments?includeInactive=false (src/components/expense-forecast-tab.tsx:82)"}, "fullDescription": {"text": "`src/components/expense-forecast-tab.tsx:82` calls `GET /api/budgeting/departments?includeInactive=false` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/departments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6a7c57fc0a2170fa", "name": "Dangling fetch: GET /api/budgeting/expense-forecast?year=${year} (src/components/expense-forecast-tab.tsx:83)", "shortDescription": {"text": "Dangling fetch: GET /api/budgeting/expense-forecast?year=${year} (src/components/expense-forecast-tab.tsx:83)"}, "fullDescription": {"text": "`src/components/expense-forecast-tab.tsx:83` calls `GET /api/budgeting/expense-forecast?year=${year}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/expense-forecast`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2ea05316321adfe1", "name": "Dangling fetch: GET /api/cost-model/compute (src/components/expense-forecast-tab.tsx:84)", "shortDescription": {"text": "Dangling fetch: GET /api/cost-model/compute (src/components/expense-forecast-tab.tsx:84)"}, "fullDescription": {"text": "`src/components/expense-forecast-tab.tsx:84` calls `GET /api/cost-model/compute` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/cost-model/compute`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-764dcc06141feffa", "name": "Dangling fetch: POST /api/budgeting/expense-forecast (src/components/expense-forecast-tab.tsx:187)", "shortDescription": {"text": "Dangling fetch: POST /api/budgeting/expense-forecast (src/components/expense-forecast-tab.tsx:187)"}, "fullDescription": {"text": "`src/components/expense-forecast-tab.tsx:187` calls `POST /api/budgeting/expense-forecast` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/expense-forecast`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f77099113e897a7e", "name": "Dangling fetch: GET /api/v1/companies/${company.id} (src/components/lead-detail-modal.tsx:108)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/companies/${company.id} (src/components/lead-detail-modal.tsx:108)"}, "fullDescription": {"text": "`src/components/lead-detail-modal.tsx:108` calls `GET /api/v1/companies/${company.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/companies/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-45da3d1c8bb39cac", "name": "Dangling fetch: PUT /api/v1/companies/${company.id} (src/components/lead-detail-modal.tsx:123)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/companies/${company.id} (src/components/lead-detail-modal.tsx:123)"}, "fullDescription": {"text": "`src/components/lead-detail-modal.tsx:123` calls `PUT /api/v1/companies/${company.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/companies/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9999ecfaff02be72", "name": "Dangling fetch: GET /api/v1/companies/${company.id} (src/components/lead-detail-modal.tsx:129)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/companies/${company.id} (src/components/lead-detail-modal.tsx:129)"}, "fullDescription": {"text": "`src/components/lead-detail-modal.tsx:129` calls `GET /api/v1/companies/${company.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/companies/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b66f15a066992650", "name": "Dangling fetch: GET /api/v1/activities?companyId=${company.id} (src/components/lead-detail-modal.tsx:152)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/activities?companyId=${company.id} (src/components/lead-detail-modal.tsx:152)"}, "fullDescription": {"text": "`src/components/lead-detail-modal.tsx:152` calls `GET /api/v1/activities?companyId=${company.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/activities`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-405bf751c06162df", "name": "Dangling fetch: POST /api/v1/activities (src/components/lead-detail-modal.tsx:164)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/activities (src/components/lead-detail-modal.tsx:164)"}, "fullDescription": {"text": "`src/components/lead-detail-modal.tsx:164` calls `POST /api/v1/activities` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/activities`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-277a798240be361f", "name": "Dangling fetch: GET /api/v1/tickets?companyId=${company.id} (src/components/lead-detail-modal.tsx:191)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/tickets?companyId=${company.id} (src/components/lead-detail-modal.tsx:191)"}, "fullDescription": {"text": "`src/components/lead-detail-modal.tsx:191` calls `GET /api/v1/tickets?companyId=${company.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tickets`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-137c8dbc7bb009bc", "name": "Dangling fetch: DELETE /api/v1/contacts/${c.id} (src/components/lead-detail-modal.tsx:463)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/contacts/${c.id} (src/components/lead-detail-modal.tsx:463)"}, "fullDescription": {"text": "`src/components/lead-detail-modal.tsx:463` calls `DELETE /api/v1/contacts/${c.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contacts/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d5e732a5a00aa09c", "name": "Dangling fetch: GET /api/v1/companies/${company.id} (src/components/lead-detail-modal.tsx:464)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/companies/${company.id} (src/components/lead-detail-modal.tsx:464)"}, "fullDescription": {"text": "`src/components/lead-detail-modal.tsx:464` calls `GET /api/v1/companies/${company.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/companies/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d79577ea4ac4d418", "name": "Dangling fetch: DELETE /api/v1/companies/${company.id} (src/components/lead-detail-modal.tsx:667)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/companies/${company.id} (src/components/lead-detail-modal.tsx:667)"}, "fullDescription": {"text": "`src/components/lead-detail-modal.tsx:667` calls `DELETE /api/v1/companies/${company.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/companies/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-16bd522dfb826fab", "name": "Dangling fetch: GET /api/v1/notifications?entityType=inbox_message (src/components/sidebar.tsx:143)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/notifications?entityType=inbox_message (src/components/sidebar.tsx:143)"}, "fullDescription": {"text": "`src/components/sidebar.tsx:143` calls `GET /api/v1/notifications?entityType=inbox_message` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/notifications`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-95a9b2437fffa86a", "name": "Dangling fetch: GET /api/v1/email-templates?limit=500 (src/components/campaign-form.tsx:128)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/email-templates?limit=500 (src/components/campaign-form.tsx:128)"}, "fullDescription": {"text": "`src/components/campaign-form.tsx:128` calls `GET /api/v1/email-templates?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/email-templates`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cb66446b35b0bd12", "name": "Dangling fetch: GET /api/v1/segments?limit=500 (src/components/campaign-form.tsx:134)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/segments?limit=500 (src/components/campaign-form.tsx:134)"}, "fullDescription": {"text": "`src/components/campaign-form.tsx:134` calls `GET /api/v1/segments?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/segments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5988a1a27a9eb8d7", "name": "Dangling fetch: GET /api/v1/contacts?limit=1000 (src/components/campaign-form.tsx:140)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contacts?limit=1000 (src/components/campaign-form.tsx:140)"}, "fullDescription": {"text": "`src/components/campaign-form.tsx:140` calls `GET /api/v1/contacts?limit=1000` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contacts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a94e786e202a7f32", "name": "Dangling fetch: GET /api/v1/leads?limit=1&page=1 (src/components/campaign-form.tsx:146)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/leads?limit=1&page=1 (src/components/campaign-form.tsx:146)"}, "fullDescription": {"text": "`src/components/campaign-form.tsx:146` calls `GET /api/v1/leads?limit=1&page=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/leads`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b2c4d1bd93b34dde", "name": "Dangling fetch: GET /api/v1/campaigns/${initialData.id}/variants (src/components/campaign-form.tsx:191)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/campaigns/${initialData.id}/variants (src/components/campaign-form.tsx:191)"}, "fullDescription": {"text": "`src/components/campaign-form.tsx:191` calls `GET /api/v1/campaigns/${initialData.id}/variants` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/campaigns/<p>/variants`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-076f274f2fe498ef", "name": "Dangling fetch: PUT /api/v1/campaigns/${campaignId}/variants/${v.id} (src/components/campaign-form.tsx:265)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/campaigns/${campaignId}/variants/${v.id} (src/components/campaign-form.tsx:265)"}, "fullDescription": {"text": "`src/components/campaign-form.tsx:265` calls `PUT /api/v1/campaigns/${campaignId}/variants/${v.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/campaigns/<p>/variants/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6b24777682d37eb7", "name": "Dangling fetch: POST /api/v1/campaigns/${campaignId}/variants (src/components/campaign-form.tsx:272)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/campaigns/${campaignId}/variants (src/components/campaign-form.tsx:272)"}, "fullDescription": {"text": "`src/components/campaign-form.tsx:272` calls `POST /api/v1/campaigns/${campaignId}/variants` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/campaigns/<p>/variants`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-230dee2abd72a994", "name": "Dangling fetch: POST /api/v1/tickets/ai-categorize (src/components/ticket-form.tsx:72)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/tickets/ai-categorize (src/components/ticket-form.tsx:72)"}, "fullDescription": {"text": "`src/components/ticket-form.tsx:72` calls `POST /api/v1/tickets/ai-categorize` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tickets/ai-categorize`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cce9bceb9966632e", "name": "Dangling fetch: GET /api/v1/companies?limit=200 (src/components/ticket-form.tsx:125)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/companies?limit=200 (src/components/ticket-form.tsx:125)"}, "fullDescription": {"text": "`src/components/ticket-form.tsx:125` calls `GET /api/v1/companies?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/companies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-66efcb50ea619683", "name": "Dangling fetch: GET /api/v1/contacts?limit=200 (src/components/ticket-form.tsx:126)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contacts?limit=200 (src/components/ticket-form.tsx:126)"}, "fullDescription": {"text": "`src/components/ticket-form.tsx:126` calls `GET /api/v1/contacts?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contacts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-57f18c9e9348a8e5", "name": "Dangling fetch: GET /api/v1/users (src/components/ticket-form.tsx:127)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users (src/components/ticket-form.tsx:127)"}, "fullDescription": {"text": "`src/components/ticket-form.tsx:127` calls `GET /api/v1/users` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-35c8d14b2a066154", "name": "Dangling fetch: POST /api/v1/tickets/${newId}/convert-to-complaint (src/components/ticket-form.tsx:175)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/tickets/${newId}/convert-to-complaint (src/components/ticket-form.tsx:175)"}, "fullDescription": {"text": "`src/components/ticket-form.tsx:175` calls `POST /api/v1/tickets/${newId}/convert-to-complaint` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tickets/<p>/convert-to-complaint`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e735355d7ea90336", "name": "Dangling fetch: GET /api/v1/digest-subscriptions (src/components/digest-subscriptions-panel.tsx:80)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/digest-subscriptions (src/components/digest-subscriptions-panel.tsx:80)"}, "fullDescription": {"text": "`src/components/digest-subscriptions-panel.tsx:80` calls `GET /api/v1/digest-subscriptions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/digest-subscriptions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fcd315e618d02965", "name": "Dangling fetch: PUT /api/v1/digest-subscriptions (src/components/digest-subscriptions-panel.tsx:122)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/digest-subscriptions (src/components/digest-subscriptions-panel.tsx:122)"}, "fullDescription": {"text": "`src/components/digest-subscriptions-panel.tsx:122` calls `PUT /api/v1/digest-subscriptions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/digest-subscriptions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e2841a258e333296", "name": "Dangling fetch: POST /api/v1/digest-subscriptions/test (src/components/digest-subscriptions-panel.tsx:140)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/digest-subscriptions/test (src/components/digest-subscriptions-panel.tsx:140)"}, "fullDescription": {"text": "`src/components/digest-subscriptions-panel.tsx:140` calls `POST /api/v1/digest-subscriptions/test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/digest-subscriptions/test`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d1c0bdafee54c7e9", "name": "Dangling fetch: POST /api/v1/channels/sms/test (src/components/channel-config-form.tsx:628)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/channels/sms/test (src/components/channel-config-form.tsx:628)"}, "fullDescription": {"text": "`src/components/channel-config-form.tsx:628` calls `POST /api/v1/channels/sms/test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/channels/sms/test`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-502c03819d1ffda4", "name": "Dangling fetch: GET /api/v1/companies?limit=500&category=all (src/components/contract-form.tsx:80)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/companies?limit=500&category=all (src/components/contract-form.tsx:80)"}, "fullDescription": {"text": "`src/components/contract-form.tsx:80` calls `GET /api/v1/companies?limit=500&category=all` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/companies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-80de861590ddc32c", "name": "Dangling fetch: GET /api/v1/deals?limit=500 (src/components/contract-form.tsx:84)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/deals?limit=500 (src/components/contract-form.tsx:84)"}, "fullDescription": {"text": "`src/components/contract-form.tsx:84` calls `GET /api/v1/deals?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-94603a87d5736e48", "name": "Dangling fetch: GET /api/v1/contacts?limit=500 (src/components/contract-form.tsx:88)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contacts?limit=500 (src/components/contract-form.tsx:88)"}, "fullDescription": {"text": "`src/components/contract-form.tsx:88` calls `GET /api/v1/contacts?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contacts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f897c2e2dbcd4dba", "name": "Dangling fetch: GET /api/v1/tickets/new-count?since=${encodeURIComponent(lastCheckedAt)} (src/components/ticket-notifier", "shortDescription": {"text": "Dangling fetch: GET /api/v1/tickets/new-count?since=${encodeURIComponent(lastCheckedAt)} (src/components/ticket-notifier.tsx:61)"}, "fullDescription": {"text": "`src/components/ticket-notifier.tsx:61` calls `GET /api/v1/tickets/new-count?since=${encodeURIComponent(lastCheckedAt)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tickets/new-count`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4386531e062e0eb0", "name": "Dangling fetch: GET /api/v1/calls/active (src/components/voip-call-provider.tsx:38)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/calls/active (src/components/voip-call-provider.tsx:38)"}, "fullDescription": {"text": "`src/components/voip-call-provider.tsx:38` calls `GET /api/v1/calls/active` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/calls/active`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b05d1f98f0c2a43d", "name": "Dangling fetch: GET /api/budgeting/cash-flow/plan-fact?year=${year} (src/components/budget-plan-fact-dashboard.tsx:65)", "shortDescription": {"text": "Dangling fetch: GET /api/budgeting/cash-flow/plan-fact?year=${year} (src/components/budget-plan-fact-dashboard.tsx:65)"}, "fullDescription": {"text": "`src/components/budget-plan-fact-dashboard.tsx:65` calls `GET /api/budgeting/cash-flow/plan-fact?year=${year}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/cash-flow/plan-fact`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ad735c72c5476a48", "name": "Dangling fetch: GET /api/v1/public/portal-chat?sessionId=${saved.sessionId} (src/components/portal-chat-widget.tsx:103)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/public/portal-chat?sessionId=${saved.sessionId} (src/components/portal-chat-widget.tsx:103)"}, "fullDescription": {"text": "`src/components/portal-chat-widget.tsx:103` calls `GET /api/v1/public/portal-chat?sessionId=${saved.sessionId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/portal-chat`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-45b1d054c733032d", "name": "Dangling fetch: GET /api/v1/public/portal-tickets/${ticket.id} (src/components/portal-chat-widget.tsx:167)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/public/portal-tickets/${ticket.id} (src/components/portal-chat-widget.tsx:167)"}, "fullDescription": {"text": "`src/components/portal-chat-widget.tsx:167` calls `GET /api/v1/public/portal-tickets/${ticket.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/portal-tickets/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4aac7007302455c3", "name": "Dangling fetch: POST /api/v1/public/portal-chat (src/components/portal-chat-widget.tsx:266)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/public/portal-chat (src/components/portal-chat-widget.tsx:266)"}, "fullDescription": {"text": "`src/components/portal-chat-widget.tsx:266` calls `POST /api/v1/public/portal-chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/portal-chat`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-78c03a211d5f4907", "name": "Dangling fetch: POST /api/v1/public/portal-tickets (src/components/portal-chat-widget.tsx:324)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/public/portal-tickets (src/components/portal-chat-widget.tsx:324)"}, "fullDescription": {"text": "`src/components/portal-chat-widget.tsx:324` calls `POST /api/v1/public/portal-tickets` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/portal-tickets`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0851514944ffab37", "name": "Dangling fetch: PATCH /api/v1/public/portal-tickets/${csatTicketId} (src/components/portal-chat-widget.tsx:378)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/public/portal-tickets/${csatTicketId} (src/components/portal-chat-widget.tsx:378)"}, "fullDescription": {"text": "`src/components/portal-chat-widget.tsx:378` calls `PATCH /api/v1/public/portal-tickets/${csatTicketId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/portal-tickets/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-86654012d2c7065c", "name": "Dangling fetch: GET /api/v1/users/me (src/components/header.tsx:49)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users/me (src/components/header.tsx:49)"}, "fullDescription": {"text": "`src/components/header.tsx:49` calls `GET /api/v1/users/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-446e04e9d818d955", "name": "Dangling fetch: GET /api/budgeting/departments?includeInactive=false (src/components/sales-forecast-tab.tsx:56)", "shortDescription": {"text": "Dangling fetch: GET /api/budgeting/departments?includeInactive=false (src/components/sales-forecast-tab.tsx:56)"}, "fullDescription": {"text": "`src/components/sales-forecast-tab.tsx:56` calls `GET /api/budgeting/departments?includeInactive=false` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/departments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-84f88f6f76811c5a", "name": "Dangling fetch: GET /api/budgeting/sales-forecast?year=${year} (src/components/sales-forecast-tab.tsx:57)", "shortDescription": {"text": "Dangling fetch: GET /api/budgeting/sales-forecast?year=${year} (src/components/sales-forecast-tab.tsx:57)"}, "fullDescription": {"text": "`src/components/sales-forecast-tab.tsx:57` calls `GET /api/budgeting/sales-forecast?year=${year}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/sales-forecast`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2b9471d19b82b123", "name": "Dangling fetch: POST /api/budgeting/sales-forecast (src/components/sales-forecast-tab.tsx:131)", "shortDescription": {"text": "Dangling fetch: POST /api/budgeting/sales-forecast (src/components/sales-forecast-tab.tsx:131)"}, "fullDescription": {"text": "`src/components/sales-forecast-tab.tsx:131` calls `POST /api/budgeting/sales-forecast` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/sales-forecast`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ef461ad553413712", "name": "Dangling fetch: POST /api/v1/segments/preview (src/components/segment-form.tsx:206)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/segments/preview (src/components/segment-form.tsx:206)"}, "fullDescription": {"text": "`src/components/segment-form.tsx:206` calls `POST /api/v1/segments/preview` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/segments/preview`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6adca8795f0a83e1", "name": "Dangling fetch: GET /api/v1/auth/sms-2fa/status (src/components/sms-2fa-card.tsx:43)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/auth/sms-2fa/status (src/components/sms-2fa-card.tsx:43)"}, "fullDescription": {"text": "`src/components/sms-2fa-card.tsx:43` calls `GET /api/v1/auth/sms-2fa/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/auth/sms-2fa/status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4d425152bfd66b56", "name": "Dangling fetch: POST /api/v1/auth/sms-otp/send (src/components/sms-2fa-card.tsx:73)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/auth/sms-otp/send (src/components/sms-2fa-card.tsx:73)"}, "fullDescription": {"text": "`src/components/sms-2fa-card.tsx:73` calls `POST /api/v1/auth/sms-otp/send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/auth/sms-otp/send`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-51983982589447ac", "name": "Dangling fetch: POST /api/v1/auth/sms-2fa/enable (src/components/sms-2fa-card.tsx:100)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/auth/sms-2fa/enable (src/components/sms-2fa-card.tsx:100)"}, "fullDescription": {"text": "`src/components/sms-2fa-card.tsx:100` calls `POST /api/v1/auth/sms-2fa/enable` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/auth/sms-2fa/enable`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-462b7f560fe9778f", "name": "Dangling fetch: POST /api/v1/auth/sms-2fa/disable (src/components/sms-2fa-card.tsx:123)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/auth/sms-2fa/disable (src/components/sms-2fa-card.tsx:123)"}, "fullDescription": {"text": "`src/components/sms-2fa-card.tsx:123` calls `POST /api/v1/auth/sms-2fa/disable` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/auth/sms-2fa/disable`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0b516cd5a79ed9e8", "name": "Dangling fetch: POST /api/v1/email-templates/upload-image (src/components/email-template-form.tsx:821)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/email-templates/upload-image (src/components/email-template-form.tsx:821)"}, "fullDescription": {"text": "`src/components/email-template-form.tsx:821` calls `POST /api/v1/email-templates/upload-image` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/email-templates/upload-image`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-80c427cc7d16821c", "name": "Dangling fetch: GET /api/v1/leads/${lead.id} (src/components/lead-item-modal.tsx:152)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/leads/${lead.id} (src/components/lead-item-modal.tsx:152)"}, "fullDescription": {"text": "`src/components/lead-item-modal.tsx:152` calls `GET /api/v1/leads/${lead.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/leads/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-64ee6918e6efe9c4", "name": "Dangling fetch: PUT /api/v1/leads/${lead.id} (src/components/lead-item-modal.tsx:165)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/leads/${lead.id} (src/components/lead-item-modal.tsx:165)"}, "fullDescription": {"text": "`src/components/lead-item-modal.tsx:165` calls `PUT /api/v1/leads/${lead.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/leads/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1914bb0cfc157fa6", "name": "Dangling fetch: POST /api/v1/lead-scoring (src/components/lead-item-modal.tsx:200)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/lead-scoring (src/components/lead-item-modal.tsx:200)"}, "fullDescription": {"text": "`src/components/lead-item-modal.tsx:200` calls `POST /api/v1/lead-scoring` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/lead-scoring`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b196291c7fceb769", "name": "Dangling fetch: POST /api/v1/ai (src/components/lead-item-modal.tsx:217)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/ai (src/components/lead-item-modal.tsx:217)"}, "fullDescription": {"text": "`src/components/lead-item-modal.tsx:217` calls `POST /api/v1/ai` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ai`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2ac6bb27292266b6", "name": "Dangling fetch: GET /api/v1/activities?relatedType=lead&relatedId=${lead.id} (src/components/lead-item-modal.tsx:231)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/activities?relatedType=lead&relatedId=${lead.id} (src/components/lead-item-modal.tsx:231)"}, "fullDescription": {"text": "`src/components/lead-item-modal.tsx:231` calls `GET /api/v1/activities?relatedType=lead&relatedId=${lead.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/activities`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f62b1e768a828383", "name": "Dangling fetch: POST /api/v1/activities (src/components/lead-item-modal.tsx:243)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/activities (src/components/lead-item-modal.tsx:243)"}, "fullDescription": {"text": "`src/components/lead-item-modal.tsx:243` calls `POST /api/v1/activities` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/activities`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2639e0e95a330f13", "name": "Dangling fetch: POST /api/v1/inbox (src/components/lead-item-modal.tsx:270)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/inbox (src/components/lead-item-modal.tsx:270)"}, "fullDescription": {"text": "`src/components/lead-item-modal.tsx:270` calls `POST /api/v1/inbox` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6b8066f4ca9b7194", "name": "Dangling fetch: DELETE /api/v1/leads/${lead.id} (src/components/lead-item-modal.tsx:653)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/leads/${lead.id} (src/components/lead-item-modal.tsx:653)"}, "fullDescription": {"text": "`src/components/lead-item-modal.tsx:653` calls `DELETE /api/v1/leads/${lead.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/leads/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f64998762bd86dc4", "name": "Dangling fetch: GET /api/v1/users (src/components/budget-department-access.tsx:44)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users (src/components/budget-department-access.tsx:44)"}, "fullDescription": {"text": "`src/components/budget-department-access.tsx:44` calls `GET /api/v1/users` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7cb9a426b7f588e2", "name": "Dangling fetch: GET /api/budgeting/config?type=departments (src/components/budget-department-access.tsx:48)", "shortDescription": {"text": "Dangling fetch: GET /api/budgeting/config?type=departments (src/components/budget-department-access.tsx:48)"}, "fullDescription": {"text": "`src/components/budget-department-access.tsx:48` calls `GET /api/budgeting/config?type=departments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c2f4da58aaf64104", "name": "Dangling fetch: GET /api/v1/saved-views?entityType=${entityType} (src/components/saved-view-bar.tsx:72)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/saved-views?entityType=${entityType} (src/components/saved-view-bar.tsx:72)"}, "fullDescription": {"text": "`src/components/saved-view-bar.tsx:72` calls `GET /api/v1/saved-views?entityType=${entityType}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/saved-views`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-279b6b2f25858006", "name": "Dangling fetch: POST /api/v1/saved-views (src/components/saved-view-bar.tsx:108)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/saved-views (src/components/saved-view-bar.tsx:108)"}, "fullDescription": {"text": "`src/components/saved-view-bar.tsx:108` calls `POST /api/v1/saved-views` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/saved-views`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a6a59e50a9d318ae", "name": "Dangling fetch: DELETE /api/v1/saved-views/${view.id} (src/components/saved-view-bar.tsx:141)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/saved-views/${view.id} (src/components/saved-view-bar.tsx:141)"}, "fullDescription": {"text": "`src/components/saved-view-bar.tsx:141` calls `DELETE /api/v1/saved-views/${view.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/saved-views/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0c83ec777f2c2c08", "name": "Dangling fetch: PATCH /api/v1/saved-views/${view.id} (src/components/saved-view-bar.tsx:161)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/saved-views/${view.id} (src/components/saved-view-bar.tsx:161)"}, "fullDescription": {"text": "`src/components/saved-view-bar.tsx:161` calls `PATCH /api/v1/saved-views/${view.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/saved-views/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a3e80230d11d715c", "name": "Dangling fetch: PUT /api/v1/workflows/${workflow.id} (src/components/workflow-actions-modal.tsx:114)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/workflows/${workflow.id} (src/components/workflow-actions-modal.tsx:114)"}, "fullDescription": {"text": "`src/components/workflow-actions-modal.tsx:114` calls `PUT /api/v1/workflows/${workflow.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/workflows/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1f0ddab148c84871", "name": "Dangling fetch: GET /api/v1/users (src/components/task-form.tsx:145)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users (src/components/task-form.tsx:145)"}, "fullDescription": {"text": "`src/components/task-form.tsx:145` calls `GET /api/v1/users` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6e9299b1fa8a9f43", "name": "Dangling fetch: GET /api/v1/projects?limit=200 (src/components/task-form.tsx:154)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/projects?limit=200 (src/components/task-form.tsx:154)"}, "fullDescription": {"text": "`src/components/task-form.tsx:154` calls `GET /api/v1/projects?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/projects`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a0baa6cf7ad0d2bf", "name": "Dangling fetch: GET /api/v1/custom-fields?entityType=task (src/components/task-form.tsx:176)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/custom-fields?entityType=task (src/components/task-form.tsx:176)"}, "fullDescription": {"text": "`src/components/task-form.tsx:176` calls `GET /api/v1/custom-fields?entityType=task` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/custom-fields`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9ba888dd12ae1edb", "name": "Dangling fetch: GET /api/v1/task-templates (src/components/task-form.tsx:205)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/task-templates (src/components/task-form.tsx:205)"}, "fullDescription": {"text": "`src/components/task-form.tsx:205` calls `GET /api/v1/task-templates` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/task-templates`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7f949a9945675182", "name": "Dangling fetch: POST /api/v1/task-templates/${tpl.id}/instantiate (src/components/task-form.tsx:311)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/task-templates/${tpl.id}/instantiate (src/components/task-form.tsx:311)"}, "fullDescription": {"text": "`src/components/task-form.tsx:311` calls `POST /api/v1/task-templates/${tpl.id}/instantiate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/task-templates/<p>/instantiate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d97edf7c8483df55", "name": "Dangling fetch: POST /api/v1/tasks/${createdTask.id}/checklist (src/components/task-form.tsx:388)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/tasks/${createdTask.id}/checklist (src/components/task-form.tsx:388)"}, "fullDescription": {"text": "`src/components/task-form.tsx:388` calls `POST /api/v1/tasks/${createdTask.id}/checklist` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks/<p>/checklist`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2c482e5ab15f3177", "name": "Dangling fetch: GET /api/v1/sla-policies (src/components/company-form.tsx:85)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/sla-policies (src/components/company-form.tsx:85)"}, "fullDescription": {"text": "`src/components/company-form.tsx:85` calls `GET /api/v1/sla-policies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/sla-policies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8cf768890405b6f1", "name": "Dangling fetch: GET /api/v1/pages/${pageId} (src/components/grapes-editor.tsx:354)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/pages/${pageId} (src/components/grapes-editor.tsx:354)"}, "fullDescription": {"text": "`src/components/grapes-editor.tsx:354` calls `GET /api/v1/pages/${pageId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pages/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-caf1ea68f069b6bd", "name": "Dangling fetch: PUT /api/v1/pages/${pageId} (src/components/grapes-editor.tsx:403)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/pages/${pageId} (src/components/grapes-editor.tsx:403)"}, "fullDescription": {"text": "`src/components/grapes-editor.tsx:403` calls `PUT /api/v1/pages/${pageId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pages/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-35fa5caddde19a6e", "name": "Dangling fetch: POST /api/v1/pages/${pageId}/publish (src/components/grapes-editor.tsx:426)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/pages/${pageId}/publish (src/components/grapes-editor.tsx:426)"}, "fullDescription": {"text": "`src/components/grapes-editor.tsx:426` calls `POST /api/v1/pages/${pageId}/publish` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pages/<p>/publish`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-82ce835c5503d476", "name": "Dangling fetch: GET /api/v1/search?q=${encodeURIComponent(q)} (src/components/command-search.tsx:69)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/search?q=${encodeURIComponent(q)} (src/components/command-search.tsx:69)"}, "fullDescription": {"text": "`src/components/command-search.tsx:69` calls `GET /api/v1/search?q=${encodeURIComponent(q)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/search`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-36a8e6414a026b74", "name": "Dangling fetch: GET /api/v1/${entity}s/${id}/timeline (src/components/interaction-timeline.tsx:53)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/${entity}s/${id}/timeline (src/components/interaction-timeline.tsx:53)"}, "fullDescription": {"text": "`src/components/interaction-timeline.tsx:53` calls `GET /api/v1/${entity}s/${id}/timeline` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/<p>s/<p>/timeline`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a64143d8f60443e2", "name": "Dangling fetch: GET /api/v1/users/assignable (src/components/user-picker.tsx:61)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users/assignable (src/components/user-picker.tsx:61)"}, "fullDescription": {"text": "`src/components/user-picker.tsx:61` calls `GET /api/v1/users/assignable` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/assignable`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a0467d6f6b89da04", "name": "Dangling fetch: GET /api/v1/users/me/notification-preferences (src/components/notification-bell.tsx:61)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users/me/notification-preferences (src/components/notification-bell.tsx:61)"}, "fullDescription": {"text": "`src/components/notification-bell.tsx:61` calls `GET /api/v1/users/me/notification-preferences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/me/notification-preferences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6677c3afdd1849bf", "name": "Dangling fetch: GET /api/v1/notifications (src/components/notification-bell.tsx:77)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/notifications (src/components/notification-bell.tsx:77)"}, "fullDescription": {"text": "`src/components/notification-bell.tsx:77` calls `GET /api/v1/notifications` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/notifications`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7b4dc2bb6b7d91b3", "name": "Dangling fetch: PATCH /api/v1/notifications (src/components/notification-bell.tsx:128)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/notifications (src/components/notification-bell.tsx:128)"}, "fullDescription": {"text": "`src/components/notification-bell.tsx:128` calls `PATCH /api/v1/notifications` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/notifications`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aa28a1b1ede3d599", "name": "Dangling fetch: PATCH /api/v1/notifications (src/components/notification-bell.tsx:143)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/notifications (src/components/notification-bell.tsx:143)"}, "fullDescription": {"text": "`src/components/notification-bell.tsx:143` calls `PATCH /api/v1/notifications` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/notifications`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5f6f3ea8e4024887", "name": "Dangling fetch: GET /api/v1/calls?limit=1 (src/components/call-widget.tsx:30)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/calls?limit=1 (src/components/call-widget.tsx:30)"}, "fullDescription": {"text": "`src/components/call-widget.tsx:30` calls `GET /api/v1/calls?limit=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/calls`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dd88a6ed539115ce", "name": "Dangling fetch: POST /api/v1/calls/${callLogId}/end (src/components/call-widget.tsx:68)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/calls/${callLogId}/end (src/components/call-widget.tsx:68)"}, "fullDescription": {"text": "`src/components/call-widget.tsx:68` calls `POST /api/v1/calls/${callLogId}/end` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/calls/<p>/end`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0c28728fe0ddf664", "name": "Dangling fetch: PATCH /api/v1/calls/${callLogId}/notes (src/components/call-widget.tsx:78)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/calls/${callLogId}/notes (src/components/call-widget.tsx:78)"}, "fullDescription": {"text": "`src/components/call-widget.tsx:78` calls `PATCH /api/v1/calls/${callLogId}/notes` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/calls/<p>/notes`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-35c3ce62fccaaa8d", "name": "Dangling fetch: PATCH /api/v1/calls/${callLogId}/disposition (src/components/call-widget.tsx:150)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/calls/${callLogId}/disposition (src/components/call-widget.tsx:150)"}, "fullDescription": {"text": "`src/components/call-widget.tsx:150` calls `PATCH /api/v1/calls/${callLogId}/disposition` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/calls/<p>/disposition`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-02510fc687c56334", "name": "Dangling fetch: POST /api/v1/calls (src/components/call-widget.tsx:203)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/calls (src/components/call-widget.tsx:203)"}, "fullDescription": {"text": "`src/components/call-widget.tsx:203` calls `POST /api/v1/calls` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/calls`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fc912c234ec0b298", "name": "Dangling fetch: GET /api/v1/pipelines (src/components/lead-convert-dialog.tsx:62)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/pipelines (src/components/lead-convert-dialog.tsx:62)"}, "fullDescription": {"text": "`src/components/lead-convert-dialog.tsx:62` calls `GET /api/v1/pipelines` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pipelines`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5bf040114d702126", "name": "Dangling fetch: POST /api/v1/leads/${lead.id}/convert (src/components/lead-convert-dialog.tsx:87)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/leads/${lead.id}/convert (src/components/lead-convert-dialog.tsx:87)"}, "fullDescription": {"text": "`src/components/lead-convert-dialog.tsx:87` calls `POST /api/v1/leads/${lead.id}/convert` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/leads/<p>/convert`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9c0f32bee6179659", "name": "Dangling fetch: POST /api/v1/ai/approve-action (src/components/ai-assistant-panel.tsx:160)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/ai/approve-action (src/components/ai-assistant-panel.tsx:160)"}, "fullDescription": {"text": "`src/components/ai-assistant-panel.tsx:160` calls `POST /api/v1/ai/approve-action` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ai/approve-action`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7bdc4d7c9b2b8ee3", "name": "Dangling fetch: POST /api/v1/ai/chat (src/components/ai-assistant-panel.tsx:196)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/ai/chat (src/components/ai-assistant-panel.tsx:196)"}, "fullDescription": {"text": "`src/components/ai-assistant-panel.tsx:196` calls `POST /api/v1/ai/chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ai/chat`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-81335c8b68c260b9", "name": "Dangling fetch: GET /api/v1/kb-categories (src/components/kb-article-form.tsx:66)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/kb-categories (src/components/kb-article-form.tsx:66)"}, "fullDescription": {"text": "`src/components/kb-article-form.tsx:66` calls `GET /api/v1/kb-categories` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/kb-categories`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-abe1cbdb18364d2a", "name": "Dangling fetch: GET /api/v1/companies?limit=500 (src/components/contact-form.tsx:59)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/companies?limit=500 (src/components/contact-form.tsx:59)"}, "fullDescription": {"text": "`src/components/contact-form.tsx:59` calls `GET /api/v1/companies?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/companies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ad51fc845c4657de", "name": "Dangling fetch: GET /api/budgeting/cost-types?includeInactive=true (src/components/budget-config-tab.tsx:66)", "shortDescription": {"text": "Dangling fetch: GET /api/budgeting/cost-types?includeInactive=true (src/components/budget-config-tab.tsx:66)"}, "fullDescription": {"text": "`src/components/budget-config-tab.tsx:66` calls `GET /api/budgeting/cost-types?includeInactive=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/cost-types`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5e06a480f52bb029", "name": "Dangling fetch: GET /api/budgeting/departments?includeInactive=true (src/components/budget-config-tab.tsx:67)", "shortDescription": {"text": "Dangling fetch: GET /api/budgeting/departments?includeInactive=true (src/components/budget-config-tab.tsx:67)"}, "fullDescription": {"text": "`src/components/budget-config-tab.tsx:67` calls `GET /api/budgeting/departments?includeInactive=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/departments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-27d4d0810886cc9a", "name": "Dangling fetch: PUT /api/budgeting/cost-types (src/components/budget-config-tab.tsx:92)", "shortDescription": {"text": "Dangling fetch: PUT /api/budgeting/cost-types (src/components/budget-config-tab.tsx:92)"}, "fullDescription": {"text": "`src/components/budget-config-tab.tsx:92` calls `PUT /api/budgeting/cost-types` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/cost-types`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9ced0806cf26126b", "name": "Dangling fetch: POST /api/budgeting/cost-types (src/components/budget-config-tab.tsx:98)", "shortDescription": {"text": "Dangling fetch: POST /api/budgeting/cost-types (src/components/budget-config-tab.tsx:98)"}, "fullDescription": {"text": "`src/components/budget-config-tab.tsx:98` calls `POST /api/budgeting/cost-types` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/cost-types`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aeb4e481135fcda2", "name": "Dangling fetch: DELETE /api/budgeting/cost-types?id=${id} (src/components/budget-config-tab.tsx:110)", "shortDescription": {"text": "Dangling fetch: DELETE /api/budgeting/cost-types?id=${id} (src/components/budget-config-tab.tsx:110)"}, "fullDescription": {"text": "`src/components/budget-config-tab.tsx:110` calls `DELETE /api/budgeting/cost-types?id=${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/cost-types`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-96957a249b316cdf", "name": "Dangling fetch: PUT /api/budgeting/departments (src/components/budget-config-tab.tsx:130)", "shortDescription": {"text": "Dangling fetch: PUT /api/budgeting/departments (src/components/budget-config-tab.tsx:130)"}, "fullDescription": {"text": "`src/components/budget-config-tab.tsx:130` calls `PUT /api/budgeting/departments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/departments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-95742bfc2524544d", "name": "Dangling fetch: POST /api/budgeting/departments (src/components/budget-config-tab.tsx:136)", "shortDescription": {"text": "Dangling fetch: POST /api/budgeting/departments (src/components/budget-config-tab.tsx:136)"}, "fullDescription": {"text": "`src/components/budget-config-tab.tsx:136` calls `POST /api/budgeting/departments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/departments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-53ccab8251e3c89c", "name": "Dangling fetch: DELETE /api/budgeting/departments?id=${id} (src/components/budget-config-tab.tsx:148)", "shortDescription": {"text": "Dangling fetch: DELETE /api/budgeting/departments?id=${id} (src/components/budget-config-tab.tsx:148)"}, "fullDescription": {"text": "`src/components/budget-config-tab.tsx:148` calls `DELETE /api/budgeting/departments?id=${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/departments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3c3ba97af660cc4e", "name": "Dangling fetch: GET /api/v1/segments?limit=100 (src/components/journey-form.tsx:131)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/segments?limit=100 (src/components/journey-form.tsx:131)"}, "fullDescription": {"text": "`src/components/journey-form.tsx:131` calls `GET /api/v1/segments?limit=100` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/segments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b8d2e8d96901b958", "name": "Dangling fetch: GET /api/v1/companies?limit=500 (src/components/offer-form.tsx:89)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/companies?limit=500 (src/components/offer-form.tsx:89)"}, "fullDescription": {"text": "`src/components/offer-form.tsx:89` calls `GET /api/v1/companies?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/companies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cb546e7879d701b6", "name": "Dangling fetch: GET /api/v1/products?limit=500 (src/components/offer-form.tsx:93)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/products?limit=500 (src/components/offer-form.tsx:93)"}, "fullDescription": {"text": "`src/components/offer-form.tsx:93` calls `GET /api/v1/products?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-63b3c799042fd312", "name": "Dangling fetch: GET /api/v1/contacts?companyId=${companyId}&limit=100 (src/components/offer-form.tsx:103)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contacts?companyId=${companyId}&limit=100 (src/components/offer-form.tsx:103)"}, "fullDescription": {"text": "`src/components/offer-form.tsx:103` calls `GET /api/v1/contacts?companyId=${companyId}&limit=100` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contacts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e8caa4f4243a4576", "name": "Dangling fetch: GET /api/v1/companies?limit=500 (src/components/deal-form.tsx:78)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/companies?limit=500 (src/components/deal-form.tsx:78)"}, "fullDescription": {"text": "`src/components/deal-form.tsx:78` calls `GET /api/v1/companies?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/companies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6032087172efda55", "name": "Dangling fetch: GET /api/v1/campaigns?limit=500 (src/components/deal-form.tsx:83)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/campaigns?limit=500 (src/components/deal-form.tsx:83)"}, "fullDescription": {"text": "`src/components/deal-form.tsx:83` calls `GET /api/v1/campaigns?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/campaigns`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-28935e0646488853", "name": "Dangling fetch: GET /api/v1/contacts?limit=500 (src/components/deal-form.tsx:88)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contacts?limit=500 (src/components/deal-form.tsx:88)"}, "fullDescription": {"text": "`src/components/deal-form.tsx:88` calls `GET /api/v1/contacts?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contacts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-23d55717d5ff96b1", "name": "Dangling fetch: GET /api/v1/pipelines (src/components/deal-form.tsx:101)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/pipelines (src/components/deal-form.tsx:101)"}, "fullDescription": {"text": "`src/components/deal-form.tsx:101` calls `GET /api/v1/pipelines` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pipelines`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c1f3b7ef8a6a636f", "name": "Dangling fetch: POST /api/v1/tickets/${ticketId}/convert-to-complaint (src/components/convert-to-complaint-dialog.tsx:61", "shortDescription": {"text": "Dangling fetch: POST /api/v1/tickets/${ticketId}/convert-to-complaint (src/components/convert-to-complaint-dialog.tsx:61)"}, "fullDescription": {"text": "`src/components/convert-to-complaint-dialog.tsx:61` calls `POST /api/v1/tickets/${ticketId}/convert-to-complaint` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tickets/<p>/convert-to-complaint`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d138a495001e0e79", "name": "Dangling fetch: GET /api/v1/mtm/agents?limit=200 (src/components/mtm/agent-form.tsx:48)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/agents?limit=200 (src/components/mtm/agent-form.tsx:48)"}, "fullDescription": {"text": "`src/components/mtm/agent-form.tsx:48` calls `GET /api/v1/mtm/agents?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/agents`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3ce075eff023ce94", "name": "Dangling fetch: GET /api/v1/mtm/photos/${photoId}/annotations (src/components/mtm/shelf-annotator.tsx:101)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/photos/${photoId}/annotations (src/components/mtm/shelf-annotator.tsx:101)"}, "fullDescription": {"text": "`src/components/mtm/shelf-annotator.tsx:101` calls `GET /api/v1/mtm/photos/${photoId}/annotations` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/photos/<p>/annotations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c8f34c04c2f36acc", "name": "Dangling fetch: GET /api/v1/mtm/skus?search=${encodeURIComponent(query)}&limit=20 (src/components/mtm/shelf-annotator.ts", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/skus?search=${encodeURIComponent(query)}&limit=20 (src/components/mtm/shelf-annotator.tsx:129)"}, "fullDescription": {"text": "`src/components/mtm/shelf-annotator.tsx:129` calls `GET /api/v1/mtm/skus?search=${encodeURIComponent(query)}&limit=20` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/skus`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bc3372acadcefa2a", "name": "Dangling fetch: PUT /api/v1/mtm/photos/${photoId}/annotations (src/components/mtm/shelf-annotator.tsx:265)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/mtm/photos/${photoId}/annotations (src/components/mtm/shelf-annotator.tsx:265)"}, "fullDescription": {"text": "`src/components/mtm/shelf-annotator.tsx:265` calls `PUT /api/v1/mtm/photos/${photoId}/annotations` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/photos/<p>/annotations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2aef5c8ec6995612", "name": "Dangling fetch: POST /api/v1/mtm/equipment/import (src/components/mtm/equipment-import-modal.tsx:44)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/mtm/equipment/import (src/components/mtm/equipment-import-modal.tsx:44)"}, "fullDescription": {"text": "`src/components/mtm/equipment-import-modal.tsx:44` calls `POST /api/v1/mtm/equipment/import` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/equipment/import`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e63bc7e1d7cde4d2", "name": "Dangling fetch: GET /api/v1/mtm/agents?limit=200 (src/components/mtm/order-form.tsx:47)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/agents?limit=200 (src/components/mtm/order-form.tsx:47)"}, "fullDescription": {"text": "`src/components/mtm/order-form.tsx:47` calls `GET /api/v1/mtm/agents?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/agents`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-833b87bd98bbb9c8", "name": "Dangling fetch: GET /api/v1/mtm/customers?limit=200 (src/components/mtm/order-form.tsx:48)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/customers?limit=200 (src/components/mtm/order-form.tsx:48)"}, "fullDescription": {"text": "`src/components/mtm/order-form.tsx:48` calls `GET /api/v1/mtm/customers?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/customers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-274929ca06f4b645", "name": "Dangling fetch: GET /api/v1/mtm/agents?limit=200 (src/components/mtm/repair-request-edit-dialog.tsx:117)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/agents?limit=200 (src/components/mtm/repair-request-edit-dialog.tsx:117)"}, "fullDescription": {"text": "`src/components/mtm/repair-request-edit-dialog.tsx:117` calls `GET /api/v1/mtm/agents?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/agents`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4742b981f5836e0e", "name": "Dangling fetch: PATCH /api/v1/mtm/repair-requests/${request.id} (src/components/mtm/repair-request-edit-dialog.tsx:167)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/mtm/repair-requests/${request.id} (src/components/mtm/repair-request-edit-dialog.tsx:167)"}, "fullDescription": {"text": "`src/components/mtm/repair-request-edit-dialog.tsx:167` calls `PATCH /api/v1/mtm/repair-requests/${request.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/repair-requests/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-51c6da2c2ea5077e", "name": "Dangling fetch: POST /api/v1/mtm/skus/import (src/components/mtm/sku-import-modal.tsx:55)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/mtm/skus/import (src/components/mtm/sku-import-modal.tsx:55)"}, "fullDescription": {"text": "`src/components/mtm/sku-import-modal.tsx:55` calls `POST /api/v1/mtm/skus/import` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/skus/import`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fc54bbbc291983c3", "name": "Dangling fetch: GET /api/v1/mtm/agents?limit=200 (src/components/mtm/task-form.tsx:41)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/agents?limit=200 (src/components/mtm/task-form.tsx:41)"}, "fullDescription": {"text": "`src/components/mtm/task-form.tsx:41` calls `GET /api/v1/mtm/agents?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/agents`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a67c7b3662117d14", "name": "Dangling fetch: GET /api/v1/mtm/customers?limit=200 (src/components/mtm/task-form.tsx:42)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/customers?limit=200 (src/components/mtm/task-form.tsx:42)"}, "fullDescription": {"text": "`src/components/mtm/task-form.tsx:42` calls `GET /api/v1/mtm/customers?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/customers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1a1eb2f45e398caf", "name": "Dangling fetch: GET /api/v1/mtm/agents?limit=200 (src/components/mtm/route-form.tsx:43)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/agents?limit=200 (src/components/mtm/route-form.tsx:43)"}, "fullDescription": {"text": "`src/components/mtm/route-form.tsx:43` calls `GET /api/v1/mtm/agents?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/agents`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c02e5f0aaeba17c7", "name": "Dangling fetch: GET /api/v1/mtm/customers?limit=200 (src/components/mtm/route-form.tsx:44)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/customers?limit=200 (src/components/mtm/route-form.tsx:44)"}, "fullDescription": {"text": "`src/components/mtm/route-form.tsx:44` calls `GET /api/v1/mtm/customers?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/customers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9345ad2f1baca933", "name": "Dangling fetch: GET /api/v1/mtm/agents?limit=200 (src/components/mtm/visit-form.tsx:40)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/agents?limit=200 (src/components/mtm/visit-form.tsx:40)"}, "fullDescription": {"text": "`src/components/mtm/visit-form.tsx:40` calls `GET /api/v1/mtm/agents?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/agents`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ea701f4d67a37106", "name": "Dangling fetch: GET /api/v1/mtm/customers?limit=200 (src/components/mtm/visit-form.tsx:41)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/customers?limit=200 (src/components/mtm/visit-form.tsx:41)"}, "fullDescription": {"text": "`src/components/mtm/visit-form.tsx:41` calls `GET /api/v1/mtm/customers?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/customers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-306dc0279349bd58", "name": "Dangling fetch: GET /api/v1/users (src/components/projects/project-form.tsx:70)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users (src/components/projects/project-form.tsx:70)"}, "fullDescription": {"text": "`src/components/projects/project-form.tsx:70` calls `GET /api/v1/users` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ac088039eb6eaf50", "name": "Dangling fetch: GET /api/v1/companies?limit=500 (src/components/projects/project-form.tsx:73)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/companies?limit=500 (src/components/projects/project-form.tsx:73)"}, "fullDescription": {"text": "`src/components/projects/project-form.tsx:73` calls `GET /api/v1/companies?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/companies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ae84eda15a20f62d", "name": "Dangling fetch: GET /api/v1/deals?limit=500 (src/components/projects/project-form.tsx:76)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/deals?limit=500 (src/components/projects/project-form.tsx:76)"}, "fullDescription": {"text": "`src/components/projects/project-form.tsx:76` calls `GET /api/v1/deals?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dc89bdbafc93544b", "name": "Dangling fetch: POST /api/v1/projects/${projectId}/members (src/components/projects/project-members-tab.tsx:55)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/projects/${projectId}/members (src/components/projects/project-members-tab.tsx:55)"}, "fullDescription": {"text": "`src/components/projects/project-members-tab.tsx:55` calls `POST /api/v1/projects/${projectId}/members` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/projects/<p>/members`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6e9bdc987b72bafd", "name": "Dangling fetch: DELETE /api/v1/projects/${projectId}/members?memberId=${memberId} (src/components/projects/project-membe", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/projects/${projectId}/members?memberId=${memberId} (src/components/projects/project-members-tab.tsx:62)"}, "fullDescription": {"text": "`src/components/projects/project-members-tab.tsx:62` calls `DELETE /api/v1/projects/${projectId}/members?memberId=${memberId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/projects/<p>/members`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-53c86e4c075becec", "name": "Dangling fetch: PUT /api/v1/projects/${projectId}/members (src/components/projects/project-members-tab.tsx:67)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/projects/${projectId}/members (src/components/projects/project-members-tab.tsx:67)"}, "fullDescription": {"text": "`src/components/projects/project-members-tab.tsx:67` calls `PUT /api/v1/projects/${projectId}/members` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/projects/<p>/members`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3c7999dbf219c94f", "name": "Dangling fetch: PUT /api/v1/projects/${projectId}/milestones (src/components/projects/project-milestones-tab.tsx:38)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/projects/${projectId}/milestones (src/components/projects/project-milestones-tab.tsx:38)"}, "fullDescription": {"text": "`src/components/projects/project-milestones-tab.tsx:38` calls `PUT /api/v1/projects/${projectId}/milestones` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/projects/<p>/milestones`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fe05b641941558bc", "name": "Dangling fetch: POST /api/v1/projects/${projectId}/milestones (src/components/projects/project-milestones-tab.tsx:40)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/projects/${projectId}/milestones (src/components/projects/project-milestones-tab.tsx:40)"}, "fullDescription": {"text": "`src/components/projects/project-milestones-tab.tsx:40` calls `POST /api/v1/projects/${projectId}/milestones` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/projects/<p>/milestones`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2c8474b7777ced5f", "name": "Dangling fetch: DELETE /api/v1/projects/${projectId}/milestones?milestoneId=${milestoneId} (src/components/projects/proj", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/projects/${projectId}/milestones?milestoneId=${milestoneId} (src/components/projects/project-milestones-tab.tsx:46)"}, "fullDescription": {"text": "`src/components/projects/project-milestones-tab.tsx:46` calls `DELETE /api/v1/projects/${projectId}/milestones?milestoneId=${milestoneId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/projects/<p>/milestones`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e5b509ce677db980", "name": "Dangling fetch: GET /api/v1/tasks?projectId=${encodeURIComponent(projectId)}&limit=${FETCH_LIMIT} (src/components/projec", "shortDescription": {"text": "Dangling fetch: GET /api/v1/tasks?projectId=${encodeURIComponent(projectId)}&limit=${FETCH_LIMIT} (src/components/projects/project-crm-activity-tab.tsx:110)"}, "fullDescription": {"text": "`src/components/projects/project-crm-activity-tab.tsx:110` calls `GET /api/v1/tasks?projectId=${encodeURIComponent(projectId)}&limit=${FETCH_LIMIT}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-88402659447c076d", "name": "Dangling fetch: PUT /api/v1/projects/${projectId}/tasks (src/components/projects/project-tasks-tab.tsx:100)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/projects/${projectId}/tasks (src/components/projects/project-tasks-tab.tsx:100)"}, "fullDescription": {"text": "`src/components/projects/project-tasks-tab.tsx:100` calls `PUT /api/v1/projects/${projectId}/tasks` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/projects/<p>/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f29555ce2cc27241", "name": "Dangling fetch: POST /api/v1/projects/${projectId}/tasks (src/components/projects/project-tasks-tab.tsx:102)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/projects/${projectId}/tasks (src/components/projects/project-tasks-tab.tsx:102)"}, "fullDescription": {"text": "`src/components/projects/project-tasks-tab.tsx:102` calls `POST /api/v1/projects/${projectId}/tasks` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/projects/<p>/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-80d3bafc25e795ce", "name": "Dangling fetch: DELETE /api/v1/projects/${projectId}/tasks?taskId=${taskId} (src/components/projects/project-tasks-tab.t", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/projects/${projectId}/tasks?taskId=${taskId} (src/components/projects/project-tasks-tab.tsx:108)"}, "fullDescription": {"text": "`src/components/projects/project-tasks-tab.tsx:108` calls `DELETE /api/v1/projects/${projectId}/tasks?taskId=${taskId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/projects/<p>/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b5385af6ad67e78a", "name": "Dangling fetch: PUT /api/v1/projects/${projectId}/tasks (src/components/projects/project-tasks-tab.tsx:113)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/projects/${projectId}/tasks (src/components/projects/project-tasks-tab.tsx:113)"}, "fullDescription": {"text": "`src/components/projects/project-tasks-tab.tsx:113` calls `PUT /api/v1/projects/${projectId}/tasks` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/projects/<p>/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d0c574e03a626845", "name": "Dangling fetch: POST /api/v1/events/${event.id}/participants (src/components/events/events-analytics.tsx:211)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/events/${event.id}/participants (src/components/events/events-analytics.tsx:211)"}, "fullDescription": {"text": "`src/components/events/events-analytics.tsx:211` calls `POST /api/v1/events/${event.id}/participants` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/events/<p>/participants`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2dfaffc47838b2ea", "name": "Dangling fetch: GET /api/v1/events/${event.id}/participants (src/components/events/events-analytics.tsx:225)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/events/${event.id}/participants (src/components/events/events-analytics.tsx:225)"}, "fullDescription": {"text": "`src/components/events/events-analytics.tsx:225` calls `GET /api/v1/events/${event.id}/participants` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/events/<p>/participants`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bf6b1cd1d42ac10b", "name": "Dangling fetch: PATCH /api/v1/events/${event.id}/participants (src/components/events/events-analytics.tsx:233)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/events/${event.id}/participants (src/components/events/events-analytics.tsx:233)"}, "fullDescription": {"text": "`src/components/events/events-analytics.tsx:233` calls `PATCH /api/v1/events/${event.id}/participants` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/events/<p>/participants`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fe94d67719687f22", "name": "Dangling fetch: POST /api/v1/events/${selectedEvent.id}/confirm-all (src/components/events/events-analytics.tsx:398)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/events/${selectedEvent.id}/confirm-all (src/components/events/events-analytics.tsx:398)"}, "fullDescription": {"text": "`src/components/events/events-analytics.tsx:398` calls `POST /api/v1/events/${selectedEvent.id}/confirm-all` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/events/<p>/confirm-all`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-16d8739315d3dbc0", "name": "Dangling fetch: GET /api/v1/analytics/segments?entity=contacts (src/components/dashboard/segments-widget.tsx:36)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/analytics/segments?entity=contacts (src/components/dashboard/segments-widget.tsx:36)"}, "fullDescription": {"text": "`src/components/dashboard/segments-widget.tsx:36` calls `GET /api/v1/analytics/segments?entity=contacts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/analytics/segments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a00a9dc10472fe32", "name": "Dangling fetch: GET /api/v1/settings/ai-stats (src/components/dashboard/ai-value-widget.tsx:74)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/settings/ai-stats (src/components/dashboard/ai-value-widget.tsx:74)"}, "fullDescription": {"text": "`src/components/dashboard/ai-value-widget.tsx:74` calls `GET /api/v1/settings/ai-stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/ai-stats`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c2f4d7eac5a1605a", "name": "Dangling fetch: GET /api/v1/analytics/churn-risk?limit=5 (src/components/dashboard/churn-risk-widget.tsx:36)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/analytics/churn-risk?limit=5 (src/components/dashboard/churn-risk-widget.tsx:36)"}, "fullDescription": {"text": "`src/components/dashboard/churn-risk-widget.tsx:36` calls `GET /api/v1/analytics/churn-risk?limit=5` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/analytics/churn-risk`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-17d078b16251fba8", "name": "Dangling fetch: POST /api/v1/tasks (src/components/dashboard/churn-risk-widget.tsx:46)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/tasks (src/components/dashboard/churn-risk-widget.tsx:46)"}, "fullDescription": {"text": "`src/components/dashboard/churn-risk-widget.tsx:46` calls `POST /api/v1/tasks` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c8f74b21070ab17a", "name": "Dangling fetch: GET /api/v1/settings/ai-stats (src/components/dashboard/ai-actions-widget.tsx:65)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/settings/ai-stats (src/components/dashboard/ai-actions-widget.tsx:65)"}, "fullDescription": {"text": "`src/components/dashboard/ai-actions-widget.tsx:65` calls `GET /api/v1/settings/ai-stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/ai-stats`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b4255a447caa1a5d", "name": "Dangling fetch: GET /api/v1/ai/next-actions?limit=5 (src/components/dashboard/recommended-actions.tsx:50)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/ai/next-actions?limit=5 (src/components/dashboard/recommended-actions.tsx:50)"}, "fullDescription": {"text": "`src/components/dashboard/recommended-actions.tsx:50` calls `GET /api/v1/ai/next-actions?limit=5` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ai/next-actions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e9e50985c938a135", "name": "Dangling fetch: POST /api/v1/activities (src/components/dashboard/recommended-actions.tsx:62)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/activities (src/components/dashboard/recommended-actions.tsx:62)"}, "fullDescription": {"text": "`src/components/dashboard/recommended-actions.tsx:62` calls `POST /api/v1/activities` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/activities`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8ff3ed7cb21ce68f", "name": "Dangling fetch: POST /api/v1/tasks (src/components/dashboard/recommended-actions.tsx:75)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/tasks (src/components/dashboard/recommended-actions.tsx:75)"}, "fullDescription": {"text": "`src/components/dashboard/recommended-actions.tsx:75` calls `POST /api/v1/tasks` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1e50308e02b17c52", "name": "Dangling fetch: GET /api/v1/deals?search=${encodeURIComponent(q)}&limit=20 (src/components/cpq/deal-combobox.tsx:38)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/deals?search=${encodeURIComponent(q)}&limit=20 (src/components/cpq/deal-combobox.tsx:38)"}, "fullDescription": {"text": "`src/components/cpq/deal-combobox.tsx:38` calls `GET /api/v1/deals?search=${encodeURIComponent(q)}&limit=20` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-db92c75158f7a9b8", "name": "Dangling fetch: GET /api/v1/products?active=1&search=${encodeURIComponent(q)}&limit=20 (src/components/cpq/product-combo", "shortDescription": {"text": "Dangling fetch: GET /api/v1/products?active=1&search=${encodeURIComponent(q)}&limit=20 (src/components/cpq/product-combobox.tsx:42)"}, "fullDescription": {"text": "`src/components/cpq/product-combobox.tsx:42` calls `GET /api/v1/products?active=1&search=${encodeURIComponent(q)}&limit=20` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c6a383d877bf1fdb", "name": "Dangling fetch: POST /api/v1/quotes (src/components/cpq/quote-create-dialog.tsx:126)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/quotes (src/components/cpq/quote-create-dialog.tsx:126)"}, "fullDescription": {"text": "`src/components/cpq/quote-create-dialog.tsx:126` calls `POST /api/v1/quotes` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/quotes`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-83e98edf5c55a9e8", "name": "Dangling fetch: GET /api/v1/surveys/${surveyId}/analytics?days=${range} (src/components/surveys/analytics-dashboard.tsx:", "shortDescription": {"text": "Dangling fetch: GET /api/v1/surveys/${surveyId}/analytics?days=${range} (src/components/surveys/analytics-dashboard.tsx:42)"}, "fullDescription": {"text": "`src/components/surveys/analytics-dashboard.tsx:42` calls `GET /api/v1/surveys/${surveyId}/analytics?days=${range}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/surveys/<p>/analytics`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ab4059622c209c35", "name": "Dangling fetch: PUT /api/v1/surveys/${surveyId} (src/components/surveys/triggers-panel.tsx:42)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/surveys/${surveyId} (src/components/surveys/triggers-panel.tsx:42)"}, "fullDescription": {"text": "`src/components/surveys/triggers-panel.tsx:42` calls `PUT /api/v1/surveys/${surveyId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/surveys/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7ebe08ba04210243", "name": "Dangling fetch: GET /api/v1/surveys/${surveyId}/unsubscribes (src/components/surveys/unsubscribes-panel.tsx:37)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/surveys/${surveyId}/unsubscribes (src/components/surveys/unsubscribes-panel.tsx:37)"}, "fullDescription": {"text": "`src/components/surveys/unsubscribes-panel.tsx:37` calls `GET /api/v1/surveys/${surveyId}/unsubscribes` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/surveys/<p>/unsubscribes`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2b2c255d034fd81c", "name": "Dangling fetch: POST /api/v1/surveys/${surveyId}/unsubscribes (src/components/surveys/unsubscribes-panel.tsx:48)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/surveys/${surveyId}/unsubscribes (src/components/surveys/unsubscribes-panel.tsx:48)"}, "fullDescription": {"text": "`src/components/surveys/unsubscribes-panel.tsx:48` calls `POST /api/v1/surveys/${surveyId}/unsubscribes` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/surveys/<p>/unsubscribes`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-874552cfec42d3b6", "name": "Dangling fetch: DELETE /api/v1/surveys/${surveyId}/unsubscribes?rowId=${id} (src/components/surveys/unsubscribes-panel.t", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/surveys/${surveyId}/unsubscribes?rowId=${id} (src/components/surveys/unsubscribes-panel.tsx:67)"}, "fullDescription": {"text": "`src/components/surveys/unsubscribes-panel.tsx:67` calls `DELETE /api/v1/surveys/${surveyId}/unsubscribes?rowId=${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/surveys/<p>/unsubscribes`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4b67dc714df2443e", "name": "Dangling fetch: POST /api/v1/tasks/${taskId}/checklist (src/components/tasks/task-detail-view.tsx:407)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/tasks/${taskId}/checklist (src/components/tasks/task-detail-view.tsx:407)"}, "fullDescription": {"text": "`src/components/tasks/task-detail-view.tsx:407` calls `POST /api/v1/tasks/${taskId}/checklist` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks/<p>/checklist`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-964a843505e839aa", "name": "Dangling fetch: PATCH /api/v1/tasks/${taskId}/checklist (src/components/tasks/task-detail-view.tsx:419)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/tasks/${taskId}/checklist (src/components/tasks/task-detail-view.tsx:419)"}, "fullDescription": {"text": "`src/components/tasks/task-detail-view.tsx:419` calls `PATCH /api/v1/tasks/${taskId}/checklist` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks/<p>/checklist`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a21587a90ed8d010", "name": "Dangling fetch: DELETE /api/v1/tasks/${taskId}/checklist?itemId=${itemId} (src/components/tasks/task-detail-view.tsx:428", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/tasks/${taskId}/checklist?itemId=${itemId} (src/components/tasks/task-detail-view.tsx:428)"}, "fullDescription": {"text": "`src/components/tasks/task-detail-view.tsx:428` calls `DELETE /api/v1/tasks/${taskId}/checklist?itemId=${itemId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks/<p>/checklist`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bcf3acf3a9754920", "name": "Dangling fetch: POST /api/v1/tasks/${taskId}/files (src/components/tasks/task-detail-view.tsx:519)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/tasks/${taskId}/files (src/components/tasks/task-detail-view.tsx:519)"}, "fullDescription": {"text": "`src/components/tasks/task-detail-view.tsx:519` calls `POST /api/v1/tasks/${taskId}/files` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks/<p>/files`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b4ca43bed915f743", "name": "Dangling fetch: DELETE /api/v1/tasks/${taskId}/files/${fileId} (src/components/tasks/task-detail-view.tsx:533)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/tasks/${taskId}/files/${fileId} (src/components/tasks/task-detail-view.tsx:533)"}, "fullDescription": {"text": "`src/components/tasks/task-detail-view.tsx:533` calls `DELETE /api/v1/tasks/${taskId}/files/${fileId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks/<p>/files/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5ed010a8e48aacfb", "name": "Dangling fetch: POST /api/v1/tasks/${taskId}/comments (src/components/tasks/task-detail-view.tsx:623)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/tasks/${taskId}/comments (src/components/tasks/task-detail-view.tsx:623)"}, "fullDescription": {"text": "`src/components/tasks/task-detail-view.tsx:623` calls `POST /api/v1/tasks/${taskId}/comments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks/<p>/comments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b3b7c0a95fb4962d", "name": "Dangling fetch: GET /api/v1/users/assignable (src/components/tasks/task-detail-view.tsx:763)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users/assignable (src/components/tasks/task-detail-view.tsx:763)"}, "fullDescription": {"text": "`src/components/tasks/task-detail-view.tsx:763` calls `GET /api/v1/users/assignable` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/assignable`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fe4d4fd31f60ddb2", "name": "Dangling fetch: GET /api/v1/custom-fields?entityType=task (src/components/tasks/task-detail-view.tsx:782)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/custom-fields?entityType=task (src/components/tasks/task-detail-view.tsx:782)"}, "fullDescription": {"text": "`src/components/tasks/task-detail-view.tsx:782` calls `GET /api/v1/custom-fields?entityType=task` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/custom-fields`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bf051265287e4180", "name": "Dangling fetch: GET /api/v1/divisions (src/components/tasks/task-detail-view.tsx:798)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/divisions (src/components/tasks/task-detail-view.tsx:798)"}, "fullDescription": {"text": "`src/components/tasks/task-detail-view.tsx:798` calls `GET /api/v1/divisions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/divisions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f07fe75cf52d83b5", "name": "Dangling fetch: PATCH /api/v1/tasks/${taskId} (src/components/tasks/task-detail-view.tsx:820)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/tasks/${taskId} (src/components/tasks/task-detail-view.tsx:820)"}, "fullDescription": {"text": "`src/components/tasks/task-detail-view.tsx:820` calls `PATCH /api/v1/tasks/${taskId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a94e15b65b79f448", "name": "Dangling fetch: PATCH /api/v1/tasks/${taskId} (src/components/tasks/task-detail-view.tsx:837)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/tasks/${taskId} (src/components/tasks/task-detail-view.tsx:837)"}, "fullDescription": {"text": "`src/components/tasks/task-detail-view.tsx:837` calls `PATCH /api/v1/tasks/${taskId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3d98c6061c95e9cb", "name": "Dangling fetch: PATCH /api/v1/tasks/${taskId} (src/components/tasks/task-detail-view.tsx:858)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/tasks/${taskId} (src/components/tasks/task-detail-view.tsx:858)"}, "fullDescription": {"text": "`src/components/tasks/task-detail-view.tsx:858` calls `PATCH /api/v1/tasks/${taskId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-78cecf488a281201", "name": "Dangling fetch: GET /api/v1/tasks/${taskId} (src/components/tasks/task-detail-view.tsx:890)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/tasks/${taskId} (src/components/tasks/task-detail-view.tsx:890)"}, "fullDescription": {"text": "`src/components/tasks/task-detail-view.tsx:890` calls `GET /api/v1/tasks/${taskId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2c5029adea511653", "name": "Dangling fetch: PATCH /api/v1/tasks/${taskId} (src/components/tasks/task-detail-view.tsx:912)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/tasks/${taskId} (src/components/tasks/task-detail-view.tsx:912)"}, "fullDescription": {"text": "`src/components/tasks/task-detail-view.tsx:912` calls `PATCH /api/v1/tasks/${taskId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-929ae3f88cab9166", "name": "Dangling fetch: DELETE /api/v1/tasks/${taskId} (src/components/tasks/task-detail-view.tsx:925)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/tasks/${taskId} (src/components/tasks/task-detail-view.tsx:925)"}, "fullDescription": {"text": "`src/components/tasks/task-detail-view.tsx:925` calls `DELETE /api/v1/tasks/${taskId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6982c533027e5564", "name": "Dangling fetch: POST /api/v1/integrations/google-calendar (src/components/tasks/task-detail-view.tsx:1032)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/integrations/google-calendar (src/components/tasks/task-detail-view.tsx:1032)"}, "fullDescription": {"text": "`src/components/tasks/task-detail-view.tsx:1032` calls `POST /api/v1/integrations/google-calendar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/integrations/google-calendar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4b1d19c71c558cdb", "name": "Dangling fetch: POST /api/v1/tasks/${task.id}/stop-series (src/components/tasks/task-detail-view.tsx:1571)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/tasks/${task.id}/stop-series (src/components/tasks/task-detail-view.tsx:1571)"}, "fullDescription": {"text": "`src/components/tasks/task-detail-view.tsx:1571` calls `POST /api/v1/tasks/${task.id}/stop-series` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks/<p>/stop-series`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c87c306d34a576b9", "name": "Dangling fetch: GET /api/v1/divisions (src/components/tasks/operational-report.tsx:122)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/divisions (src/components/tasks/operational-report.tsx:122)"}, "fullDescription": {"text": "`src/components/tasks/operational-report.tsx:122` calls `GET /api/v1/divisions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/divisions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-06b0d4b43a85a567", "name": "Dangling fetch: GET /api/v1/users/assignable (src/components/tasks/operational-report.tsx:127)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users/assignable (src/components/tasks/operational-report.tsx:127)"}, "fullDescription": {"text": "`src/components/tasks/operational-report.tsx:127` calls `GET /api/v1/users/assignable` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/assignable`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-abbe1187d0fc8af6", "name": "Dangling fetch: GET /api/v1/projects?limit=200 (src/components/tasks/operational-report.tsx:131)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/projects?limit=200 (src/components/tasks/operational-report.tsx:131)"}, "fullDescription": {"text": "`src/components/tasks/operational-report.tsx:131` calls `GET /api/v1/projects?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/projects`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2e2e004177036d3f", "name": "Dangling fetch: GET /api/v1/custom-fields?entityType=task (src/components/tasks/operational-report.tsx:136)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/custom-fields?entityType=task (src/components/tasks/operational-report.tsx:136)"}, "fullDescription": {"text": "`src/components/tasks/operational-report.tsx:136` calls `GET /api/v1/custom-fields?entityType=task` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/custom-fields`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-26cff61f640ede6c", "name": "Dangling fetch: GET /api/v1/tasks/report?${p.toString()} (src/components/tasks/operational-report.tsx:150)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/tasks/report?${p.toString()} (src/components/tasks/operational-report.tsx:150)"}, "fullDescription": {"text": "`src/components/tasks/operational-report.tsx:150` calls `GET /api/v1/tasks/report?${p.toString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks/report`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4ada1f417c76c5c9", "name": "Dangling fetch: GET /api/v1/saved-views?entityType=tasks (src/components/tasks/inline-tasks-table.tsx:308)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/saved-views?entityType=tasks (src/components/tasks/inline-tasks-table.tsx:308)"}, "fullDescription": {"text": "`src/components/tasks/inline-tasks-table.tsx:308` calls `GET /api/v1/saved-views?entityType=tasks` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/saved-views`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a8dd414e995daed7", "name": "Dangling fetch: GET /api/chat/messages?sessionId=${sessionId}&after=${lastTs} (src/components/marketing/live-chat.tsx:43", "shortDescription": {"text": "Dangling fetch: GET /api/chat/messages?sessionId=${sessionId}&after=${lastTs} (src/components/marketing/live-chat.tsx:43)"}, "fullDescription": {"text": "`src/components/marketing/live-chat.tsx:43` calls `GET /api/chat/messages?sessionId=${sessionId}&after=${lastTs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/chat/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e6f28882d59f0c6c", "name": "Dangling fetch: POST /api/chat/send (src/components/marketing/live-chat.tsx:89)", "shortDescription": {"text": "Dangling fetch: POST /api/chat/send (src/components/marketing/live-chat.tsx:89)"}, "fullDescription": {"text": "`src/components/marketing/live-chat.tsx:89` calls `POST /api/chat/send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/chat/send`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-172979a8840b343c", "name": "Dangling fetch: POST /api/v1/public/cobrowse/signal (src/components/cobrowse/customer-widget.tsx:65)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/public/cobrowse/signal (src/components/cobrowse/customer-widget.tsx:65)"}, "fullDescription": {"text": "`src/components/cobrowse/customer-widget.tsx:65` calls `POST /api/v1/public/cobrowse/signal` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/cobrowse/signal`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ba5301a83dd537e8", "name": "Dangling fetch: POST /api/v1/public/cobrowse/join (src/components/cobrowse/customer-widget.tsx:115)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/public/cobrowse/join (src/components/cobrowse/customer-widget.tsx:115)"}, "fullDescription": {"text": "`src/components/cobrowse/customer-widget.tsx:115` calls `POST /api/v1/public/cobrowse/join` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/cobrowse/join`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3e6f71779942cf13", "name": "Dangling fetch: POST /api/v1/public/cobrowse/consent (src/components/cobrowse/customer-widget.tsx:135)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/public/cobrowse/consent (src/components/cobrowse/customer-widget.tsx:135)"}, "fullDescription": {"text": "`src/components/cobrowse/customer-widget.tsx:135` calls `POST /api/v1/public/cobrowse/consent` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/cobrowse/consent`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-92c499fab5524555", "name": "Dangling fetch: POST /api/v1/public/cobrowse/consent (src/components/cobrowse/customer-widget.tsx:228)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/public/cobrowse/consent (src/components/cobrowse/customer-widget.tsx:228)"}, "fullDescription": {"text": "`src/components/cobrowse/customer-widget.tsx:228` calls `POST /api/v1/public/cobrowse/consent` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/cobrowse/consent`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-90b6b9d4f44e8d9b", "name": "Dangling fetch: POST /api/v1/ai-feedback (src/components/adaptive-ai/ai-feedback-widget.tsx:66)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/ai-feedback (src/components/adaptive-ai/ai-feedback-widget.tsx:66)"}, "fullDescription": {"text": "`src/components/adaptive-ai/ai-feedback-widget.tsx:66` calls `POST /api/v1/ai-feedback` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ai-feedback`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8486067fd1d63d37", "name": "Dangling fetch: GET /api/v1/companies?category=client&limit=1 (src/components/profitability/parameters-tab.tsx:50)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/companies?category=client&limit=1 (src/components/profitability/parameters-tab.tsx:50)"}, "fullDescription": {"text": "`src/components/profitability/parameters-tab.tsx:50` calls `GET /api/v1/companies?category=client&limit=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/companies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8bd819363325852b", "name": "Dangling fetch: GET /api/v1/social/analytics?days=${range} (src/components/social/analytics-panel.tsx:54)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/social/analytics?days=${range} (src/components/social/analytics-panel.tsx:54)"}, "fullDescription": {"text": "`src/components/social/analytics-panel.tsx:54` calls `GET /api/v1/social/analytics?days=${range}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/social/analytics`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c4f71167c6efba98", "name": "Dangling fetch: GET /api/v1/invoices?dealId=${dealId}&limit=100 (src/components/deals/invoices-tab.tsx:45)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/invoices?dealId=${dealId}&limit=100 (src/components/deals/invoices-tab.tsx:45)"}, "fullDescription": {"text": "`src/components/deals/invoices-tab.tsx:45` calls `GET /api/v1/invoices?dealId=${dealId}&limit=100` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/invoices`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-429fd12395d30c5b", "name": "Dangling fetch: POST /api/v1/tasks (src/components/deals/ai-suggestions.tsx:48)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/tasks (src/components/deals/ai-suggestions.tsx:48)"}, "fullDescription": {"text": "`src/components/deals/ai-suggestions.tsx:48` calls `POST /api/v1/tasks` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-57aaab65b4b32140", "name": "Dangling fetch: GET /api/v1/deals/ai-suggestions?dealId=${dealId} (src/components/deals/ai-suggestions.tsx:69)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/deals/ai-suggestions?dealId=${dealId} (src/components/deals/ai-suggestions.tsx:69)"}, "fullDescription": {"text": "`src/components/deals/ai-suggestions.tsx:69` calls `GET /api/v1/deals/ai-suggestions?dealId=${dealId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/ai-suggestions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3c8cfaa0b9d84c14", "name": "Dangling fetch: GET /api/v1/users?limit=100 (src/components/deals/deal-sidebar.tsx:74)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users?limit=100 (src/components/deals/deal-sidebar.tsx:74)"}, "fullDescription": {"text": "`src/components/deals/deal-sidebar.tsx:74` calls `GET /api/v1/users?limit=100` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-26378682128cb0dd", "name": "Dangling fetch: POST /api/v1/deals/${dealId}/team (src/components/deals/deal-sidebar.tsx:98)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/deals/${dealId}/team (src/components/deals/deal-sidebar.tsx:98)"}, "fullDescription": {"text": "`src/components/deals/deal-sidebar.tsx:98` calls `POST /api/v1/deals/${dealId}/team` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/<p>/team`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8a0c7af78cd93b7c", "name": "Dangling fetch: GET /api/v1/contacts?limit=200 (src/components/deals/deal-sidebar.tsx:175)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contacts?limit=200 (src/components/deals/deal-sidebar.tsx:175)"}, "fullDescription": {"text": "`src/components/deals/deal-sidebar.tsx:175` calls `GET /api/v1/contacts?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contacts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b56fa4c778e4f3e6", "name": "Dangling fetch: POST /api/v1/deals/${dealId}/contact-roles (src/components/deals/deal-sidebar.tsx:199)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/deals/${dealId}/contact-roles (src/components/deals/deal-sidebar.tsx:199)"}, "fullDescription": {"text": "`src/components/deals/deal-sidebar.tsx:199` calls `POST /api/v1/deals/${dealId}/contact-roles` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/<p>/contact-roles`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2a028235f1bb8de0", "name": "Dangling fetch: POST /api/v1/deals/${dealId}/competitors (src/components/deals/deal-sidebar.tsx:328)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/deals/${dealId}/competitors (src/components/deals/deal-sidebar.tsx:328)"}, "fullDescription": {"text": "`src/components/deals/deal-sidebar.tsx:328` calls `POST /api/v1/deals/${dealId}/competitors` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/<p>/competitors`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-31e17872b1735b65", "name": "Dangling fetch: GET /api/v1/deals/${deal.id}/competitors (src/components/deals/deal-sidebar.tsx:390)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/deals/${deal.id}/competitors (src/components/deals/deal-sidebar.tsx:390)"}, "fullDescription": {"text": "`src/components/deals/deal-sidebar.tsx:390` calls `GET /api/v1/deals/${deal.id}/competitors` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/<p>/competitors`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aed468d5c630ec50", "name": "Dangling fetch: DELETE /api/v1/deals/${deal.id}/team (src/components/deals/deal-sidebar.tsx:535)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/deals/${deal.id}/team (src/components/deals/deal-sidebar.tsx:535)"}, "fullDescription": {"text": "`src/components/deals/deal-sidebar.tsx:535` calls `DELETE /api/v1/deals/${deal.id}/team` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/<p>/team`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-81a3890788e4bb5e", "name": "Dangling fetch: DELETE /api/v1/deals/${deal.id}/contact-roles (src/components/deals/deal-sidebar.tsx:594)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/deals/${deal.id}/contact-roles (src/components/deals/deal-sidebar.tsx:594)"}, "fullDescription": {"text": "`src/components/deals/deal-sidebar.tsx:594` calls `DELETE /api/v1/deals/${deal.id}/contact-roles` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/<p>/contact-roles`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ffd5a5ec5e5202d1", "name": "Dangling fetch: DELETE /api/v1/deals/${deal.id}/competitors (src/components/deals/deal-sidebar.tsx:668)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/deals/${deal.id}/competitors (src/components/deals/deal-sidebar.tsx:668)"}, "fullDescription": {"text": "`src/components/deals/deal-sidebar.tsx:668` calls `DELETE /api/v1/deals/${deal.id}/competitors` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/<p>/competitors`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-34c9875218c28eed", "name": "Dangling fetch: GET /api/v1/deals/${dealId}/offers (src/components/deals/offers-tab.tsx:90)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/deals/${dealId}/offers (src/components/deals/offers-tab.tsx:90)"}, "fullDescription": {"text": "`src/components/deals/offers-tab.tsx:90` calls `GET /api/v1/deals/${dealId}/offers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/<p>/offers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1d91cd65991e549e", "name": "Dangling fetch: DELETE /api/v1/offers/${deleteOffer.id} (src/components/deals/offers-tab.tsx:100)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/offers/${deleteOffer.id} (src/components/deals/offers-tab.tsx:100)"}, "fullDescription": {"text": "`src/components/deals/offers-tab.tsx:100` calls `DELETE /api/v1/offers/${deleteOffer.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/offers/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7973e26c8049be09", "name": "Dangling fetch: GET /api/v1/audit-log?entityType=deal&entityId=${dealId}&limit=100 (src/components/deals/deal-history.ts", "shortDescription": {"text": "Dangling fetch: GET /api/v1/audit-log?entityType=deal&entityId=${dealId}&limit=100 (src/components/deals/deal-history.tsx:36)"}, "fullDescription": {"text": "`src/components/deals/deal-history.tsx:36` calls `GET /api/v1/audit-log?entityType=deal&entityId=${dealId}&limit=100` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/audit-log`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4cc73d77d6034fe1", "name": "Dangling fetch: POST /api/v1/offers/${offer.id}/send (src/components/deals/send-offer-dialog.tsx:55)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/offers/${offer.id}/send (src/components/deals/send-offer-dialog.tsx:55)"}, "fullDescription": {"text": "`src/components/deals/send-offer-dialog.tsx:55` calls `POST /api/v1/offers/${offer.id}/send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/offers/<p>/send`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3f21f564c078205d", "name": "Dangling fetch: POST /api/v1/deals/${dealId}/send-email (src/components/deals/quick-action-bar.tsx:111)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/deals/${dealId}/send-email (src/components/deals/quick-action-bar.tsx:111)"}, "fullDescription": {"text": "`src/components/deals/quick-action-bar.tsx:111` calls `POST /api/v1/deals/${dealId}/send-email` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/<p>/send-email`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d1ddd52241d5e04e", "name": "Dangling fetch: POST /api/v1/activities (src/components/deals/quick-action-bar.tsx:134)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/activities (src/components/deals/quick-action-bar.tsx:134)"}, "fullDescription": {"text": "`src/components/deals/quick-action-bar.tsx:134` calls `POST /api/v1/activities` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/activities`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a250dc58b13e974a", "name": "Dangling fetch: POST /api/v1/deals/${dealId}/next-steps (src/components/deals/quick-action-bar.tsx:149)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/deals/${dealId}/next-steps (src/components/deals/quick-action-bar.tsx:149)"}, "fullDescription": {"text": "`src/components/deals/quick-action-bar.tsx:149` calls `POST /api/v1/deals/${dealId}/next-steps` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/<p>/next-steps`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3707b392feeaa0bf", "name": "Dangling fetch: POST /api/v1/ai/recommend (src/components/deals/next-best-offers.tsx:40)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/ai/recommend (src/components/deals/next-best-offers.tsx:40)"}, "fullDescription": {"text": "`src/components/deals/next-best-offers.tsx:40` calls `POST /api/v1/ai/recommend` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ai/recommend`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3b8b31096a979d7d", "name": "Dangling fetch: GET /api/v1/products?limit=6 (src/components/deals/next-best-offers.tsx:63)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/products?limit=6 (src/components/deals/next-best-offers.tsx:63)"}, "fullDescription": {"text": "`src/components/deals/next-best-offers.tsx:63` calls `GET /api/v1/products?limit=6` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c9ae50d50c68339a", "name": "Dangling fetch: POST /api/v1/deals/${dealId}/products (src/components/deals/next-best-offers.tsx:88)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/deals/${dealId}/products (src/components/deals/next-best-offers.tsx:88)"}, "fullDescription": {"text": "`src/components/deals/next-best-offers.tsx:88` calls `POST /api/v1/deals/${dealId}/products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/<p>/products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d664403836563d6c", "name": "Dangling fetch: GET /api/v1/companies?limit=500 (src/components/deals/offer-form.tsx:116)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/companies?limit=500 (src/components/deals/offer-form.tsx:116)"}, "fullDescription": {"text": "`src/components/deals/offer-form.tsx:116` calls `GET /api/v1/companies?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/companies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bd6a34ab88033e9c", "name": "Dangling fetch: GET /api/v1/products (src/components/deals/offer-form.tsx:117)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/products (src/components/deals/offer-form.tsx:117)"}, "fullDescription": {"text": "`src/components/deals/offer-form.tsx:117` calls `GET /api/v1/products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ab09fdc444810ce5", "name": "Dangling fetch: GET /api/v1/deals/${dealId}/engagement (src/components/deals/engagement-tab.tsx:33)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/deals/${dealId}/engagement (src/components/deals/engagement-tab.tsx:33)"}, "fullDescription": {"text": "`src/components/deals/engagement-tab.tsx:33` calls `GET /api/v1/deals/${dealId}/engagement` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/<p>/engagement`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-92e997937380e8d9", "name": "Dangling fetch: GET /api/v1/activities?relatedType=deal&relatedId=${dealId}&limit=50 (src/components/deals/activity-time", "shortDescription": {"text": "Dangling fetch: GET /api/v1/activities?relatedType=deal&relatedId=${dealId}&limit=50 (src/components/deals/activity-timeline.tsx:50)"}, "fullDescription": {"text": "`src/components/deals/activity-timeline.tsx:50` calls `GET /api/v1/activities?relatedType=deal&relatedId=${dealId}&limit=50` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/activities`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-76108b6e909cb1b7", "name": "Dangling fetch: POST /api/v1/activities (src/components/deals/activity-timeline.tsx:78)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/activities (src/components/deals/activity-timeline.tsx:78)"}, "fullDescription": {"text": "`src/components/deals/activity-timeline.tsx:78` calls `POST /api/v1/activities` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/activities`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-749b319f74d885b6", "name": "Dangling fetch: GET /api/v1/saved-views?entityType=tasks (src/components/boards/config-table-sections.tsx:54)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/saved-views?entityType=tasks (src/components/boards/config-table-sections.tsx:54)"}, "fullDescription": {"text": "`src/components/boards/config-table-sections.tsx:54` calls `GET /api/v1/saved-views?entityType=tasks` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/saved-views`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ab56f2aec86edb1f", "name": "Dangling fetch: PATCH /api/v1/saved-views/${orgViewId} (src/components/boards/config-table-sections.tsx:82)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/saved-views/${orgViewId} (src/components/boards/config-table-sections.tsx:82)"}, "fullDescription": {"text": "`src/components/boards/config-table-sections.tsx:82` calls `PATCH /api/v1/saved-views/${orgViewId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/saved-views/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d273cd12addaf238", "name": "Dangling fetch: POST /api/v1/saved-views (src/components/boards/config-table-sections.tsx:86)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/saved-views (src/components/boards/config-table-sections.tsx:86)"}, "fullDescription": {"text": "`src/components/boards/config-table-sections.tsx:86` calls `POST /api/v1/saved-views` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/saved-views`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6bc2a2f892ad8308", "name": "Dangling fetch: DELETE /api/v1/saved-views/${orgViewId} (src/components/boards/config-table-sections.tsx:101)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/saved-views/${orgViewId} (src/components/boards/config-table-sections.tsx:101)"}, "fullDescription": {"text": "`src/components/boards/config-table-sections.tsx:101` calls `DELETE /api/v1/saved-views/${orgViewId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/saved-views/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-927f4f5052152ed9", "name": "Dangling fetch: GET /api/v1/custom-fields?entityType=task (src/components/boards/config-table-sections.tsx:202)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/custom-fields?entityType=task (src/components/boards/config-table-sections.tsx:202)"}, "fullDescription": {"text": "`src/components/boards/config-table-sections.tsx:202` calls `GET /api/v1/custom-fields?entityType=task` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/custom-fields`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d4d52b7fcee21b57", "name": "Dangling fetch: GET /api/v1/divisions/${divisionId}/analytics?${q.toString()} (src/components/boards/board-reports.tsx:1", "shortDescription": {"text": "Dangling fetch: GET /api/v1/divisions/${divisionId}/analytics?${q.toString()} (src/components/boards/board-reports.tsx:122)"}, "fullDescription": {"text": "`src/components/boards/board-reports.tsx:122` calls `GET /api/v1/divisions/${divisionId}/analytics?${q.toString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/divisions/<p>/analytics`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-61112bfa19e88643", "name": "Dangling fetch: PATCH /api/v1/divisions/${divisionId} (src/components/boards/board-reports.tsx:536)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/divisions/${divisionId} (src/components/boards/board-reports.tsx:536)"}, "fullDescription": {"text": "`src/components/boards/board-reports.tsx:536` calls `PATCH /api/v1/divisions/${divisionId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/divisions/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-21529581152626ef", "name": "Dangling fetch: PATCH /api/v1/proactive-alerts?entityType=${entityType}&entityId=${entityId} (src/components/proactive/a", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/proactive-alerts?entityType=${entityType}&entityId=${entityId} (src/components/proactive/active-alerts-panel.tsx:66)"}, "fullDescription": {"text": "`src/components/proactive/active-alerts-panel.tsx:66` calls `PATCH /api/v1/proactive-alerts?entityType=${entityType}&entityId=${entityId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/proactive-alerts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f548f9d71dc46720", "name": "Dangling fetch: GET /api/v1/users/me/preferences (src/contexts/launcher-prefs-context.tsx:64)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users/me/preferences (src/contexts/launcher-prefs-context.tsx:64)"}, "fullDescription": {"text": "`src/contexts/launcher-prefs-context.tsx:64` calls `GET /api/v1/users/me/preferences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/me/preferences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9d19d2111b9f27cd", "name": "Dangling fetch: PUT /api/v1/users/me/preferences (src/contexts/launcher-prefs-context.tsx:100)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/users/me/preferences (src/contexts/launcher-prefs-context.tsx:100)"}, "fullDescription": {"text": "`src/contexts/launcher-prefs-context.tsx:100` calls `PUT /api/v1/users/me/preferences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/me/preferences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0f39a22f0caf8a31", "name": "Dangling fetch: POST https://api.twitter.com/2/tweets (src/app/api/v1/social/mentions/[id]/reply/route.ts:54)", "shortDescription": {"text": "Dangling fetch: POST https://api.twitter.com/2/tweets (src/app/api/v1/social/mentions/[id]/reply/route.ts:54)"}, "fullDescription": {"text": "`src/app/api/v1/social/mentions/[id]/reply/route.ts:54` calls `POST https://api.twitter.com/2/tweets` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.twitter.com/<p>/tweets`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4ed85d934187404a", "name": "Dangling fetch: POST https://api.twitter.com/2/oauth2/token (src/app/api/v1/social/oauth/twitter/callback/route.ts:40)", "shortDescription": {"text": "Dangling fetch: POST https://api.twitter.com/2/oauth2/token (src/app/api/v1/social/oauth/twitter/callback/route.ts:40)"}, "fullDescription": {"text": "`src/app/api/v1/social/oauth/twitter/callback/route.ts:40` calls `POST https://api.twitter.com/2/oauth2/token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.twitter.com/<p>/oauth2/token`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0b4b25fbed8e5d27", "name": "Dangling fetch: GET https://api.twitter.com/2/users/me (src/app/api/v1/social/oauth/twitter/callback/route.ts:67)", "shortDescription": {"text": "Dangling fetch: GET https://api.twitter.com/2/users/me (src/app/api/v1/social/oauth/twitter/callback/route.ts:67)"}, "fullDescription": {"text": "`src/app/api/v1/social/oauth/twitter/callback/route.ts:67` calls `GET https://api.twitter.com/2/users/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.twitter.com/<p>/users/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7d8320fc07a83f60", "name": "Dangling fetch: POST https://oauth2.googleapis.com/token (src/app/api/v1/social/oauth/youtube/callback/route.ts:33)", "shortDescription": {"text": "Dangling fetch: POST https://oauth2.googleapis.com/token (src/app/api/v1/social/oauth/youtube/callback/route.ts:33)"}, "fullDescription": {"text": "`src/app/api/v1/social/oauth/youtube/callback/route.ts:33` calls `POST https://oauth2.googleapis.com/token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/oauth2.googleapis.com/token`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4225f65b5fe6b98c", "name": "Dangling fetch: GET https://www.googleapis.com/youtube/v3/channels?part=snippet&mine=true (src/app/api/v1/social/oauth/y", "shortDescription": {"text": "Dangling fetch: GET https://www.googleapis.com/youtube/v3/channels?part=snippet&mine=true (src/app/api/v1/social/oauth/youtube/callback/route.ts:48)"}, "fullDescription": {"text": "`src/app/api/v1/social/oauth/youtube/callback/route.ts:48` calls `GET https://www.googleapis.com/youtube/v3/channels?part=snippet&mine=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/www.googleapis.com/youtube/v3/channels`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-33429908998de0a7", "name": "Dangling fetch: POST https://open.tiktokapis.com/v2/oauth/token/ (src/app/api/v1/social/oauth/tiktok/callback/route.ts:3", "shortDescription": {"text": "Dangling fetch: POST https://open.tiktokapis.com/v2/oauth/token/ (src/app/api/v1/social/oauth/tiktok/callback/route.ts:34)"}, "fullDescription": {"text": "`src/app/api/v1/social/oauth/tiktok/callback/route.ts:34` calls `POST https://open.tiktokapis.com/v2/oauth/token/` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/open.tiktokapis.com/v2/oauth/token`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ab20f55cd45b0ff8", "name": "Dangling fetch: GET https://open.tiktokapis.com/v2/user/info/?fields=open_id,username,display_name,avatar_url (src/app/a", "shortDescription": {"text": "Dangling fetch: GET https://open.tiktokapis.com/v2/user/info/?fields=open_id,username,display_name,avatar_url (src/app/api/v1/social/oauth/tiktok/callback/route.ts:54)"}, "fullDescription": {"text": "`src/app/api/v1/social/oauth/tiktok/callback/route.ts:54` calls `GET https://open.tiktokapis.com/v2/user/info/?fields=open_id,username,display_name,avatar_url` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/open.tiktokapis.com/v2/user/info`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bcc5d201d4edfcdf", "name": "Dangling fetch: POST https://api.telegram.org/bot${d.telegramBotToken}/sendMessage (src/app/api/v1/digest-subscriptions/", "shortDescription": {"text": "Dangling fetch: POST https://api.telegram.org/bot${d.telegramBotToken}/sendMessage (src/app/api/v1/digest-subscriptions/test/route.ts:90)"}, "fullDescription": {"text": "`src/app/api/v1/digest-subscriptions/test/route.ts:90` calls `POST https://api.telegram.org/bot${d.telegramBotToken}/sendMessage` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.telegram.org/bot/<p>/sendmessage`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-90b78d98f635823c", "name": "Dangling fetch: POST https://api.voyageai.com/v1/embeddings (src/app/api/v1/contracts/[id]/reindex/route.ts:42)", "shortDescription": {"text": "Dangling fetch: POST https://api.voyageai.com/v1/embeddings (src/app/api/v1/contracts/[id]/reindex/route.ts:42)"}, "fullDescription": {"text": "`src/app/api/v1/contracts/[id]/reindex/route.ts:42` calls `POST https://api.voyageai.com/v1/embeddings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.voyageai.com/v1/embeddings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a231d7c6a7d3e337", "name": "Dangling fetch: POST https://api.voyageai.com/v1/embeddings (src/app/api/v1/contracts/search/semantic/route.ts:45)", "shortDescription": {"text": "Dangling fetch: POST https://api.voyageai.com/v1/embeddings (src/app/api/v1/contracts/search/semantic/route.ts:45)"}, "fullDescription": {"text": "`src/app/api/v1/contracts/search/semantic/route.ts:45` calls `POST https://api.voyageai.com/v1/embeddings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.voyageai.com/v1/embeddings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-68af9e52fba4c0c6", "name": "Dangling fetch: POST https://api.telegram.org/bot${tgChannel.botToken}/sendMessage (src/app/api/v1/inbox/route.ts:541)", "shortDescription": {"text": "Dangling fetch: POST https://api.telegram.org/bot${tgChannel.botToken}/sendMessage (src/app/api/v1/inbox/route.ts:541)"}, "fullDescription": {"text": "`src/app/api/v1/inbox/route.ts:541` calls `POST https://api.telegram.org/bot${tgChannel.botToken}/sendMessage` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.telegram.org/bot/<p>/sendmessage`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-34a8e096c8642729", "name": "Dangling fetch: POST https://api.telegram.org/bot${token}/sendMessage (src/app/api/v1/inbox/conversations/[id]/messages/", "shortDescription": {"text": "Dangling fetch: POST https://api.telegram.org/bot${token}/sendMessage (src/app/api/v1/inbox/conversations/[id]/messages/route.ts:35)"}, "fullDescription": {"text": "`src/app/api/v1/inbox/conversations/[id]/messages/route.ts:35` calls `POST https://api.telegram.org/bot${token}/sendMessage` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.telegram.org/bot/<p>/sendmessage`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-585e8a625e92c832", "name": "Dangling fetch: POST https://api.telegram.org/bot${BOT_TOKEN}/sendMessage (src/app/api/chat/send/route.ts:25)", "shortDescription": {"text": "Dangling fetch: POST https://api.telegram.org/bot${BOT_TOKEN}/sendMessage (src/app/api/chat/send/route.ts:25)"}, "fullDescription": {"text": "`src/app/api/chat/send/route.ts:25` calls `POST https://api.telegram.org/bot${BOT_TOKEN}/sendMessage` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.telegram.org/bot/<p>/sendmessage`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-96b5b1b713de2baf", "name": "Dangling fetch: POST https://api.voyageai.com/v1/embeddings (src/app/api/cron/contract-embeddings/route.ts:42)", "shortDescription": {"text": "Dangling fetch: POST https://api.voyageai.com/v1/embeddings (src/app/api/cron/contract-embeddings/route.ts:42)"}, "fullDescription": {"text": "`src/app/api/cron/contract-embeddings/route.ts:42` calls `POST https://api.voyageai.com/v1/embeddings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.voyageai.com/v1/embeddings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-98a82ac26240e312", "name": "Dangling fetch: GET /api/v1/dashboard/widget-config (src/app/(dashboard)/page.tsx:45)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/dashboard/widget-config (src/app/(dashboard)/page.tsx:45)"}, "fullDescription": {"text": "`src/app/(dashboard)/page.tsx:45` calls `GET /api/v1/dashboard/widget-config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/dashboard/widget-config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eca96800da775b55", "name": "Dangling fetch: GET /api/v1/dashboard/executive (src/app/(dashboard)/page.tsx:87)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/dashboard/executive (src/app/(dashboard)/page.tsx:87)"}, "fullDescription": {"text": "`src/app/(dashboard)/page.tsx:87` calls `GET /api/v1/dashboard/executive` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/dashboard/executive`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e3383c4cdf28de10", "name": "Dangling fetch: GET /api/v1/webhooks/manage (src/app/(dashboard)/settings/integrations/page.tsx:100)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/webhooks/manage (src/app/(dashboard)/settings/integrations/page.tsx:100)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/integrations/page.tsx:100` calls `GET /api/v1/webhooks/manage` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/webhooks/manage`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8842249e05dd6450", "name": "Dangling fetch: GET /api/v1/integrations/slack (src/app/(dashboard)/settings/integrations/page.tsx:108)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/integrations/slack (src/app/(dashboard)/settings/integrations/page.tsx:108)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/integrations/page.tsx:108` calls `GET /api/v1/integrations/slack` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/integrations/slack`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-66d0f7e7b7c177ad", "name": "Dangling fetch: GET /api/v1/integrations/teams (src/app/(dashboard)/settings/integrations/page.tsx:116)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/integrations/teams (src/app/(dashboard)/settings/integrations/page.tsx:116)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/integrations/page.tsx:116` calls `GET /api/v1/integrations/teams` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/integrations/teams`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-71cd63a296bf7ea1", "name": "Dangling fetch: GET /api/v1/integrations/esign-provider (src/app/(dashboard)/settings/integrations/page.tsx:124)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/integrations/esign-provider (src/app/(dashboard)/settings/integrations/page.tsx:124)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/integrations/page.tsx:124` calls `GET /api/v1/integrations/esign-provider` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/integrations/esign-provider`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8b18ea4b0e4ee783", "name": "Dangling fetch: GET /api/v1/integrations/google-calendar/status (src/app/(dashboard)/settings/integrations/page.tsx:136)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/integrations/google-calendar/status (src/app/(dashboard)/settings/integrations/page.tsx:136)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/integrations/page.tsx:136` calls `GET /api/v1/integrations/google-calendar/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/integrations/google-calendar/status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ab0f4e4f5a3d2808", "name": "Dangling fetch: GET /api/v1/integrations/google-calendar/connect (src/app/(dashboard)/settings/integrations/page.tsx:145", "shortDescription": {"text": "Dangling fetch: GET /api/v1/integrations/google-calendar/connect (src/app/(dashboard)/settings/integrations/page.tsx:145)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/integrations/page.tsx:145` calls `GET /api/v1/integrations/google-calendar/connect` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/integrations/google-calendar/connect`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-73994c1e4685896c", "name": "Dangling fetch: DELETE /api/v1/integrations/google-calendar/status (src/app/(dashboard)/settings/integrations/page.tsx:1", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/integrations/google-calendar/status (src/app/(dashboard)/settings/integrations/page.tsx:157)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/integrations/page.tsx:157` calls `DELETE /api/v1/integrations/google-calendar/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/integrations/google-calendar/status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-713a4ca805ffa650", "name": "Dangling fetch: POST /api/v1/webhooks/manage (src/app/(dashboard)/settings/integrations/page.tsx:178)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/webhooks/manage (src/app/(dashboard)/settings/integrations/page.tsx:178)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/integrations/page.tsx:178` calls `POST /api/v1/webhooks/manage` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/webhooks/manage`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d4bde6e72cbee94d", "name": "Dangling fetch: DELETE /api/v1/webhooks/manage/${id} (src/app/(dashboard)/settings/integrations/page.tsx:195)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/webhooks/manage/${id} (src/app/(dashboard)/settings/integrations/page.tsx:195)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/integrations/page.tsx:195` calls `DELETE /api/v1/webhooks/manage/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/webhooks/manage/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-07727e634c70e121", "name": "Dangling fetch: PUT /api/v1/webhooks/manage/${id} (src/app/(dashboard)/settings/integrations/page.tsx:200)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/webhooks/manage/${id} (src/app/(dashboard)/settings/integrations/page.tsx:200)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/integrations/page.tsx:200` calls `PUT /api/v1/webhooks/manage/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/webhooks/manage/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2c6897ba0ed3da1f", "name": "Dangling fetch: POST /api/v1/integrations/slack (src/app/(dashboard)/settings/integrations/page.tsx:210)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/integrations/slack (src/app/(dashboard)/settings/integrations/page.tsx:210)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/integrations/page.tsx:210` calls `POST /api/v1/integrations/slack` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/integrations/slack`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-66a71d2479d4e083", "name": "Dangling fetch: POST /api/v1/integrations/slack (src/app/(dashboard)/settings/integrations/page.tsx:227)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/integrations/slack (src/app/(dashboard)/settings/integrations/page.tsx:227)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/integrations/page.tsx:227` calls `POST /api/v1/integrations/slack` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/integrations/slack`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a46c350dcaf46afe", "name": "Dangling fetch: DELETE /api/v1/integrations/slack?id=${id} (src/app/(dashboard)/settings/integrations/page.tsx:238)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/integrations/slack?id=${id} (src/app/(dashboard)/settings/integrations/page.tsx:238)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/integrations/page.tsx:238` calls `DELETE /api/v1/integrations/slack?id=${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/integrations/slack`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b2e09c437612b4d9", "name": "Dangling fetch: PUT /api/v1/integrations/slack (src/app/(dashboard)/settings/integrations/page.tsx:244)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/integrations/slack (src/app/(dashboard)/settings/integrations/page.tsx:244)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/integrations/page.tsx:244` calls `PUT /api/v1/integrations/slack` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/integrations/slack`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cf2d44288b6fd1f6", "name": "Dangling fetch: POST /api/v1/integrations/teams (src/app/(dashboard)/settings/integrations/page.tsx:254)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/integrations/teams (src/app/(dashboard)/settings/integrations/page.tsx:254)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/integrations/page.tsx:254` calls `POST /api/v1/integrations/teams` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/integrations/teams`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7edb1cce4af03c99", "name": "Dangling fetch: POST /api/v1/integrations/teams (src/app/(dashboard)/settings/integrations/page.tsx:271)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/integrations/teams (src/app/(dashboard)/settings/integrations/page.tsx:271)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/integrations/page.tsx:271` calls `POST /api/v1/integrations/teams` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/integrations/teams`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-270c941da6121020", "name": "Dangling fetch: DELETE /api/v1/integrations/teams?id=${id} (src/app/(dashboard)/settings/integrations/page.tsx:282)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/integrations/teams?id=${id} (src/app/(dashboard)/settings/integrations/page.tsx:282)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/integrations/page.tsx:282` calls `DELETE /api/v1/integrations/teams?id=${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/integrations/teams`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b145c3778c55f248", "name": "Dangling fetch: PUT /api/v1/integrations/teams (src/app/(dashboard)/settings/integrations/page.tsx:288)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/integrations/teams (src/app/(dashboard)/settings/integrations/page.tsx:288)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/integrations/page.tsx:288` calls `PUT /api/v1/integrations/teams` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/integrations/teams`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4e2f8b5ef2d15fc4", "name": "Dangling fetch: POST /api/v1/integrations/esign-provider (src/app/(dashboard)/settings/integrations/page.tsx:306)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/integrations/esign-provider (src/app/(dashboard)/settings/integrations/page.tsx:306)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/integrations/page.tsx:306` calls `POST /api/v1/integrations/esign-provider` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/integrations/esign-provider`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0f833d16a7b8c10d", "name": "Dangling fetch: DELETE /api/v1/integrations/esign-provider?id=${configId} (src/app/(dashboard)/settings/integrations/pag", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/integrations/esign-provider?id=${configId} (src/app/(dashboard)/settings/integrations/page.tsx:325)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/integrations/page.tsx:325` calls `DELETE /api/v1/integrations/esign-provider?id=${configId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/integrations/esign-provider`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b71849cef473c2d2", "name": "Dangling fetch: GET /api/v1/api-keys (src/app/(dashboard)/settings/security/page.tsx:52)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/api-keys (src/app/(dashboard)/settings/security/page.tsx:52)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/security/page.tsx:52` calls `GET /api/v1/api-keys` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/api-keys`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3d64f676781a6fea", "name": "Dangling fetch: GET /api/v1/api-keys/scopes (src/app/(dashboard)/settings/security/page.tsx:58)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/api-keys/scopes (src/app/(dashboard)/settings/security/page.tsx:58)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/security/page.tsx:58` calls `GET /api/v1/api-keys/scopes` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/api-keys/scopes`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a5a6fc62b3b6129b", "name": "Dangling fetch: GET /api/v1/auth/linked-accounts (src/app/(dashboard)/settings/security/page.tsx:64)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/auth/linked-accounts (src/app/(dashboard)/settings/security/page.tsx:64)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/security/page.tsx:64` calls `GET /api/v1/auth/linked-accounts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/auth/linked-accounts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-90a31507b62881a1", "name": "Dangling fetch: DELETE /api/v1/auth/linked-accounts (src/app/(dashboard)/settings/security/page.tsx:72)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/auth/linked-accounts (src/app/(dashboard)/settings/security/page.tsx:72)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/security/page.tsx:72` calls `DELETE /api/v1/auth/linked-accounts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/auth/linked-accounts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-170e5dc6c987ddd7", "name": "Dangling fetch: GET /api/v1/auth/2fa (src/app/(dashboard)/settings/security/page.tsx:91)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/auth/2fa (src/app/(dashboard)/settings/security/page.tsx:91)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/security/page.tsx:91` calls `GET /api/v1/auth/2fa` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/auth/2fa`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2cc7155322ee648d", "name": "Dangling fetch: GET /api/v1/settings/auth-methods (src/app/(dashboard)/settings/security/page.tsx:100)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/settings/auth-methods (src/app/(dashboard)/settings/security/page.tsx:100)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/security/page.tsx:100` calls `GET /api/v1/settings/auth-methods` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/auth-methods`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-17330df538e94fd4", "name": "Dangling fetch: PUT /api/v1/settings/auth-methods (src/app/(dashboard)/settings/security/page.tsx:109)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/settings/auth-methods (src/app/(dashboard)/settings/security/page.tsx:109)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/security/page.tsx:109` calls `PUT /api/v1/settings/auth-methods` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/auth-methods`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cbd287fff6ccbc42", "name": "Dangling fetch: POST /api/v1/auth/2fa (src/app/(dashboard)/settings/security/page.tsx:123)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/auth/2fa (src/app/(dashboard)/settings/security/page.tsx:123)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/security/page.tsx:123` calls `POST /api/v1/auth/2fa` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/auth/2fa`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f3c3461542f77bd5", "name": "Dangling fetch: POST /api/v1/auth/2fa (src/app/(dashboard)/settings/security/page.tsx:146)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/auth/2fa (src/app/(dashboard)/settings/security/page.tsx:146)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/security/page.tsx:146` calls `POST /api/v1/auth/2fa` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/auth/2fa`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d5e37a7477be18f7", "name": "Dangling fetch: POST /api/v1/auth/2fa (src/app/(dashboard)/settings/security/page.tsx:167)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/auth/2fa (src/app/(dashboard)/settings/security/page.tsx:167)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/security/page.tsx:167` calls `POST /api/v1/auth/2fa` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/auth/2fa`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b9a6b1546bd921e4", "name": "Dangling fetch: POST /api/v1/api-keys (src/app/(dashboard)/settings/security/page.tsx:720)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/api-keys (src/app/(dashboard)/settings/security/page.tsx:720)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/security/page.tsx:720` calls `POST /api/v1/api-keys` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/api-keys`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fbce51a9ce497e97", "name": "Dangling fetch: DELETE /api/v1/api-keys/${key.id} (src/app/(dashboard)/settings/security/page.tsx:778)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/api-keys/${key.id} (src/app/(dashboard)/settings/security/page.tsx:778)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/security/page.tsx:778` calls `DELETE /api/v1/api-keys/${key.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/api-keys/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f0a1e7bb366a9381", "name": "Dangling fetch: GET /api/v1/users (src/app/(dashboard)/settings/users/page.tsx:335)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users (src/app/(dashboard)/settings/users/page.tsx:335)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/users/page.tsx:335` calls `GET /api/v1/users` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e0fc59f40f0a88d5", "name": "Dangling fetch: GET /api/v1/settings/roles (src/app/(dashboard)/settings/users/page.tsx:336)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/settings/roles (src/app/(dashboard)/settings/users/page.tsx:336)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/users/page.tsx:336` calls `GET /api/v1/settings/roles` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/roles`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c61d522b7d967cf5", "name": "Dangling fetch: GET /api/v1/users (src/app/(dashboard)/settings/users/page.tsx:351)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users (src/app/(dashboard)/settings/users/page.tsx:351)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/users/page.tsx:351` calls `GET /api/v1/users` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b4bfa343c7e4ee6d", "name": "Dangling fetch: DELETE /api/v1/users/${deleteId} (src/app/(dashboard)/settings/users/page.tsx:365)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/users/${deleteId} (src/app/(dashboard)/settings/users/page.tsx:365)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/users/page.tsx:365` calls `DELETE /api/v1/users/${deleteId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b1a0fee76cbeaa8d", "name": "Dangling fetch: PUT /api/v1/users/${user.id} (src/app/(dashboard)/settings/users/page.tsx:377)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/users/${user.id} (src/app/(dashboard)/settings/users/page.tsx:377)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/users/page.tsx:377` calls `PUT /api/v1/users/${user.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4e2bbc08cc8ad180", "name": "Dangling fetch: PUT /api/v1/users/${item.id} (src/app/(dashboard)/settings/users/page.tsx:454)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/users/${item.id} (src/app/(dashboard)/settings/users/page.tsx:454)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/users/page.tsx:454` calls `PUT /api/v1/users/${item.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-10e9db487866df26", "name": "Dangling fetch: PUT /api/v1/users/${item.id} (src/app/(dashboard)/settings/users/page.tsx:515)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/users/${item.id} (src/app/(dashboard)/settings/users/page.tsx:515)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/users/page.tsx:515` calls `PUT /api/v1/users/${item.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f68ff47d1eef758c", "name": "Dangling fetch: PUT /api/v1/users/${item.id} (src/app/(dashboard)/settings/users/page.tsx:542)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/users/${item.id} (src/app/(dashboard)/settings/users/page.tsx:542)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/users/page.tsx:542` calls `PUT /api/v1/users/${item.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b7d8ce925c61f82a", "name": "Dangling fetch: PUT /api/v1/users/${item.id} (src/app/(dashboard)/settings/users/page.tsx:561)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/users/${item.id} (src/app/(dashboard)/settings/users/page.tsx:561)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/users/page.tsx:561` calls `PUT /api/v1/users/${item.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f587cb234834716f", "name": "Dangling fetch: GET /api/v1/custom-domains (src/app/(dashboard)/settings/custom-domains/page.tsx:52)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/custom-domains (src/app/(dashboard)/settings/custom-domains/page.tsx:52)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/custom-domains/page.tsx:52` calls `GET /api/v1/custom-domains` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/custom-domains`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f8d81f7c3d9e8c35", "name": "Dangling fetch: POST /api/v1/custom-domains (src/app/(dashboard)/settings/custom-domains/page.tsx:72)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/custom-domains (src/app/(dashboard)/settings/custom-domains/page.tsx:72)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/custom-domains/page.tsx:72` calls `POST /api/v1/custom-domains` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/custom-domains`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-167a1316dc895306", "name": "Dangling fetch: POST /api/v1/custom-domains/${id}/verify (src/app/(dashboard)/settings/custom-domains/page.tsx:96)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/custom-domains/${id}/verify (src/app/(dashboard)/settings/custom-domains/page.tsx:96)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/custom-domains/page.tsx:96` calls `POST /api/v1/custom-domains/${id}/verify` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/custom-domains/<p>/verify`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-12068dfc100b10b4", "name": "Dangling fetch: DELETE /api/v1/custom-domains/${deletingDomain.id} (src/app/(dashboard)/settings/custom-domains/page.tsx", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/custom-domains/${deletingDomain.id} (src/app/(dashboard)/settings/custom-domains/page.tsx:114)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/custom-domains/page.tsx:114` calls `DELETE /api/v1/custom-domains/${deletingDomain.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/custom-domains/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6a8caa7dc1efc9c8", "name": "Dangling fetch: GET /api/v1/users/me/notification-preferences (src/app/(dashboard)/settings/notifications/page.tsx:36)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users/me/notification-preferences (src/app/(dashboard)/settings/notifications/page.tsx:36)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/notifications/page.tsx:36` calls `GET /api/v1/users/me/notification-preferences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/me/notification-preferences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-017924325de77cd9", "name": "Dangling fetch: PUT /api/v1/users/me/notification-preferences (src/app/(dashboard)/settings/notifications/page.tsx:70)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/users/me/notification-preferences (src/app/(dashboard)/settings/notifications/page.tsx:70)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/notifications/page.tsx:70` calls `PUT /api/v1/users/me/notification-preferences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/me/notification-preferences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-15c89477c90f275b", "name": "Dangling fetch: PUT /api/v1/users/me/notification-preferences (src/app/(dashboard)/settings/notifications/page.tsx:103)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/users/me/notification-preferences (src/app/(dashboard)/settings/notifications/page.tsx:103)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/notifications/page.tsx:103` calls `PUT /api/v1/users/me/notification-preferences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/me/notification-preferences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c7dc5cdeda3e28f6", "name": "Dangling fetch: GET /api/v1/sla-policies (src/app/(dashboard)/settings/sla-policies/page.tsx:54)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/sla-policies (src/app/(dashboard)/settings/sla-policies/page.tsx:54)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/sla-policies/page.tsx:54` calls `GET /api/v1/sla-policies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/sla-policies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cd1d21f2064b3cc3", "name": "Dangling fetch: DELETE /api/v1/sla-policies/${deleteId} (src/app/(dashboard)/settings/sla-policies/page.tsx:68)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/sla-policies/${deleteId} (src/app/(dashboard)/settings/sla-policies/page.tsx:68)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/sla-policies/page.tsx:68` calls `DELETE /api/v1/sla-policies/${deleteId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/sla-policies/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ab3d3d2999bcd481", "name": "Dangling fetch: DELETE /api/v1/custom-fields/${field.id} (src/app/(dashboard)/settings/custom-fields/page.tsx:87)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/custom-fields/${field.id} (src/app/(dashboard)/settings/custom-fields/page.tsx:87)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/custom-fields/page.tsx:87` calls `DELETE /api/v1/custom-fields/${field.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/custom-fields/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-021beed5977a2c07", "name": "Dangling fetch: GET /api/v1/settings/smtp (src/app/(dashboard)/settings/smtp-settings/page.tsx:46)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/settings/smtp (src/app/(dashboard)/settings/smtp-settings/page.tsx:46)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/smtp-settings/page.tsx:46` calls `GET /api/v1/settings/smtp` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/smtp`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5350711136e85cbe", "name": "Dangling fetch: PUT /api/v1/settings/smtp (src/app/(dashboard)/settings/smtp-settings/page.tsx:78)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/settings/smtp (src/app/(dashboard)/settings/smtp-settings/page.tsx:78)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/smtp-settings/page.tsx:78` calls `PUT /api/v1/settings/smtp` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/smtp`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8096a55a3117af2d", "name": "Dangling fetch: POST /api/v1/settings/smtp/test (src/app/(dashboard)/settings/smtp-settings/page.tsx:110)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/settings/smtp/test (src/app/(dashboard)/settings/smtp-settings/page.tsx:110)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/smtp-settings/page.tsx:110` calls `POST /api/v1/settings/smtp/test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/smtp/test`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3e35cf7343e80947", "name": "Dangling fetch: GET /api/v1/portal-users?${params} (src/app/(dashboard)/settings/portal-users/page.tsx:55)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/portal-users?${params} (src/app/(dashboard)/settings/portal-users/page.tsx:55)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/portal-users/page.tsx:55` calls `GET /api/v1/portal-users?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/portal-users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-abb573460ea0f9b3", "name": "Dangling fetch: PATCH /api/v1/portal-users (src/app/(dashboard)/settings/portal-users/page.tsx:67)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/portal-users (src/app/(dashboard)/settings/portal-users/page.tsx:67)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/portal-users/page.tsx:67` calls `PATCH /api/v1/portal-users` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/portal-users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7919ad6dfbad4de1", "name": "Dangling fetch: PATCH /api/v1/portal-users (src/app/(dashboard)/settings/portal-users/page.tsx:77)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/portal-users (src/app/(dashboard)/settings/portal-users/page.tsx:77)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/portal-users/page.tsx:77` calls `PATCH /api/v1/portal-users` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/portal-users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eb3f55e0783d232f", "name": "Dangling fetch: PATCH /api/v1/portal-users (src/app/(dashboard)/settings/portal-users/page.tsx:88)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/portal-users (src/app/(dashboard)/settings/portal-users/page.tsx:88)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/portal-users/page.tsx:88` calls `PATCH /api/v1/portal-users` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/portal-users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-12a4b81772223cda", "name": "Dangling fetch: PATCH /api/v1/portal-users (src/app/(dashboard)/settings/portal-users/page.tsx:99)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/portal-users (src/app/(dashboard)/settings/portal-users/page.tsx:99)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/portal-users/page.tsx:99` calls `PATCH /api/v1/portal-users` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/portal-users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dfb4b145d80c1948", "name": "Dangling fetch: PATCH /api/v1/portal-users (src/app/(dashboard)/settings/portal-users/page.tsx:110)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/portal-users (src/app/(dashboard)/settings/portal-users/page.tsx:110)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/portal-users/page.tsx:110` calls `PATCH /api/v1/portal-users` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/portal-users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-01da822d985a8bab", "name": "Dangling fetch: PATCH /api/v1/portal-users (src/app/(dashboard)/settings/portal-users/page.tsx:121)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/portal-users (src/app/(dashboard)/settings/portal-users/page.tsx:121)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/portal-users/page.tsx:121` calls `PATCH /api/v1/portal-users` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/portal-users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e304b3ac0441e51c", "name": "Dangling fetch: GET /api/v1/settings/ai-features (src/app/(dashboard)/settings/ai-automation/page.tsx:121)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/settings/ai-features (src/app/(dashboard)/settings/ai-automation/page.tsx:121)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/ai-automation/page.tsx:121` calls `GET /api/v1/settings/ai-features` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/ai-features`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f816429f84979b75", "name": "Dangling fetch: GET /api/v1/ai-shadow-actions?status=pending&limit=1 (src/app/(dashboard)/settings/ai-automation/page.ts", "shortDescription": {"text": "Dangling fetch: GET /api/v1/ai-shadow-actions?status=pending&limit=1 (src/app/(dashboard)/settings/ai-automation/page.tsx:122)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/ai-automation/page.tsx:122` calls `GET /api/v1/ai-shadow-actions?status=pending&limit=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ai-shadow-actions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a678c8f6df740d37", "name": "Dangling fetch: GET /api/v1/settings/ai-budget (src/app/(dashboard)/settings/ai-automation/page.tsx:123)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/settings/ai-budget (src/app/(dashboard)/settings/ai-automation/page.tsx:123)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/ai-automation/page.tsx:123` calls `GET /api/v1/settings/ai-budget` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/ai-budget`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-002dbb109d594907", "name": "Dangling fetch: GET /api/v1/settings/ai-delivery (src/app/(dashboard)/settings/ai-automation/page.tsx:124)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/settings/ai-delivery (src/app/(dashboard)/settings/ai-automation/page.tsx:124)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/ai-automation/page.tsx:124` calls `GET /api/v1/settings/ai-delivery` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/ai-delivery`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-094c2cec7db7e6cb", "name": "Dangling fetch: GET /api/v1/settings/ai-stats (src/app/(dashboard)/settings/ai-automation/page.tsx:125)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/settings/ai-stats (src/app/(dashboard)/settings/ai-automation/page.tsx:125)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/ai-automation/page.tsx:125` calls `GET /api/v1/settings/ai-stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/ai-stats`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1d70ba58ca4725c5", "name": "Dangling fetch: PATCH /api/v1/settings/ai-features (src/app/(dashboard)/settings/ai-automation/page.tsx:163)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/settings/ai-features (src/app/(dashboard)/settings/ai-automation/page.tsx:163)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/ai-automation/page.tsx:163` calls `PATCH /api/v1/settings/ai-features` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/ai-features`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1df3d726a47f4990", "name": "Dangling fetch: PATCH /api/v1/settings/ai-budget (src/app/(dashboard)/settings/ai-automation/page.tsx:181)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/settings/ai-budget (src/app/(dashboard)/settings/ai-automation/page.tsx:181)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/ai-automation/page.tsx:181` calls `PATCH /api/v1/settings/ai-budget` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/ai-budget`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fda7af1747d964c3", "name": "Dangling fetch: PATCH /api/v1/settings/ai-delivery (src/app/(dashboard)/settings/ai-automation/page.tsx:195)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/settings/ai-delivery (src/app/(dashboard)/settings/ai-automation/page.tsx:195)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/ai-automation/page.tsx:195` calls `PATCH /api/v1/settings/ai-delivery` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/ai-delivery`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-856f0625074a64ed", "name": "Dangling fetch: GET /api/finance/payment-orders/notification-settings (src/app/(dashboard)/settings/finance-notification", "shortDescription": {"text": "Dangling fetch: GET /api/finance/payment-orders/notification-settings (src/app/(dashboard)/settings/finance-notifications/page.tsx:61)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/finance-notifications/page.tsx:61` calls `GET /api/finance/payment-orders/notification-settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/finance/payment-orders/notification-settings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-704281810a925551", "name": "Dangling fetch: PUT /api/finance/payment-orders/notification-settings (src/app/(dashboard)/settings/finance-notification", "shortDescription": {"text": "Dangling fetch: PUT /api/finance/payment-orders/notification-settings (src/app/(dashboard)/settings/finance-notifications/page.tsx:72)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/finance-notifications/page.tsx:72` calls `PUT /api/finance/payment-orders/notification-settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/finance/payment-orders/notification-settings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e98b70e1b1275240", "name": "Dangling fetch: GET /api/v1/audit-log (src/app/(dashboard)/settings/audit-log/page.tsx:42)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/audit-log (src/app/(dashboard)/settings/audit-log/page.tsx:42)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/audit-log/page.tsx:42` calls `GET /api/v1/audit-log` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/audit-log`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-48dfa4f92a654512", "name": "Dangling fetch: GET /api/v1/task-templates (src/app/(dashboard)/settings/task-templates/page.tsx:91)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/task-templates (src/app/(dashboard)/settings/task-templates/page.tsx:91)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/task-templates/page.tsx:91` calls `GET /api/v1/task-templates` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/task-templates`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-55212e91520dc403", "name": "Dangling fetch: DELETE /api/v1/task-templates/${deleteId} (src/app/(dashboard)/settings/task-templates/page.tsx:170)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/task-templates/${deleteId} (src/app/(dashboard)/settings/task-templates/page.tsx:170)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/task-templates/page.tsx:170` calls `DELETE /api/v1/task-templates/${deleteId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/task-templates/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-35d1719871151a9f", "name": "Dangling fetch: GET /api/v1/dashboard/widget-config (src/app/(dashboard)/settings/dashboard/page.tsx:50)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/dashboard/widget-config (src/app/(dashboard)/settings/dashboard/page.tsx:50)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/dashboard/page.tsx:50` calls `GET /api/v1/dashboard/widget-config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/dashboard/widget-config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2e957fa65f12e99c", "name": "Dangling fetch: PUT /api/v1/dashboard/widget-config (src/app/(dashboard)/settings/dashboard/page.tsx:73)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/dashboard/widget-config (src/app/(dashboard)/settings/dashboard/page.tsx:73)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/dashboard/page.tsx:73` calls `PUT /api/v1/dashboard/widget-config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/dashboard/widget-config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e56d2cb48c6c3ee3", "name": "Dangling fetch: GET /api/v1/pipelines (src/app/(dashboard)/settings/pipelines/page.tsx:170)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/pipelines (src/app/(dashboard)/settings/pipelines/page.tsx:170)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/pipelines/page.tsx:170` calls `GET /api/v1/pipelines` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pipelines`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5c5a45dd0a24f37b", "name": "Dangling fetch: POST /api/v1/pipelines (src/app/(dashboard)/settings/pipelines/page.tsx:196)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/pipelines (src/app/(dashboard)/settings/pipelines/page.tsx:196)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/pipelines/page.tsx:196` calls `POST /api/v1/pipelines` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pipelines`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4120eb5e6e57e6ca", "name": "Dangling fetch: DELETE /api/v1/pipelines/${pipelineId} (src/app/(dashboard)/settings/pipelines/page.tsx:227)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/pipelines/${pipelineId} (src/app/(dashboard)/settings/pipelines/page.tsx:227)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/pipelines/page.tsx:227` calls `DELETE /api/v1/pipelines/${pipelineId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pipelines/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3a350ef3cb2e8b45", "name": "Dangling fetch: PATCH /api/v1/pipelines/${pipelineId} (src/app/(dashboard)/settings/pipelines/page.tsx:237)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/pipelines/${pipelineId} (src/app/(dashboard)/settings/pipelines/page.tsx:237)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/pipelines/page.tsx:237` calls `PATCH /api/v1/pipelines/${pipelineId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pipelines/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-35cc89d04cba7fae", "name": "Dangling fetch: PATCH /api/v1/pipeline-stages/${stageId} (src/app/(dashboard)/settings/pipelines/page.tsx:260)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/pipeline-stages/${stageId} (src/app/(dashboard)/settings/pipelines/page.tsx:260)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/pipelines/page.tsx:260` calls `PATCH /api/v1/pipeline-stages/${stageId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pipeline-stages/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dc0893c7f2f0b908", "name": "Dangling fetch: DELETE /api/v1/pipeline-stages/${stageId} (src/app/(dashboard)/settings/pipelines/page.tsx:287)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/pipeline-stages/${stageId} (src/app/(dashboard)/settings/pipelines/page.tsx:287)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/pipelines/page.tsx:287` calls `DELETE /api/v1/pipeline-stages/${stageId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pipeline-stages/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d22170b2fa4c0a53", "name": "Dangling fetch: PATCH /api/v1/pipeline-stages/${stages[idx].id} (src/app/(dashboard)/settings/pipelines/page.tsx:303)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/pipeline-stages/${stages[idx].id} (src/app/(dashboard)/settings/pipelines/page.tsx:303)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/pipelines/page.tsx:303` calls `PATCH /api/v1/pipeline-stages/${stages[idx].id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pipeline-stages/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-550829edcb8bd174", "name": "Dangling fetch: PATCH /api/v1/pipeline-stages/${stages[swapIdx].id} (src/app/(dashboard)/settings/pipelines/page.tsx:308", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/pipeline-stages/${stages[swapIdx].id} (src/app/(dashboard)/settings/pipelines/page.tsx:308)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/pipelines/page.tsx:308` calls `PATCH /api/v1/pipeline-stages/${stages[swapIdx].id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pipeline-stages/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-acbd6308a00b604c", "name": "Dangling fetch: POST /api/v1/pipeline-stages (src/app/(dashboard)/settings/pipelines/page.tsx:322)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/pipeline-stages (src/app/(dashboard)/settings/pipelines/page.tsx:322)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/pipelines/page.tsx:322` calls `POST /api/v1/pipeline-stages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pipeline-stages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9cf6679c076bcf64", "name": "Dangling fetch: GET /api/v1/pipeline-stages/${stageId}/rules (src/app/(dashboard)/settings/pipelines/page.tsx:353)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/pipeline-stages/${stageId}/rules (src/app/(dashboard)/settings/pipelines/page.tsx:353)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/pipelines/page.tsx:353` calls `GET /api/v1/pipeline-stages/${stageId}/rules` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pipeline-stages/<p>/rules`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-da7a38fe7dbf7013", "name": "Dangling fetch: POST /api/v1/pipeline-stages/${stageId}/rules (src/app/(dashboard)/settings/pipelines/page.tsx:388)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/pipeline-stages/${stageId}/rules (src/app/(dashboard)/settings/pipelines/page.tsx:388)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/pipelines/page.tsx:388` calls `POST /api/v1/pipeline-stages/${stageId}/rules` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pipeline-stages/<p>/rules`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4766a7032b32ceb0", "name": "Dangling fetch: DELETE /api/v1/pipeline-stages/${stageId}/rules (src/app/(dashboard)/settings/pipelines/page.tsx:408)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/pipeline-stages/${stageId}/rules (src/app/(dashboard)/settings/pipelines/page.tsx:408)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/pipelines/page.tsx:408` calls `DELETE /api/v1/pipeline-stages/${stageId}/rules` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pipeline-stages/<p>/rules`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8e8a284c947df21c", "name": "Dangling fetch: POST /api/v1/ticket-queues (src/app/(dashboard)/settings/ticket-queues/page.tsx:77)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/ticket-queues (src/app/(dashboard)/settings/ticket-queues/page.tsx:77)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/ticket-queues/page.tsx:77` calls `POST /api/v1/ticket-queues` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ticket-queues`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4a6b2d3e1ca3749d", "name": "Dangling fetch: GET /api/v1/ticket-queues (src/app/(dashboard)/settings/ticket-queues/page.tsx:207)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/ticket-queues (src/app/(dashboard)/settings/ticket-queues/page.tsx:207)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/ticket-queues/page.tsx:207` calls `GET /api/v1/ticket-queues` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ticket-queues`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a1e4815b46117bda", "name": "Dangling fetch: PATCH /api/v1/ticket-queues/${queue.id} (src/app/(dashboard)/settings/ticket-queues/page.tsx:224)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/ticket-queues/${queue.id} (src/app/(dashboard)/settings/ticket-queues/page.tsx:224)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/ticket-queues/page.tsx:224` calls `PATCH /api/v1/ticket-queues/${queue.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ticket-queues/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eded4dad3dfc63ce", "name": "Dangling fetch: DELETE /api/v1/ticket-queues/${deleteItem.id} (src/app/(dashboard)/settings/ticket-queues/page.tsx:237)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/ticket-queues/${deleteItem.id} (src/app/(dashboard)/settings/ticket-queues/page.tsx:237)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/ticket-queues/page.tsx:237` calls `DELETE /api/v1/ticket-queues/${deleteItem.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ticket-queues/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-49d18aec943b955a", "name": "Dangling fetch: GET /api/v1/settings/field-permissions?entityType=${entityType} (src/app/(dashboard)/settings/field-perm", "shortDescription": {"text": "Dangling fetch: GET /api/v1/settings/field-permissions?entityType=${entityType} (src/app/(dashboard)/settings/field-permissions/page.tsx:81)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/field-permissions/page.tsx:81` calls `GET /api/v1/settings/field-permissions?entityType=${entityType}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/field-permissions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0d5ee603106c8020", "name": "Dangling fetch: GET /api/v1/settings/sharing-rules (src/app/(dashboard)/settings/field-permissions/page.tsx:103)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/settings/sharing-rules (src/app/(dashboard)/settings/field-permissions/page.tsx:103)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/field-permissions/page.tsx:103` calls `GET /api/v1/settings/sharing-rules` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/sharing-rules`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-85b6174b8244d69a", "name": "Dangling fetch: PUT /api/v1/settings/field-permissions (src/app/(dashboard)/settings/field-permissions/page.tsx:144)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/settings/field-permissions (src/app/(dashboard)/settings/field-permissions/page.tsx:144)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/field-permissions/page.tsx:144` calls `PUT /api/v1/settings/field-permissions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/field-permissions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-26a918dea7323d39", "name": "Dangling fetch: DELETE /api/v1/settings/sharing-rules/${deleteRuleId} (src/app/(dashboard)/settings/field-permissions/pa", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/settings/sharing-rules/${deleteRuleId} (src/app/(dashboard)/settings/field-permissions/page.tsx:185)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/field-permissions/page.tsx:185` calls `DELETE /api/v1/settings/sharing-rules/${deleteRuleId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/sharing-rules/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-faace32ede167f29", "name": "Dangling fetch: PUT /api/v1/settings/sharing-rules/${rule.id} (src/app/(dashboard)/settings/field-permissions/page.tsx:1", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/settings/sharing-rules/${rule.id} (src/app/(dashboard)/settings/field-permissions/page.tsx:195)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/field-permissions/page.tsx:195` calls `PUT /api/v1/settings/sharing-rules/${rule.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/sharing-rules/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-85abed7de6c682a4", "name": "Dangling fetch: POST /api/v1/escalation-rules (src/app/(dashboard)/settings/escalation/page.tsx:111)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/escalation-rules (src/app/(dashboard)/settings/escalation/page.tsx:111)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/escalation/page.tsx:111` calls `POST /api/v1/escalation-rules` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/escalation-rules`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-311314e383228f86", "name": "Dangling fetch: GET /api/v1/escalation-rules (src/app/(dashboard)/settings/escalation/page.tsx:265)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/escalation-rules (src/app/(dashboard)/settings/escalation/page.tsx:265)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/escalation/page.tsx:265` calls `GET /api/v1/escalation-rules` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/escalation-rules`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c5a4a04d9cdcace9", "name": "Dangling fetch: PATCH /api/v1/escalation-rules/${rule.id} (src/app/(dashboard)/settings/escalation/page.tsx:282)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/escalation-rules/${rule.id} (src/app/(dashboard)/settings/escalation/page.tsx:282)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/escalation/page.tsx:282` calls `PATCH /api/v1/escalation-rules/${rule.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/escalation-rules/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1ead4817af7f4173", "name": "Dangling fetch: DELETE /api/v1/escalation-rules/${deleteItem.id} (src/app/(dashboard)/settings/escalation/page.tsx:295)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/escalation-rules/${deleteItem.id} (src/app/(dashboard)/settings/escalation/page.tsx:295)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/escalation/page.tsx:295` calls `DELETE /api/v1/escalation-rules/${deleteItem.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/escalation-rules/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-11f32f3f17ba3da5", "name": "Dangling fetch: GET /api/v1/ticket-macros (src/app/(dashboard)/settings/macros/page.tsx:357)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/ticket-macros (src/app/(dashboard)/settings/macros/page.tsx:357)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/macros/page.tsx:357` calls `GET /api/v1/ticket-macros` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ticket-macros`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b0566d8d42d72149", "name": "Dangling fetch: PUT /api/v1/ticket-macros/${macro.id} (src/app/(dashboard)/settings/macros/page.tsx:384)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/ticket-macros/${macro.id} (src/app/(dashboard)/settings/macros/page.tsx:384)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/macros/page.tsx:384` calls `PUT /api/v1/ticket-macros/${macro.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ticket-macros/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-151f114f40f4cb71", "name": "Dangling fetch: PUT /api/v1/ticket-macros/${macro.id} (src/app/(dashboard)/settings/macros/page.tsx:408)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/ticket-macros/${macro.id} (src/app/(dashboard)/settings/macros/page.tsx:408)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/macros/page.tsx:408` calls `PUT /api/v1/ticket-macros/${macro.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ticket-macros/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4e43abe36627bcc0", "name": "Dangling fetch: PUT /api/v1/ticket-macros/${editId} (src/app/(dashboard)/settings/macros/page.tsx:463)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/ticket-macros/${editId} (src/app/(dashboard)/settings/macros/page.tsx:463)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/macros/page.tsx:463` calls `PUT /api/v1/ticket-macros/${editId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ticket-macros/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-424c83f4788e5bf3", "name": "Dangling fetch: POST /api/v1/ticket-macros (src/app/(dashboard)/settings/macros/page.tsx:469)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/ticket-macros (src/app/(dashboard)/settings/macros/page.tsx:469)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/macros/page.tsx:469` calls `POST /api/v1/ticket-macros` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ticket-macros`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a5f6244aa4bd101c", "name": "Dangling fetch: DELETE /api/v1/ticket-macros/${id} (src/app/(dashboard)/settings/macros/page.tsx:482)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/ticket-macros/${id} (src/app/(dashboard)/settings/macros/page.tsx:482)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/macros/page.tsx:482` calls `DELETE /api/v1/ticket-macros/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ticket-macros/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5b012de0c03828fc", "name": "Dangling fetch: PUT /api/v1/ticket-macros/${id} (src/app/(dashboard)/settings/macros/page.tsx:487)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/ticket-macros/${id} (src/app/(dashboard)/settings/macros/page.tsx:487)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/macros/page.tsx:487` calls `PUT /api/v1/ticket-macros/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ticket-macros/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3b1f43c6a469ce76", "name": "Dangling fetch: GET /api/v1/contract-intake-forms (src/app/(dashboard)/settings/intake-forms/page.tsx:89)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contract-intake-forms (src/app/(dashboard)/settings/intake-forms/page.tsx:89)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/intake-forms/page.tsx:89` calls `GET /api/v1/contract-intake-forms` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contract-intake-forms`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-674a14384ac18ad2", "name": "Dangling fetch: DELETE /api/v1/contract-intake-forms/${form.id} (src/app/(dashboard)/settings/intake-forms/page.tsx:191)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/contract-intake-forms/${form.id} (src/app/(dashboard)/settings/intake-forms/page.tsx:191)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/intake-forms/page.tsx:191` calls `DELETE /api/v1/contract-intake-forms/${form.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contract-intake-forms/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0803af0b62f9ba3d", "name": "Dangling fetch: GET /api/v1/pitch-tokens (src/app/(dashboard)/settings/pitch-links/page.tsx:39)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/pitch-tokens (src/app/(dashboard)/settings/pitch-links/page.tsx:39)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/pitch-links/page.tsx:39` calls `GET /api/v1/pitch-tokens` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pitch-tokens`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5dfe36b466f1fc85", "name": "Dangling fetch: POST /api/v1/pitch-tokens (src/app/(dashboard)/settings/pitch-links/page.tsx:54)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/pitch-tokens (src/app/(dashboard)/settings/pitch-links/page.tsx:54)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/pitch-links/page.tsx:54` calls `POST /api/v1/pitch-tokens` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pitch-tokens`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-094b6c3d644f0ff4", "name": "Dangling fetch: DELETE /api/v1/pitch-tokens/${id} (src/app/(dashboard)/settings/pitch-links/page.tsx:73)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/pitch-tokens/${id} (src/app/(dashboard)/settings/pitch-links/page.tsx:73)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/pitch-links/page.tsx:73` calls `DELETE /api/v1/pitch-tokens/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pitch-tokens/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-74a94557e5304b22", "name": "Dangling fetch: GET /api/v1/sales-quotas?year=${year} (src/app/(dashboard)/settings/quotas/page.tsx:51)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/sales-quotas?year=${year} (src/app/(dashboard)/settings/quotas/page.tsx:51)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/quotas/page.tsx:51` calls `GET /api/v1/sales-quotas?year=${year}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/sales-quotas`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-182e7cba578773eb", "name": "Dangling fetch: GET /api/v1/users?limit=100 (src/app/(dashboard)/settings/quotas/page.tsx:52)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users?limit=100 (src/app/(dashboard)/settings/quotas/page.tsx:52)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/quotas/page.tsx:52` calls `GET /api/v1/users?limit=100` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7d96f62289c06407", "name": "Dangling fetch: POST /api/v1/sales-quotas (src/app/(dashboard)/settings/quotas/page.tsx:68)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/sales-quotas (src/app/(dashboard)/settings/quotas/page.tsx:68)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/quotas/page.tsx:68` calls `POST /api/v1/sales-quotas` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/sales-quotas`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-607bd1dcfad5bc9e", "name": "Dangling fetch: DELETE /api/v1/sales-quotas/${id} (src/app/(dashboard)/settings/quotas/page.tsx:82)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/sales-quotas/${id} (src/app/(dashboard)/settings/quotas/page.tsx:82)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/quotas/page.tsx:82` calls `DELETE /api/v1/sales-quotas/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/sales-quotas/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e79106949db7c03b", "name": "Dangling fetch: PATCH /api/v1/sales-quotas/${id} (src/app/(dashboard)/settings/quotas/page.tsx:93)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/sales-quotas/${id} (src/app/(dashboard)/settings/quotas/page.tsx:93)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/quotas/page.tsx:93` calls `PATCH /api/v1/sales-quotas/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/sales-quotas/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-91d6cb677bbdb961", "name": "Dangling fetch: GET /api/v1/users (src/app/(dashboard)/settings/roles/page.tsx:117)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users (src/app/(dashboard)/settings/roles/page.tsx:117)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/roles/page.tsx:117` calls `GET /api/v1/users` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-54310b1d94e8a10f", "name": "Dangling fetch: GET /api/v1/settings/roles (src/app/(dashboard)/settings/roles/page.tsx:118)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/settings/roles (src/app/(dashboard)/settings/roles/page.tsx:118)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/roles/page.tsx:118` calls `GET /api/v1/settings/roles` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/roles`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-71834cbb335ff264", "name": "Dangling fetch: PUT /api/v1/settings/roles (src/app/(dashboard)/settings/roles/page.tsx:160)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/settings/roles (src/app/(dashboard)/settings/roles/page.tsx:160)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/roles/page.tsx:160` calls `PUT /api/v1/settings/roles` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/roles`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9d5eb7fb147b446b", "name": "Dangling fetch: POST /api/v1/settings/roles (src/app/(dashboard)/settings/roles/page.tsx:194)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/settings/roles (src/app/(dashboard)/settings/roles/page.tsx:194)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/roles/page.tsx:194` calls `POST /api/v1/settings/roles` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/roles`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-40b50f881a6279dd", "name": "Dangling fetch: DELETE /api/v1/settings/roles?id=${deleteRoleId} (src/app/(dashboard)/settings/roles/page.tsx:219)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/settings/roles?id=${deleteRoleId} (src/app/(dashboard)/settings/roles/page.tsx:219)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/roles/page.tsx:219` calls `DELETE /api/v1/settings/roles?id=${deleteRoleId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/roles`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0a44b310d37ae8f3", "name": "Dangling fetch: GET /api/v1/settings/invoice (src/app/(dashboard)/settings/invoice-settings/page.tsx:65)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/settings/invoice (src/app/(dashboard)/settings/invoice-settings/page.tsx:65)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/invoice-settings/page.tsx:65` calls `GET /api/v1/settings/invoice` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/invoice`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c2946cd99bb95c4e", "name": "Dangling fetch: PUT /api/v1/settings/invoice (src/app/(dashboard)/settings/invoice-settings/page.tsx:149)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/settings/invoice (src/app/(dashboard)/settings/invoice-settings/page.tsx:149)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/invoice-settings/page.tsx:149` calls `PUT /api/v1/settings/invoice` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/invoice`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7e902ab84399e979", "name": "Dangling fetch: GET /api/v1/contract-approval-rules (src/app/(dashboard)/settings/approval-rules/page.tsx:109)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contract-approval-rules (src/app/(dashboard)/settings/approval-rules/page.tsx:109)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/approval-rules/page.tsx:109` calls `GET /api/v1/contract-approval-rules` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contract-approval-rules`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0b36d903bce7f246", "name": "Dangling fetch: GET /api/v1/contract-templates?limit=100 (src/app/(dashboard)/settings/approval-rules/page.tsx:120)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contract-templates?limit=100 (src/app/(dashboard)/settings/approval-rules/page.tsx:120)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/approval-rules/page.tsx:120` calls `GET /api/v1/contract-templates?limit=100` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contract-templates`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fa9ce3e5e10625b8", "name": "Dangling fetch: DELETE /api/v1/contract-approval-rules/${rule.id} (src/app/(dashboard)/settings/approval-rules/page.tsx:", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/contract-approval-rules/${rule.id} (src/app/(dashboard)/settings/approval-rules/page.tsx:249)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/approval-rules/page.tsx:249` calls `DELETE /api/v1/contract-approval-rules/${rule.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contract-approval-rules/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a7563893b0aadca4", "name": "Dangling fetch: POST /api/v1/territories/${territory.id}/members (src/app/(dashboard)/settings/territories/page.tsx:174)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/territories/${territory.id}/members (src/app/(dashboard)/settings/territories/page.tsx:174)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/territories/page.tsx:174` calls `POST /api/v1/territories/${territory.id}/members` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/territories/<p>/members`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ff0770c917644253", "name": "Dangling fetch: DELETE /api/v1/territories/${territory.id}/members/${userId} (src/app/(dashboard)/settings/territories/p", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/territories/${territory.id}/members/${userId} (src/app/(dashboard)/settings/territories/page.tsx:192)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/territories/page.tsx:192` calls `DELETE /api/v1/territories/${territory.id}/members/${userId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/territories/<p>/members/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6a3c6c707cd769f0", "name": "Dangling fetch: GET /api/v1/territories (src/app/(dashboard)/settings/territories/page.tsx:276)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/territories (src/app/(dashboard)/settings/territories/page.tsx:276)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/territories/page.tsx:276` calls `GET /api/v1/territories` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/territories`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ef6036f4f74db64c", "name": "Dangling fetch: GET /api/v1/users?limit=200 (src/app/(dashboard)/settings/territories/page.tsx:277)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users?limit=200 (src/app/(dashboard)/settings/territories/page.tsx:277)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/territories/page.tsx:277` calls `GET /api/v1/users?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0a4287c0caa68cfc", "name": "Dangling fetch: DELETE /api/v1/territories/${deleteTarget.id} (src/app/(dashboard)/settings/territories/page.tsx:310)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/territories/${deleteTarget.id} (src/app/(dashboard)/settings/territories/page.tsx:310)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/territories/page.tsx:310` calls `DELETE /api/v1/territories/${deleteTarget.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/territories/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2121a6b55e409daf", "name": "Dangling fetch: GET /api/v1/territories (src/app/(dashboard)/settings/territories/page.tsx:316)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/territories (src/app/(dashboard)/settings/territories/page.tsx:316)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/territories/page.tsx:316` calls `GET /api/v1/territories` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/territories`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5f52754aecc33122", "name": "Dangling fetch: PATCH /api/v1/territories/${t.id} (src/app/(dashboard)/settings/territories/page.tsx:327)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/territories/${t.id} (src/app/(dashboard)/settings/territories/page.tsx:327)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/territories/page.tsx:327` calls `PATCH /api/v1/territories/${t.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/territories/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-75b727a84f3367b0", "name": "Dangling fetch: GET /api/v1/settings/organization (src/app/(dashboard)/settings/organization/page.tsx:51)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/settings/organization (src/app/(dashboard)/settings/organization/page.tsx:51)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/organization/page.tsx:51` calls `GET /api/v1/settings/organization` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/organization`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b633e6dca8981010", "name": "Dangling fetch: PUT /api/v1/settings/organization (src/app/(dashboard)/settings/organization/page.tsx:71)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/settings/organization (src/app/(dashboard)/settings/organization/page.tsx:71)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/organization/page.tsx:71` calls `PUT /api/v1/settings/organization` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/organization`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-54a11b886b2327af", "name": "Dangling fetch: GET /api/v1/api-keys (src/app/(dashboard)/settings/api-keys/page.tsx:63)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/api-keys (src/app/(dashboard)/settings/api-keys/page.tsx:63)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/api-keys/page.tsx:63` calls `GET /api/v1/api-keys` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/api-keys`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7500d72e63d96bc3", "name": "Dangling fetch: GET /api/v1/api-keys/scopes (src/app/(dashboard)/settings/api-keys/page.tsx:64)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/api-keys/scopes (src/app/(dashboard)/settings/api-keys/page.tsx:64)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/api-keys/page.tsx:64` calls `GET /api/v1/api-keys/scopes` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/api-keys/scopes`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0a5390e18381d42e", "name": "Dangling fetch: POST /api/v1/api-keys (src/app/(dashboard)/settings/api-keys/page.tsx:109)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/api-keys (src/app/(dashboard)/settings/api-keys/page.tsx:109)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/api-keys/page.tsx:109` calls `POST /api/v1/api-keys` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/api-keys`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4940dc23c8986e49", "name": "Dangling fetch: DELETE /api/v1/api-keys/${id} (src/app/(dashboard)/settings/api-keys/page.tsx:135)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/api-keys/${id} (src/app/(dashboard)/settings/api-keys/page.tsx:135)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/api-keys/page.tsx:135` calls `DELETE /api/v1/api-keys/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/api-keys/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9e3705422b03055c", "name": "Dangling fetch: GET /api/v1/email-templates?limit=500 (src/app/(dashboard)/settings/email-templates/page.tsx:43)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/email-templates?limit=500 (src/app/(dashboard)/settings/email-templates/page.tsx:43)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/email-templates/page.tsx:43` calls `GET /api/v1/email-templates?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/email-templates`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b8f1697df99c1342", "name": "Dangling fetch: DELETE /api/v1/email-templates/${deleteId} (src/app/(dashboard)/settings/email-templates/page.tsx:58)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/email-templates/${deleteId} (src/app/(dashboard)/settings/email-templates/page.tsx:58)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/email-templates/page.tsx:58` calls `DELETE /api/v1/email-templates/${deleteId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/email-templates/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-41a8e7dca06a31eb", "name": "Dangling fetch: GET /api/v1/workflows (src/app/(dashboard)/settings/workflows/page.tsx:148)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/workflows (src/app/(dashboard)/settings/workflows/page.tsx:148)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/workflows/page.tsx:148` calls `GET /api/v1/workflows` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/workflows`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8fbe75094c75ff17", "name": "Dangling fetch: DELETE /api/v1/workflows/${deleteId} (src/app/(dashboard)/settings/workflows/page.tsx:162)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/workflows/${deleteId} (src/app/(dashboard)/settings/workflows/page.tsx:162)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/workflows/page.tsx:162` calls `DELETE /api/v1/workflows/${deleteId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/workflows/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1513b2bcfac9bd4b", "name": "Dangling fetch: PUT /api/v1/workflows/${wf.id} (src/app/(dashboard)/settings/workflows/page.tsx:170)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/workflows/${wf.id} (src/app/(dashboard)/settings/workflows/page.tsx:170)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/workflows/page.tsx:170` calls `PUT /api/v1/workflows/${wf.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/workflows/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a80c00202e719da7", "name": "Dangling fetch: GET /api/v1/workflows/templates (src/app/(dashboard)/settings/workflows/templates/page.tsx:85)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/workflows/templates (src/app/(dashboard)/settings/workflows/templates/page.tsx:85)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/workflows/templates/page.tsx:85` calls `GET /api/v1/workflows/templates` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/workflows/templates`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-93a2ddfdce41d4c0", "name": "Dangling fetch: POST /api/v1/workflows/templates (src/app/(dashboard)/settings/workflows/templates/page.tsx:108)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/workflows/templates (src/app/(dashboard)/settings/workflows/templates/page.tsx:108)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/workflows/templates/page.tsx:108` calls `POST /api/v1/workflows/templates` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/workflows/templates`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f620b543e2e04cd8", "name": "Dangling fetch: GET /api/budgeting/cost-types?includeInactive=true (src/app/(dashboard)/settings/budget-config/page.tsx:", "shortDescription": {"text": "Dangling fetch: GET /api/budgeting/cost-types?includeInactive=true (src/app/(dashboard)/settings/budget-config/page.tsx:67)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/budget-config/page.tsx:67` calls `GET /api/budgeting/cost-types?includeInactive=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/cost-types`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-94fe23b489e2969f", "name": "Dangling fetch: GET /api/budgeting/departments?includeInactive=true (src/app/(dashboard)/settings/budget-config/page.tsx", "shortDescription": {"text": "Dangling fetch: GET /api/budgeting/departments?includeInactive=true (src/app/(dashboard)/settings/budget-config/page.tsx:68)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/budget-config/page.tsx:68` calls `GET /api/budgeting/departments?includeInactive=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/departments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1e832fc6e79f25bd", "name": "Dangling fetch: PUT /api/budgeting/cost-types (src/app/(dashboard)/settings/budget-config/page.tsx:93)", "shortDescription": {"text": "Dangling fetch: PUT /api/budgeting/cost-types (src/app/(dashboard)/settings/budget-config/page.tsx:93)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/budget-config/page.tsx:93` calls `PUT /api/budgeting/cost-types` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/cost-types`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-75d94742aa6ef205", "name": "Dangling fetch: POST /api/budgeting/cost-types (src/app/(dashboard)/settings/budget-config/page.tsx:99)", "shortDescription": {"text": "Dangling fetch: POST /api/budgeting/cost-types (src/app/(dashboard)/settings/budget-config/page.tsx:99)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/budget-config/page.tsx:99` calls `POST /api/budgeting/cost-types` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/cost-types`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1935487022832052", "name": "Dangling fetch: DELETE /api/budgeting/cost-types?id=${id} (src/app/(dashboard)/settings/budget-config/page.tsx:111)", "shortDescription": {"text": "Dangling fetch: DELETE /api/budgeting/cost-types?id=${id} (src/app/(dashboard)/settings/budget-config/page.tsx:111)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/budget-config/page.tsx:111` calls `DELETE /api/budgeting/cost-types?id=${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/cost-types`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e8665b9178154f0d", "name": "Dangling fetch: PUT /api/budgeting/departments (src/app/(dashboard)/settings/budget-config/page.tsx:131)", "shortDescription": {"text": "Dangling fetch: PUT /api/budgeting/departments (src/app/(dashboard)/settings/budget-config/page.tsx:131)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/budget-config/page.tsx:131` calls `PUT /api/budgeting/departments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/departments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-731511b6e1865c99", "name": "Dangling fetch: POST /api/budgeting/departments (src/app/(dashboard)/settings/budget-config/page.tsx:137)", "shortDescription": {"text": "Dangling fetch: POST /api/budgeting/departments (src/app/(dashboard)/settings/budget-config/page.tsx:137)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/budget-config/page.tsx:137` calls `POST /api/budgeting/departments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/departments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-54328e4e0a03b075", "name": "Dangling fetch: DELETE /api/budgeting/departments?id=${id} (src/app/(dashboard)/settings/budget-config/page.tsx:149)", "shortDescription": {"text": "Dangling fetch: DELETE /api/budgeting/departments?id=${id} (src/app/(dashboard)/settings/budget-config/page.tsx:149)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/budget-config/page.tsx:149` calls `DELETE /api/budgeting/departments?id=${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/departments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d7ea0825c88bfb18", "name": "Dangling fetch: POST /api/v1/whatsapp/test (src/app/(dashboard)/settings/channels/page.tsx:64)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/whatsapp/test (src/app/(dashboard)/settings/channels/page.tsx:64)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/channels/page.tsx:64` calls `POST /api/v1/whatsapp/test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/whatsapp/test`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5e54201d297698bc", "name": "Dangling fetch: GET /api/v1/channels (src/app/(dashboard)/settings/channels/page.tsx:86)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/channels (src/app/(dashboard)/settings/channels/page.tsx:86)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/channels/page.tsx:86` calls `GET /api/v1/channels` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/channels`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-596260945149af13", "name": "Dangling fetch: DELETE /api/v1/channels/${deleteId} (src/app/(dashboard)/settings/channels/page.tsx:100)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/channels/${deleteId} (src/app/(dashboard)/settings/channels/page.tsx:100)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/channels/page.tsx:100` calls `DELETE /api/v1/channels/${deleteId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/channels/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bdd5ba62ef8715b8", "name": "Dangling fetch: GET /api/v1/whatsapp/templates?status=all (src/app/(dashboard)/settings/channels/whatsapp/page.tsx:81)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/whatsapp/templates?status=all (src/app/(dashboard)/settings/channels/whatsapp/page.tsx:81)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/channels/whatsapp/page.tsx:81` calls `GET /api/v1/whatsapp/templates?status=all` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/whatsapp/templates`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5242aa7a12c072cc", "name": "Dangling fetch: GET /api/v1/whatsapp/notification-settings (src/app/(dashboard)/settings/channels/whatsapp/page.tsx:96)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/whatsapp/notification-settings (src/app/(dashboard)/settings/channels/whatsapp/page.tsx:96)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/channels/whatsapp/page.tsx:96` calls `GET /api/v1/whatsapp/notification-settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/whatsapp/notification-settings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-65a993b55b400b6a", "name": "Dangling fetch: PUT /api/v1/whatsapp/notification-settings (src/app/(dashboard)/settings/channels/whatsapp/page.tsx:124)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/whatsapp/notification-settings (src/app/(dashboard)/settings/channels/whatsapp/page.tsx:124)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/channels/whatsapp/page.tsx:124` calls `PUT /api/v1/whatsapp/notification-settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/whatsapp/notification-settings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e153897328d6bc78", "name": "Dangling fetch: POST /api/v1/whatsapp/validate (src/app/(dashboard)/settings/channels/whatsapp/page.tsx:150)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/whatsapp/validate (src/app/(dashboard)/settings/channels/whatsapp/page.tsx:150)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/channels/whatsapp/page.tsx:150` calls `POST /api/v1/whatsapp/validate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/whatsapp/validate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8e8e8ca1a5df7999", "name": "Dangling fetch: POST /api/v1/whatsapp/templates (src/app/(dashboard)/settings/channels/whatsapp/page.tsx:166)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/whatsapp/templates (src/app/(dashboard)/settings/channels/whatsapp/page.tsx:166)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/channels/whatsapp/page.tsx:166` calls `POST /api/v1/whatsapp/templates` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/whatsapp/templates`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-74d6b8447006a95e", "name": "Dangling fetch: GET /api/v1/lead-rules (src/app/(dashboard)/settings/lead-rules/page.tsx:53)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/lead-rules (src/app/(dashboard)/settings/lead-rules/page.tsx:53)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/lead-rules/page.tsx:53` calls `GET /api/v1/lead-rules` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/lead-rules`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-87f672c435cbe863", "name": "Dangling fetch: PUT /api/v1/lead-rules/${rule.id} (src/app/(dashboard)/settings/lead-rules/page.tsx:63)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/lead-rules/${rule.id} (src/app/(dashboard)/settings/lead-rules/page.tsx:63)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/lead-rules/page.tsx:63` calls `PUT /api/v1/lead-rules/${rule.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/lead-rules/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8b792fe203240ae0", "name": "Dangling fetch: DELETE /api/v1/lead-rules/${id} (src/app/(dashboard)/settings/lead-rules/page.tsx:74)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/lead-rules/${id} (src/app/(dashboard)/settings/lead-rules/page.tsx:74)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/lead-rules/page.tsx:74` calls `DELETE /api/v1/lead-rules/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/lead-rules/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8da2e3ebc7e697a4", "name": "Dangling fetch: POST /api/v1/lead-rules (src/app/(dashboard)/settings/lead-rules/page.tsx:82)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/lead-rules (src/app/(dashboard)/settings/lead-rules/page.tsx:82)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/lead-rules/page.tsx:82` calls `POST /api/v1/lead-rules` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/lead-rules`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8120178d56e039ab", "name": "Dangling fetch: PUT /api/v1/lead-rules/${editingId} (src/app/(dashboard)/settings/lead-rules/page.tsx:119)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/lead-rules/${editingId} (src/app/(dashboard)/settings/lead-rules/page.tsx:119)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/lead-rules/page.tsx:119` calls `PUT /api/v1/lead-rules/${editingId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/lead-rules/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2a223275dff90b42", "name": "Dangling fetch: GET /api/v1/channels?type=voip (src/app/(dashboard)/settings/voip/page.tsx:67)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/channels?type=voip (src/app/(dashboard)/settings/voip/page.tsx:67)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/voip/page.tsx:67` calls `GET /api/v1/channels?type=voip` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/channels`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6b9e293e4b8029c9", "name": "Dangling fetch: PUT /api/v1/channels/${configId} (src/app/(dashboard)/settings/voip/page.tsx:160)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/channels/${configId} (src/app/(dashboard)/settings/voip/page.tsx:160)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/voip/page.tsx:160` calls `PUT /api/v1/channels/${configId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/channels/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-426d4f75ca4a52fa", "name": "Dangling fetch: POST /api/v1/channels (src/app/(dashboard)/settings/voip/page.tsx:166)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/channels (src/app/(dashboard)/settings/voip/page.tsx:166)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/voip/page.tsx:166` calls `POST /api/v1/channels` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/channels`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-280f80879fc6943d", "name": "Dangling fetch: POST /api/v1/calls/test (src/app/(dashboard)/settings/voip/page.tsx:186)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/calls/test (src/app/(dashboard)/settings/voip/page.tsx:186)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/voip/page.tsx:186` calls `POST /api/v1/calls/test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/calls/test`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5e889aa90a38528e", "name": "Dangling fetch: GET /api/v1/currencies (src/app/(dashboard)/settings/currencies/page.tsx:41)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/currencies (src/app/(dashboard)/settings/currencies/page.tsx:41)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/currencies/page.tsx:41` calls `GET /api/v1/currencies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/currencies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cba1f4e964703f79", "name": "Dangling fetch: DELETE /api/v1/currencies/${deleteId} (src/app/(dashboard)/settings/currencies/page.tsx:55)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/currencies/${deleteId} (src/app/(dashboard)/settings/currencies/page.tsx:55)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/currencies/page.tsx:55` calls `DELETE /api/v1/currencies/${deleteId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/currencies/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-46729b7202e0eb14", "name": "Dangling fetch: GET /api/budgeting/departments?includeInactive=false (src/app/(dashboard)/settings/sales-forecast/page.t", "shortDescription": {"text": "Dangling fetch: GET /api/budgeting/departments?includeInactive=false (src/app/(dashboard)/settings/sales-forecast/page.tsx:64)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/sales-forecast/page.tsx:64` calls `GET /api/budgeting/departments?includeInactive=false` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/departments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5ca14f6282402a6c", "name": "Dangling fetch: GET /api/budgeting/sales-forecast?year=${year} (src/app/(dashboard)/settings/sales-forecast/page.tsx:65)", "shortDescription": {"text": "Dangling fetch: GET /api/budgeting/sales-forecast?year=${year} (src/app/(dashboard)/settings/sales-forecast/page.tsx:65)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/sales-forecast/page.tsx:65` calls `GET /api/budgeting/sales-forecast?year=${year}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/sales-forecast`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b5c8fc32d8b51f80", "name": "Dangling fetch: POST /api/budgeting/sales-forecast (src/app/(dashboard)/settings/sales-forecast/page.tsx:149)", "shortDescription": {"text": "Dangling fetch: POST /api/budgeting/sales-forecast (src/app/(dashboard)/settings/sales-forecast/page.tsx:149)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/sales-forecast/page.tsx:149` calls `POST /api/budgeting/sales-forecast` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/sales-forecast`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3e88fa0c14cc2bf1", "name": "Dangling fetch: GET /api/budgeting/sales-forecast/export?year=${year} (src/app/(dashboard)/settings/sales-forecast/page.", "shortDescription": {"text": "Dangling fetch: GET /api/budgeting/sales-forecast/export?year=${year} (src/app/(dashboard)/settings/sales-forecast/page.tsx:168)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/sales-forecast/page.tsx:168` calls `GET /api/budgeting/sales-forecast/export?year=${year}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/sales-forecast/export`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5dfb4d355a7d738b", "name": "Dangling fetch: POST /api/budgeting/sales-forecast/import (src/app/(dashboard)/settings/sales-forecast/page.tsx:189)", "shortDescription": {"text": "Dangling fetch: POST /api/budgeting/sales-forecast/import (src/app/(dashboard)/settings/sales-forecast/page.tsx:189)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/sales-forecast/page.tsx:189` calls `POST /api/budgeting/sales-forecast/import` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/sales-forecast/import`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-089ffe61274a9ec3", "name": "Dangling fetch: GET /api/v1/web-chat/config (src/app/(dashboard)/settings/web-chat/page.tsx:47)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/web-chat/config (src/app/(dashboard)/settings/web-chat/page.tsx:47)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/web-chat/page.tsx:47` calls `GET /api/v1/web-chat/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/web-chat/config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6d95cc5ad9691351", "name": "Dangling fetch: PUT /api/v1/web-chat/config (src/app/(dashboard)/settings/web-chat/page.tsx:95)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/web-chat/config (src/app/(dashboard)/settings/web-chat/page.tsx:95)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/web-chat/page.tsx:95` calls `PUT /api/v1/web-chat/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/web-chat/config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cc90e0dfe571565e", "name": "Dangling fetch: POST /api/v1/web-chat/config (src/app/(dashboard)/settings/web-chat/page.tsx:124)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/web-chat/config (src/app/(dashboard)/settings/web-chat/page.tsx:124)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/web-chat/page.tsx:124` calls `POST /api/v1/web-chat/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/web-chat/config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c08f48c6059eb8c0", "name": "Dangling fetch: GET /api/v1/users/me/approval-delegates (src/app/(dashboard)/settings/approval-delegates/page.tsx:69)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users/me/approval-delegates (src/app/(dashboard)/settings/approval-delegates/page.tsx:69)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/approval-delegates/page.tsx:69` calls `GET /api/v1/users/me/approval-delegates` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/me/approval-delegates`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8c7f81cf8be4c1e1", "name": "Dangling fetch: GET /api/v1/users?isActive=true (src/app/(dashboard)/settings/approval-delegates/page.tsx:82)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users?isActive=true (src/app/(dashboard)/settings/approval-delegates/page.tsx:82)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/approval-delegates/page.tsx:82` calls `GET /api/v1/users?isActive=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-907bbfdf29b007c6", "name": "Dangling fetch: POST /api/v1/users/me/approval-delegates (src/app/(dashboard)/settings/approval-delegates/page.tsx:107)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/users/me/approval-delegates (src/app/(dashboard)/settings/approval-delegates/page.tsx:107)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/approval-delegates/page.tsx:107` calls `POST /api/v1/users/me/approval-delegates` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/me/approval-delegates`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dfacc04525aaf457", "name": "Dangling fetch: DELETE /api/v1/users/me/approval-delegates/${id} (src/app/(dashboard)/settings/approval-delegates/page.t", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/users/me/approval-delegates/${id} (src/app/(dashboard)/settings/approval-delegates/page.tsx:132)"}, "fullDescription": {"text": "`src/app/(dashboard)/settings/approval-delegates/page.tsx:132` calls `DELETE /api/v1/users/me/approval-delegates/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/me/approval-delegates/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3619a5561f5761d7", "name": "Dangling fetch: GET /api/v1/notifications?page=1 (src/app/(dashboard)/notifications/page.tsx:62)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/notifications?page=1 (src/app/(dashboard)/notifications/page.tsx:62)"}, "fullDescription": {"text": "`src/app/(dashboard)/notifications/page.tsx:62` calls `GET /api/v1/notifications?page=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/notifications`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-935f05fba56d1c70", "name": "Dangling fetch: GET /api/v1/notifications?page=${nextPage} (src/app/(dashboard)/notifications/page.tsx:81)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/notifications?page=${nextPage} (src/app/(dashboard)/notifications/page.tsx:81)"}, "fullDescription": {"text": "`src/app/(dashboard)/notifications/page.tsx:81` calls `GET /api/v1/notifications?page=${nextPage}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/notifications`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a8897dfbe20615fc", "name": "Dangling fetch: PATCH /api/v1/notifications (src/app/(dashboard)/notifications/page.tsx:99)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/notifications (src/app/(dashboard)/notifications/page.tsx:99)"}, "fullDescription": {"text": "`src/app/(dashboard)/notifications/page.tsx:99` calls `PATCH /api/v1/notifications` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/notifications`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7be6b214aca52a8f", "name": "Dangling fetch: PATCH /api/v1/notifications (src/app/(dashboard)/notifications/page.tsx:113)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/notifications (src/app/(dashboard)/notifications/page.tsx:113)"}, "fullDescription": {"text": "`src/app/(dashboard)/notifications/page.tsx:113` calls `PATCH /api/v1/notifications` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/notifications`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-acbd3fc345f6f4d7", "name": "Dangling fetch: GET /api/v1/journeys/enroll?journeyId=${journeyId} (src/app/(dashboard)/journeys/page.tsx:135)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/journeys/enroll?journeyId=${journeyId} (src/app/(dashboard)/journeys/page.tsx:135)"}, "fullDescription": {"text": "`src/app/(dashboard)/journeys/page.tsx:135` calls `GET /api/v1/journeys/enroll?journeyId=${journeyId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/journeys/enroll`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-57a3209bf327679b", "name": "Dangling fetch: PATCH /api/v1/journeys/enrollments/${enrollmentId} (src/app/(dashboard)/journeys/page.tsx:146)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/journeys/enrollments/${enrollmentId} (src/app/(dashboard)/journeys/page.tsx:146)"}, "fullDescription": {"text": "`src/app/(dashboard)/journeys/page.tsx:146` calls `PATCH /api/v1/journeys/enrollments/${enrollmentId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/journeys/enrollments/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bbaca2bba3ecced4", "name": "Dangling fetch: GET /api/v1/journeys?limit=500 (src/app/(dashboard)/journeys/page.tsx:261)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/journeys?limit=500 (src/app/(dashboard)/journeys/page.tsx:261)"}, "fullDescription": {"text": "`src/app/(dashboard)/journeys/page.tsx:261` calls `GET /api/v1/journeys?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/journeys`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ab25eed9a97440a1", "name": "Dangling fetch: GET /api/v1/journeys/enroll (src/app/(dashboard)/journeys/page.tsx:267)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/journeys/enroll (src/app/(dashboard)/journeys/page.tsx:267)"}, "fullDescription": {"text": "`src/app/(dashboard)/journeys/page.tsx:267` calls `GET /api/v1/journeys/enroll` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/journeys/enroll`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e419787178d1230a", "name": "Dangling fetch: DELETE /api/v1/journeys/${deleteId} (src/app/(dashboard)/journeys/page.tsx:286)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/journeys/${deleteId} (src/app/(dashboard)/journeys/page.tsx:286)"}, "fullDescription": {"text": "`src/app/(dashboard)/journeys/page.tsx:286` calls `DELETE /api/v1/journeys/${deleteId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/journeys/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5c6cf37f3103a0c8", "name": "Dangling fetch: PUT /api/v1/journeys/${journey.id} (src/app/(dashboard)/journeys/page.tsx:295)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/journeys/${journey.id} (src/app/(dashboard)/journeys/page.tsx:295)"}, "fullDescription": {"text": "`src/app/(dashboard)/journeys/page.tsx:295` calls `PUT /api/v1/journeys/${journey.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/journeys/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aec664d767ce8a4c", "name": "Dangling fetch: PUT /api/v1/journeys/${stepsJourney.id} (src/app/(dashboard)/journeys/page.tsx:333)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/journeys/${stepsJourney.id} (src/app/(dashboard)/journeys/page.tsx:333)"}, "fullDescription": {"text": "`src/app/(dashboard)/journeys/page.tsx:333` calls `PUT /api/v1/journeys/${stepsJourney.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/journeys/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a402501ec7ae4f8c", "name": "Dangling fetch: GET /api/v1/leads?limit=500 (src/app/(dashboard)/journeys/page.tsx:352)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/leads?limit=500 (src/app/(dashboard)/journeys/page.tsx:352)"}, "fullDescription": {"text": "`src/app/(dashboard)/journeys/page.tsx:352` calls `GET /api/v1/leads?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/leads`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9edae6633bfa0239", "name": "Dangling fetch: POST /api/v1/journeys/enroll (src/app/(dashboard)/journeys/page.tsx:379)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/journeys/enroll (src/app/(dashboard)/journeys/page.tsx:379)"}, "fullDescription": {"text": "`src/app/(dashboard)/journeys/page.tsx:379` calls `POST /api/v1/journeys/enroll` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/journeys/enroll`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8863112122b3aaca", "name": "Dangling fetch: PUT /api/v1/journeys/${stepsJourney!.id} (src/app/(dashboard)/journeys/page.tsx:576)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/journeys/${stepsJourney!.id} (src/app/(dashboard)/journeys/page.tsx:576)"}, "fullDescription": {"text": "`src/app/(dashboard)/journeys/page.tsx:576` calls `PUT /api/v1/journeys/${stepsJourney!.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/journeys/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ebb240e523c1c24a", "name": "Dangling fetch: GET /api/v1/ai-shadow-actions${qs} (src/app/(dashboard)/ai/actions/page.tsx:357)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/ai-shadow-actions${qs} (src/app/(dashboard)/ai/actions/page.tsx:357)"}, "fullDescription": {"text": "`src/app/(dashboard)/ai/actions/page.tsx:357` calls `GET /api/v1/ai-shadow-actions${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ai-shadow-actions/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cb68500e11c740bc", "name": "Dangling fetch: PATCH /api/v1/ai-shadow-actions (src/app/(dashboard)/ai/actions/page.tsx:432)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/ai-shadow-actions (src/app/(dashboard)/ai/actions/page.tsx:432)"}, "fullDescription": {"text": "`src/app/(dashboard)/ai/actions/page.tsx:432` calls `PATCH /api/v1/ai-shadow-actions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ai-shadow-actions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fc55b8e2b35b1f12", "name": "Dangling fetch: PATCH /api/v1/ai-shadow-actions (src/app/(dashboard)/ai/actions/page.tsx:465)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/ai-shadow-actions (src/app/(dashboard)/ai/actions/page.tsx:465)"}, "fullDescription": {"text": "`src/app/(dashboard)/ai/actions/page.tsx:465` calls `PATCH /api/v1/ai-shadow-actions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ai-shadow-actions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-60178063c007c3dc", "name": "Dangling fetch: GET /api/v1/apps (src/app/(dashboard)/marketplace/page.tsx:45)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/apps (src/app/(dashboard)/marketplace/page.tsx:45)"}, "fullDescription": {"text": "`src/app/(dashboard)/marketplace/page.tsx:45` calls `GET /api/v1/apps` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/apps`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ba1f216b523d6050", "name": "Dangling fetch: POST /api/v1/apps/${app.id}/install (src/app/(dashboard)/marketplace/page.tsx:67)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/apps/${app.id}/install (src/app/(dashboard)/marketplace/page.tsx:67)"}, "fullDescription": {"text": "`src/app/(dashboard)/marketplace/page.tsx:67` calls `POST /api/v1/apps/${app.id}/install` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/apps/<p>/install`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3eb01db84c87c408", "name": "Dangling fetch: PATCH /api/v1/apps/${app.id}/install (src/app/(dashboard)/marketplace/page.tsx:89)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/apps/${app.id}/install (src/app/(dashboard)/marketplace/page.tsx:89)"}, "fullDescription": {"text": "`src/app/(dashboard)/marketplace/page.tsx:89` calls `PATCH /api/v1/apps/${app.id}/install` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/apps/<p>/install`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c13c2e5ae5efd830", "name": "Dangling fetch: DELETE /api/v1/apps/${app.id}/install (src/app/(dashboard)/marketplace/page.tsx:110)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/apps/${app.id}/install (src/app/(dashboard)/marketplace/page.tsx:110)"}, "fullDescription": {"text": "`src/app/(dashboard)/marketplace/page.tsx:110` calls `DELETE /api/v1/apps/${app.id}/install` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/apps/<p>/install`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c1dfedc1544d7507", "name": "Dangling fetch: GET /api/v1/mtm/dashboard?period=${period} (src/app/(dashboard)/mtm/page.tsx:29)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/dashboard?period=${period} (src/app/(dashboard)/mtm/page.tsx:29)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/page.tsx:29` calls `GET /api/v1/mtm/dashboard?period=${period}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/dashboard`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-65e0a3499b7577db", "name": "Dangling fetch: GET /api/v1/mtm/settings (src/app/(dashboard)/mtm/settings/page.tsx:19)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/settings (src/app/(dashboard)/mtm/settings/page.tsx:19)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/settings/page.tsx:19` calls `GET /api/v1/mtm/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/settings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2887f1af5bc9e25c", "name": "Dangling fetch: PUT /api/v1/mtm/settings (src/app/(dashboard)/mtm/settings/page.tsx:35)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/mtm/settings (src/app/(dashboard)/mtm/settings/page.tsx:35)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/settings/page.tsx:35` calls `PUT /api/v1/mtm/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/settings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5345711a4ee3c14f", "name": "Dangling fetch: GET /api/v1/mtm/planogram-checks?${params} (src/app/(dashboard)/mtm/planogram-checks/page.tsx:67)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/planogram-checks?${params} (src/app/(dashboard)/mtm/planogram-checks/page.tsx:67)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/planogram-checks/page.tsx:67` calls `GET /api/v1/mtm/planogram-checks?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/planogram-checks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-818eb4e58a37e43d", "name": "Dangling fetch: GET /api/v1/mtm/shelf-analytics/summary (src/app/(dashboard)/mtm/planogram-checks/page.tsx:90)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/shelf-analytics/summary (src/app/(dashboard)/mtm/planogram-checks/page.tsx:90)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/planogram-checks/page.tsx:90` calls `GET /api/v1/mtm/shelf-analytics/summary` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/shelf-analytics/summary`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c1438cc4dd797bce", "name": "Dangling fetch: GET /api/v1/mtm/orders?limit=200 (src/app/(dashboard)/mtm/orders/page.tsx:35)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/orders?limit=200 (src/app/(dashboard)/mtm/orders/page.tsx:35)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/orders/page.tsx:35` calls `GET /api/v1/mtm/orders?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/orders`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7dd0ac14309f5e52", "name": "Dangling fetch: DELETE /api/v1/mtm/orders/${deleteItem.id} (src/app/(dashboard)/mtm/orders/page.tsx:72)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/mtm/orders/${deleteItem.id} (src/app/(dashboard)/mtm/orders/page.tsx:72)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/orders/page.tsx:72` calls `DELETE /api/v1/mtm/orders/${deleteItem.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/orders/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c5b6ea672f43038a", "name": "Dangling fetch: GET /api/v1/mtm/analytics?period=${period} (src/app/(dashboard)/mtm/analytics/page.tsx:33)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/analytics?period=${period} (src/app/(dashboard)/mtm/analytics/page.tsx:33)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/analytics/page.tsx:33` calls `GET /api/v1/mtm/analytics?period=${period}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/analytics`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-06aabefa0cc8019a", "name": "Dangling fetch: GET /api/v1/mtm/analytics/export?period=${period} (src/app/(dashboard)/mtm/analytics/page.tsx:52)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/analytics/export?period=${period} (src/app/(dashboard)/mtm/analytics/page.tsx:52)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/analytics/page.tsx:52` calls `GET /api/v1/mtm/analytics/export?period=${period}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/analytics/export`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-724e3f4948fb71b0", "name": "Dangling fetch: GET /api/v1/mtm/shelf-analytics?${params} (src/app/(dashboard)/mtm/shelf-analytics/page.tsx:68)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/shelf-analytics?${params} (src/app/(dashboard)/mtm/shelf-analytics/page.tsx:68)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/shelf-analytics/page.tsx:68` calls `GET /api/v1/mtm/shelf-analytics?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/shelf-analytics`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dc5203d46a9a6d60", "name": "Dangling fetch: GET /api/v1/mtm/shelf-analytics/${id} (src/app/(dashboard)/mtm/shelf-analytics/[id]/page.tsx:87)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/shelf-analytics/${id} (src/app/(dashboard)/mtm/shelf-analytics/[id]/page.tsx:87)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/shelf-analytics/[id]/page.tsx:87` calls `GET /api/v1/mtm/shelf-analytics/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/shelf-analytics/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d126c808f2506f5f", "name": "Dangling fetch: GET /api/v1/mtm/customers?limit=200 (src/app/(dashboard)/mtm/customers/page.tsx:40)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/customers?limit=200 (src/app/(dashboard)/mtm/customers/page.tsx:40)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/customers/page.tsx:40` calls `GET /api/v1/mtm/customers?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/customers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6f66cb04a78bd499", "name": "Dangling fetch: DELETE /api/v1/mtm/customers/${deleteItem.id} (src/app/(dashboard)/mtm/customers/page.tsx:79)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/mtm/customers/${deleteItem.id} (src/app/(dashboard)/mtm/customers/page.tsx:79)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/customers/page.tsx:79` calls `DELETE /api/v1/mtm/customers/${deleteItem.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/customers/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0d47fd0cdd35f80f", "name": "Dangling fetch: GET /api/v1/mtm/model-training/runs (src/app/(dashboard)/mtm/model-training/page.tsx:43)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/model-training/runs (src/app/(dashboard)/mtm/model-training/page.tsx:43)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/model-training/page.tsx:43` calls `GET /api/v1/mtm/model-training/runs` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/model-training/runs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-09fb3b88957b1bae", "name": "Dangling fetch: GET /api/v1/mtm/model-training/active (src/app/(dashboard)/mtm/model-training/page.tsx:44)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/model-training/active (src/app/(dashboard)/mtm/model-training/page.tsx:44)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/model-training/page.tsx:44` calls `GET /api/v1/mtm/model-training/active` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/model-training/active`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8d4bd6ef4d4a7abf", "name": "Dangling fetch: POST /api/v1/mtm/model-training/runs (src/app/(dashboard)/mtm/model-training/page.tsx:63)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/mtm/model-training/runs (src/app/(dashboard)/mtm/model-training/page.tsx:63)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/model-training/page.tsx:63` calls `POST /api/v1/mtm/model-training/runs` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/model-training/runs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2fab4d6c00bbb0aa", "name": "Dangling fetch: PATCH /api/v1/mtm/model-training/runs/${id} (src/app/(dashboard)/mtm/model-training/page.tsx:84)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/mtm/model-training/runs/${id} (src/app/(dashboard)/mtm/model-training/page.tsx:84)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/model-training/page.tsx:84` calls `PATCH /api/v1/mtm/model-training/runs/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/model-training/runs/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-34c876d9cec8cb13", "name": "Dangling fetch: GET /api/v1/mtm/equipment/types (src/app/(dashboard)/mtm/equipment/page.tsx:79)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/equipment/types (src/app/(dashboard)/mtm/equipment/page.tsx:79)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/equipment/page.tsx:79` calls `GET /api/v1/mtm/equipment/types` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/equipment/types`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c74f8f06caa15f7f", "name": "Dangling fetch: GET /api/v1/mtm/equipment?${params} (src/app/(dashboard)/mtm/equipment/page.tsx:94)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/equipment?${params} (src/app/(dashboard)/mtm/equipment/page.tsx:94)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/equipment/page.tsx:94` calls `GET /api/v1/mtm/equipment?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/equipment`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2f1762796c6fddba", "name": "Dangling fetch: GET /api/v1/mtm/equipment/types?includeInactive=true (src/app/(dashboard)/mtm/equipment/types/page.tsx:5", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/equipment/types?includeInactive=true (src/app/(dashboard)/mtm/equipment/types/page.tsx:56)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/equipment/types/page.tsx:56` calls `GET /api/v1/mtm/equipment/types?includeInactive=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/equipment/types`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3b8d6a280ea944d2", "name": "Dangling fetch: DELETE /api/v1/mtm/equipment/types/${deleteItem.id} (src/app/(dashboard)/mtm/equipment/types/page.tsx:10", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/mtm/equipment/types/${deleteItem.id} (src/app/(dashboard)/mtm/equipment/types/page.tsx:109)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/equipment/types/page.tsx:109` calls `DELETE /api/v1/mtm/equipment/types/${deleteItem.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/equipment/types/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-465520ba3d02f2aa", "name": "Dangling fetch: GET /api/v1/mtm/equipment/${id} (src/app/(dashboard)/mtm/equipment/[id]/page.tsx:71)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/equipment/${id} (src/app/(dashboard)/mtm/equipment/[id]/page.tsx:71)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/equipment/[id]/page.tsx:71` calls `GET /api/v1/mtm/equipment/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/equipment/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c7f8ff488457ea3f", "name": "Dangling fetch: GET /api/v1/mtm/equipment/types (src/app/(dashboard)/mtm/equipment/[id]/page.tsx:85)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/equipment/types (src/app/(dashboard)/mtm/equipment/[id]/page.tsx:85)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/equipment/[id]/page.tsx:85` calls `GET /api/v1/mtm/equipment/types` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/equipment/types`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-22fb9c015cad379f", "name": "Dangling fetch: GET /api/v1/mtm/tasks?limit=200 (src/app/(dashboard)/mtm/tasks/page.tsx:46)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/tasks?limit=200 (src/app/(dashboard)/mtm/tasks/page.tsx:46)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/tasks/page.tsx:46` calls `GET /api/v1/mtm/tasks?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-95e2341ed33033e4", "name": "Dangling fetch: PUT /api/v1/mtm/tasks/${taskId} (src/app/(dashboard)/mtm/tasks/page.tsx:79)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/mtm/tasks/${taskId} (src/app/(dashboard)/mtm/tasks/page.tsx:79)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/tasks/page.tsx:79` calls `PUT /api/v1/mtm/tasks/${taskId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/tasks/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b54bd66712439c38", "name": "Dangling fetch: DELETE /api/v1/mtm/tasks/${deleteItem.id} (src/app/(dashboard)/mtm/tasks/page.tsx:98)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/mtm/tasks/${deleteItem.id} (src/app/(dashboard)/mtm/tasks/page.tsx:98)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/tasks/page.tsx:98` calls `DELETE /api/v1/mtm/tasks/${deleteItem.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/tasks/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6900d2f90c1810fc", "name": "Dangling fetch: GET /api/v1/mtm/leaderboard?period=${period} (src/app/(dashboard)/mtm/leaderboard/page.tsx:30)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/leaderboard?period=${period} (src/app/(dashboard)/mtm/leaderboard/page.tsx:30)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/leaderboard/page.tsx:30` calls `GET /api/v1/mtm/leaderboard?period=${period}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/leaderboard`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a0c41255c503dc20", "name": "Dangling fetch: GET /api/v1/mtm/routes?limit=200 (src/app/(dashboard)/mtm/routes/page.tsx:51)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/routes?limit=200 (src/app/(dashboard)/mtm/routes/page.tsx:51)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/routes/page.tsx:51` calls `GET /api/v1/mtm/routes?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/routes`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-81147d149cb186b0", "name": "Dangling fetch: DELETE /api/v1/mtm/routes/${deleteItem.id} (src/app/(dashboard)/mtm/routes/page.tsx:91)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/mtm/routes/${deleteItem.id} (src/app/(dashboard)/mtm/routes/page.tsx:91)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/routes/page.tsx:91` calls `DELETE /api/v1/mtm/routes/${deleteItem.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/routes/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6ff21f5846ce7291", "name": "Dangling fetch: GET /api/v1/mtm/alerts?limit=200${resolved} (src/app/(dashboard)/mtm/alerts/page.tsx:34)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/alerts?limit=200${resolved} (src/app/(dashboard)/mtm/alerts/page.tsx:34)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/alerts/page.tsx:34` calls `GET /api/v1/mtm/alerts?limit=200${resolved}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/alerts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-71f7bed7ceb67dd2", "name": "Dangling fetch: PATCH /api/v1/mtm/alerts/${alertId} (src/app/(dashboard)/mtm/alerts/page.tsx:66)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/mtm/alerts/${alertId} (src/app/(dashboard)/mtm/alerts/page.tsx:66)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/alerts/page.tsx:66` calls `PATCH /api/v1/mtm/alerts/${alertId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/alerts/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2f89a1f441666eec", "name": "Dangling fetch: DELETE /api/v1/mtm/alerts/${deleteItem.id} (src/app/(dashboard)/mtm/alerts/page.tsx:81)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/mtm/alerts/${deleteItem.id} (src/app/(dashboard)/mtm/alerts/page.tsx:81)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/alerts/page.tsx:81` calls `DELETE /api/v1/mtm/alerts/${deleteItem.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/alerts/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-08d3cf378080d3f2", "name": "Dangling fetch: GET /api/v1/mtm/skus/categories?includeInactive=true (src/app/(dashboard)/mtm/categories/page.tsx:156)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/skus/categories?includeInactive=true (src/app/(dashboard)/mtm/categories/page.tsx:156)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/categories/page.tsx:156` calls `GET /api/v1/mtm/skus/categories?includeInactive=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/skus/categories`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5a54bbee2791531c", "name": "Dangling fetch: DELETE /api/v1/mtm/skus/categories/${deleteItem.id} (src/app/(dashboard)/mtm/categories/page.tsx:233)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/mtm/skus/categories/${deleteItem.id} (src/app/(dashboard)/mtm/categories/page.tsx:233)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/categories/page.tsx:233` calls `DELETE /api/v1/mtm/skus/categories/${deleteItem.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/skus/categories/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f35643c7f3374d28", "name": "Dangling fetch: GET /api/v1/mtm/agents?limit=200 (src/app/(dashboard)/mtm/agents/page.tsx:46)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/agents?limit=200 (src/app/(dashboard)/mtm/agents/page.tsx:46)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/agents/page.tsx:46` calls `GET /api/v1/mtm/agents?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/agents`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6185419aca309adf", "name": "Dangling fetch: DELETE /api/v1/mtm/agents/${deleteItem.id} (src/app/(dashboard)/mtm/agents/page.tsx:89)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/mtm/agents/${deleteItem.id} (src/app/(dashboard)/mtm/agents/page.tsx:89)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/agents/page.tsx:89` calls `DELETE /api/v1/mtm/agents/${deleteItem.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/agents/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2d3cd0753f8c25f4", "name": "Dangling fetch: GET /api/v1/mtm/photos?limit=200 (src/app/(dashboard)/mtm/photos/page.tsx:37)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/photos?limit=200 (src/app/(dashboard)/mtm/photos/page.tsx:37)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/photos/page.tsx:37` calls `GET /api/v1/mtm/photos?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/photos`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d9ca50624d249278", "name": "Dangling fetch: PATCH /api/v1/mtm/photos/${photoId} (src/app/(dashboard)/mtm/photos/page.tsx:68)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/mtm/photos/${photoId} (src/app/(dashboard)/mtm/photos/page.tsx:68)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/photos/page.tsx:68` calls `PATCH /api/v1/mtm/photos/${photoId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/photos/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-433a3a454fc6d9bd", "name": "Dangling fetch: DELETE /api/v1/mtm/photos/${deleteItem.id} (src/app/(dashboard)/mtm/photos/page.tsx:83)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/mtm/photos/${deleteItem.id} (src/app/(dashboard)/mtm/photos/page.tsx:83)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/photos/page.tsx:83` calls `DELETE /api/v1/mtm/photos/${deleteItem.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/photos/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-695fc0e68ddc0821", "name": "Dangling fetch: GET /api/v1/mtm/skus/categories (src/app/(dashboard)/mtm/skus/page.tsx:76)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/skus/categories (src/app/(dashboard)/mtm/skus/page.tsx:76)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/skus/page.tsx:76` calls `GET /api/v1/mtm/skus/categories` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/skus/categories`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8b4952fa7040dd0a", "name": "Dangling fetch: GET /api/v1/mtm/skus?${params} (src/app/(dashboard)/mtm/skus/page.tsx:103)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/skus?${params} (src/app/(dashboard)/mtm/skus/page.tsx:103)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/skus/page.tsx:103` calls `GET /api/v1/mtm/skus?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/skus`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2c83d32ad7c079c2", "name": "Dangling fetch: DELETE /api/v1/mtm/skus/${deleteItem.id} (src/app/(dashboard)/mtm/skus/page.tsx:136)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/mtm/skus/${deleteItem.id} (src/app/(dashboard)/mtm/skus/page.tsx:136)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/skus/page.tsx:136` calls `DELETE /api/v1/mtm/skus/${deleteItem.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/skus/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-27accc9af75198dc", "name": "Dangling fetch: GET /api/v1/mtm/skus/${id} (src/app/(dashboard)/mtm/skus/[id]/page.tsx:73)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/skus/${id} (src/app/(dashboard)/mtm/skus/[id]/page.tsx:73)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/skus/[id]/page.tsx:73` calls `GET /api/v1/mtm/skus/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/skus/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-39a8c3bb7517b357", "name": "Dangling fetch: GET /api/v1/mtm/skus/categories (src/app/(dashboard)/mtm/skus/[id]/page.tsx:87)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/skus/categories (src/app/(dashboard)/mtm/skus/[id]/page.tsx:87)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/skus/[id]/page.tsx:87` calls `GET /api/v1/mtm/skus/categories` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/skus/categories`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-35d11d27f066b774", "name": "Dangling fetch: DELETE /api/v1/mtm/skus/${sku.id} (src/app/(dashboard)/mtm/skus/[id]/page.tsx:94)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/mtm/skus/${sku.id} (src/app/(dashboard)/mtm/skus/[id]/page.tsx:94)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/skus/[id]/page.tsx:94` calls `DELETE /api/v1/mtm/skus/${sku.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/skus/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3d9637f13c360c8c", "name": "Dangling fetch: GET /api/v1/mtm/repair-requests?${params} (src/app/(dashboard)/mtm/repair-requests/page.tsx:71)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/repair-requests?${params} (src/app/(dashboard)/mtm/repair-requests/page.tsx:71)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/repair-requests/page.tsx:71` calls `GET /api/v1/mtm/repair-requests?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/repair-requests`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c64bb0beeb8bcc23", "name": "Dangling fetch: GET /api/v1/mtm/repair-requests/${id} (src/app/(dashboard)/mtm/repair-requests/[id]/page.tsx:110)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/repair-requests/${id} (src/app/(dashboard)/mtm/repair-requests/[id]/page.tsx:110)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/repair-requests/[id]/page.tsx:110` calls `GET /api/v1/mtm/repair-requests/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/repair-requests/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ad3926dfc4e7bf40", "name": "Dangling fetch: GET /api/v1/mtm/visits?limit=200 (src/app/(dashboard)/mtm/visits/page.tsx:35)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/visits?limit=200 (src/app/(dashboard)/mtm/visits/page.tsx:35)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/visits/page.tsx:35` calls `GET /api/v1/mtm/visits?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/visits`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3c6edbf6a1a62e48", "name": "Dangling fetch: DELETE /api/v1/mtm/visits/${deleteItem.id} (src/app/(dashboard)/mtm/visits/page.tsx:70)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/mtm/visits/${deleteItem.id} (src/app/(dashboard)/mtm/visits/page.tsx:70)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/visits/page.tsx:70` calls `DELETE /api/v1/mtm/visits/${deleteItem.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/visits/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3737a7823e208816", "name": "Dangling fetch: GET /api/v1/mtm/planograms?${params} (src/app/(dashboard)/mtm/planograms/page.tsx:57)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/planograms?${params} (src/app/(dashboard)/mtm/planograms/page.tsx:57)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/planograms/page.tsx:57` calls `GET /api/v1/mtm/planograms?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/planograms`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-80e59a6460373b1e", "name": "Dangling fetch: GET /api/v1/mtm/skus?limit=500&activeOnly=true (src/app/(dashboard)/mtm/planograms/new/page.tsx:28)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/skus?limit=500&activeOnly=true (src/app/(dashboard)/mtm/planograms/new/page.tsx:28)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/planograms/new/page.tsx:28` calls `GET /api/v1/mtm/skus?limit=500&activeOnly=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/skus`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4fe8424b48249c8a", "name": "Dangling fetch: POST /api/v1/mtm/planograms (src/app/(dashboard)/mtm/planograms/new/page.tsx:42)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/mtm/planograms (src/app/(dashboard)/mtm/planograms/new/page.tsx:42)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/planograms/new/page.tsx:42` calls `POST /api/v1/mtm/planograms` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/planograms`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c5ba470568f98ff5", "name": "Dangling fetch: GET /api/v1/mtm/planograms/${id} (src/app/(dashboard)/mtm/planograms/[id]/page.tsx:46)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/planograms/${id} (src/app/(dashboard)/mtm/planograms/[id]/page.tsx:46)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/planograms/[id]/page.tsx:46` calls `GET /api/v1/mtm/planograms/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/planograms/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-542a77de195eb210", "name": "Dangling fetch: GET /api/v1/mtm/skus?limit=500&activeOnly=true (src/app/(dashboard)/mtm/planograms/[id]/page.tsx:63)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/skus?limit=500&activeOnly=true (src/app/(dashboard)/mtm/planograms/[id]/page.tsx:63)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/planograms/[id]/page.tsx:63` calls `GET /api/v1/mtm/skus?limit=500&activeOnly=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/skus`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f172c502fb577bc6", "name": "Dangling fetch: PUT /api/v1/mtm/planograms/${id} (src/app/(dashboard)/mtm/planograms/[id]/page.tsx:77)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/mtm/planograms/${id} (src/app/(dashboard)/mtm/planograms/[id]/page.tsx:77)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/planograms/[id]/page.tsx:77` calls `PUT /api/v1/mtm/planograms/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/planograms/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d62886cae3b05dd0", "name": "Dangling fetch: PUT /api/v1/mtm/planograms/${id} (src/app/(dashboard)/mtm/planograms/[id]/page.tsx:107)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/mtm/planograms/${id} (src/app/(dashboard)/mtm/planograms/[id]/page.tsx:107)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/planograms/[id]/page.tsx:107` calls `PUT /api/v1/mtm/planograms/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/planograms/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fa2f43fa31c02b4e", "name": "Dangling fetch: GET /api/v1/mtm/routes?agentId=${agentId}&date=${today} (src/app/(dashboard)/mtm/map/page.tsx:74)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/routes?agentId=${agentId}&date=${today} (src/app/(dashboard)/mtm/map/page.tsx:74)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/map/page.tsx:74` calls `GET /api/v1/mtm/routes?agentId=${agentId}&date=${today}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/routes`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c8f1567929cae9c1", "name": "Dangling fetch: GET /api/v1/mtm/locations (src/app/(dashboard)/mtm/map/page.tsx:87)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/locations (src/app/(dashboard)/mtm/map/page.tsx:87)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/map/page.tsx:87` calls `GET /api/v1/mtm/locations` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/locations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-329376d685cd718f", "name": "Dangling fetch: GET /api/v1/mtm/locations?agentId=${agentId} (src/app/(dashboard)/mtm/map/page.tsx:129)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/mtm/locations?agentId=${agentId} (src/app/(dashboard)/mtm/map/page.tsx:129)"}, "fullDescription": {"text": "`src/app/(dashboard)/mtm/map/page.tsx:129` calls `GET /api/v1/mtm/locations?agentId=${agentId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/mtm/locations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b7913a1e4fa43db2", "name": "Dangling fetch: GET /api/v1/complaints?${params.toString()} (src/app/(dashboard)/complaints/page.tsx:73)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/complaints?${params.toString()} (src/app/(dashboard)/complaints/page.tsx:73)"}, "fullDescription": {"text": "`src/app/(dashboard)/complaints/page.tsx:73` calls `GET /api/v1/complaints?${params.toString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/complaints`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-25fc0290e6159308", "name": "Dangling fetch: GET /api/v1/complaints/export-xlsx (src/app/(dashboard)/complaints/page.tsx:88)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/complaints/export-xlsx (src/app/(dashboard)/complaints/page.tsx:88)"}, "fullDescription": {"text": "`src/app/(dashboard)/complaints/page.tsx:88` calls `GET /api/v1/complaints/export-xlsx` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/complaints/export-xlsx`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1cb53e704737d8f1", "name": "Dangling fetch: GET /api/v1/complaints/facets?${params.toString()} (src/app/(dashboard)/complaints/new/page.tsx:72)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/complaints/facets?${params.toString()} (src/app/(dashboard)/complaints/new/page.tsx:72)"}, "fullDescription": {"text": "`src/app/(dashboard)/complaints/new/page.tsx:72` calls `GET /api/v1/complaints/facets?${params.toString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/complaints/facets`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-466692ec534c3c74", "name": "Dangling fetch: POST /api/v1/complaints/ai-categorize (src/app/(dashboard)/complaints/new/page.tsx:86)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/complaints/ai-categorize (src/app/(dashboard)/complaints/new/page.tsx:86)"}, "fullDescription": {"text": "`src/app/(dashboard)/complaints/new/page.tsx:86` calls `POST /api/v1/complaints/ai-categorize` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/complaints/ai-categorize`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6c42f183ebcf4edf", "name": "Dangling fetch: POST /api/v1/complaints (src/app/(dashboard)/complaints/new/page.tsx:120)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/complaints (src/app/(dashboard)/complaints/new/page.tsx:120)"}, "fullDescription": {"text": "`src/app/(dashboard)/complaints/new/page.tsx:120` calls `POST /api/v1/complaints` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/complaints`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8a8bd0d2432edcba", "name": "Dangling fetch: POST /api/v1/complaints/import-xlsx (src/app/(dashboard)/complaints/import/page.tsx:53)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/complaints/import-xlsx (src/app/(dashboard)/complaints/import/page.tsx:53)"}, "fullDescription": {"text": "`src/app/(dashboard)/complaints/import/page.tsx:53` calls `POST /api/v1/complaints/import-xlsx` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/complaints/import-xlsx`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5f5e7e2688847c46", "name": "Dangling fetch: POST /api/v1/complaints/import-xlsx (src/app/(dashboard)/complaints/import/page.tsx:72)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/complaints/import-xlsx (src/app/(dashboard)/complaints/import/page.tsx:72)"}, "fullDescription": {"text": "`src/app/(dashboard)/complaints/import/page.tsx:72` calls `POST /api/v1/complaints/import-xlsx` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/complaints/import-xlsx`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f5f3b6c7242b80d0", "name": "Dangling fetch: GET /api/v1/complaints/${id} (src/app/(dashboard)/complaints/[id]/page.tsx:76)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/complaints/${id} (src/app/(dashboard)/complaints/[id]/page.tsx:76)"}, "fullDescription": {"text": "`src/app/(dashboard)/complaints/[id]/page.tsx:76` calls `GET /api/v1/complaints/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/complaints/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9753727b81060de1", "name": "Dangling fetch: PATCH /api/v1/complaints/${id} (src/app/(dashboard)/complaints/[id]/page.tsx:91)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/complaints/${id} (src/app/(dashboard)/complaints/[id]/page.tsx:91)"}, "fullDescription": {"text": "`src/app/(dashboard)/complaints/[id]/page.tsx:91` calls `PATCH /api/v1/complaints/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/complaints/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d9a503245d18e260", "name": "Dangling fetch: POST /api/v1/tickets/${id}/comments (src/app/(dashboard)/complaints/[id]/page.tsx:106)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/tickets/${id}/comments (src/app/(dashboard)/complaints/[id]/page.tsx:106)"}, "fullDescription": {"text": "`src/app/(dashboard)/complaints/[id]/page.tsx:106` calls `POST /api/v1/tickets/${id}/comments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tickets/<p>/comments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5c3cef323cd65c89", "name": "Dangling fetch: DELETE /api/v1/complaints/${id} (src/app/(dashboard)/complaints/[id]/page.tsx:123)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/complaints/${id} (src/app/(dashboard)/complaints/[id]/page.tsx:123)"}, "fullDescription": {"text": "`src/app/(dashboard)/complaints/[id]/page.tsx:123` calls `DELETE /api/v1/complaints/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/complaints/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fbbdf82b57f23e9f", "name": "Dangling fetch: GET /api/v1/leads?limit=500&includeConverted=true (src/app/(dashboard)/leads/page.tsx:173)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/leads?limit=500&includeConverted=true (src/app/(dashboard)/leads/page.tsx:173)"}, "fullDescription": {"text": "`src/app/(dashboard)/leads/page.tsx:173` calls `GET /api/v1/leads?limit=500&includeConverted=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/leads`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f714257b2693e6ce", "name": "Dangling fetch: POST /api/v1/leads/bulk (src/app/(dashboard)/leads/page.tsx:191)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/leads/bulk (src/app/(dashboard)/leads/page.tsx:191)"}, "fullDescription": {"text": "`src/app/(dashboard)/leads/page.tsx:191` calls `POST /api/v1/leads/bulk` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/leads/bulk`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e0a58f8503b57a67", "name": "Dangling fetch: PATCH /api/v1/leads/${leadId} (src/app/(dashboard)/leads/page.tsx:230)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/leads/${leadId} (src/app/(dashboard)/leads/page.tsx:230)"}, "fullDescription": {"text": "`src/app/(dashboard)/leads/page.tsx:230` calls `PATCH /api/v1/leads/${leadId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/leads/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ec886f8861fdf3d2", "name": "Dangling fetch: PATCH /api/v1/leads/${leadId} (src/app/(dashboard)/leads/page.tsx:262)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/leads/${leadId} (src/app/(dashboard)/leads/page.tsx:262)"}, "fullDescription": {"text": "`src/app/(dashboard)/leads/page.tsx:262` calls `PATCH /api/v1/leads/${leadId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/leads/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-975bad4865bb53b1", "name": "Dangling fetch: DELETE /api/v1/leads/${deleteId} (src/app/(dashboard)/leads/page.tsx:280)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/leads/${deleteId} (src/app/(dashboard)/leads/page.tsx:280)"}, "fullDescription": {"text": "`src/app/(dashboard)/leads/page.tsx:280` calls `DELETE /api/v1/leads/${deleteId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/leads/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d009b8c764329b5a", "name": "Dangling fetch: PATCH /api/v1/leads/${id} (src/app/(dashboard)/leads/[id]/page.tsx:163)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/leads/${id} (src/app/(dashboard)/leads/[id]/page.tsx:163)"}, "fullDescription": {"text": "`src/app/(dashboard)/leads/[id]/page.tsx:163` calls `PATCH /api/v1/leads/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/leads/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a75098484df4bf5d", "name": "Dangling fetch: GET /api/v1/activities?relatedType=lead&relatedId=${encodeURIComponent(id)} (src/app/(dashboard)/leads/[", "shortDescription": {"text": "Dangling fetch: GET /api/v1/activities?relatedType=lead&relatedId=${encodeURIComponent(id)} (src/app/(dashboard)/leads/[id]/page.tsx:198)"}, "fullDescription": {"text": "`src/app/(dashboard)/leads/[id]/page.tsx:198` calls `GET /api/v1/activities?relatedType=lead&relatedId=${encodeURIComponent(id)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/activities`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7645b0823c0dc29f", "name": "Dangling fetch: POST /api/v1/activities (src/app/(dashboard)/leads/[id]/page.tsx:228)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/activities (src/app/(dashboard)/leads/[id]/page.tsx:228)"}, "fullDescription": {"text": "`src/app/(dashboard)/leads/[id]/page.tsx:228` calls `POST /api/v1/activities` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/activities`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-06bf794553211a06", "name": "Dangling fetch: GET /api/v1/leads/${id} (src/app/(dashboard)/leads/[id]/page.tsx:281)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/leads/${id} (src/app/(dashboard)/leads/[id]/page.tsx:281)"}, "fullDescription": {"text": "`src/app/(dashboard)/leads/[id]/page.tsx:281` calls `GET /api/v1/leads/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/leads/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bef74e07644f83e1", "name": "Dangling fetch: PUT /api/v1/leads/${id} (src/app/(dashboard)/leads/[id]/page.tsx:303)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/leads/${id} (src/app/(dashboard)/leads/[id]/page.tsx:303)"}, "fullDescription": {"text": "`src/app/(dashboard)/leads/[id]/page.tsx:303` calls `PUT /api/v1/leads/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/leads/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a294a162a1babccb", "name": "Dangling fetch: DELETE /api/v1/leads/${id} (src/app/(dashboard)/leads/[id]/page.tsx:323)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/leads/${id} (src/app/(dashboard)/leads/[id]/page.tsx:323)"}, "fullDescription": {"text": "`src/app/(dashboard)/leads/[id]/page.tsx:323` calls `DELETE /api/v1/leads/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/leads/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ad38bc8baf4375a4", "name": "Dangling fetch: POST /api/v1/ai (src/app/(dashboard)/leads/[id]/page.tsx:334)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/ai (src/app/(dashboard)/leads/[id]/page.tsx:334)"}, "fullDescription": {"text": "`src/app/(dashboard)/leads/[id]/page.tsx:334` calls `POST /api/v1/ai` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ai`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cb7b464b6513a33c", "name": "Dangling fetch: POST /api/v1/tasks (src/app/(dashboard)/leads/[id]/page.tsx:352)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/tasks (src/app/(dashboard)/leads/[id]/page.tsx:352)"}, "fullDescription": {"text": "`src/app/(dashboard)/leads/[id]/page.tsx:352` calls `POST /api/v1/tasks` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-863d9892502adb20", "name": "Dangling fetch: POST /api/v1/lead-scoring (src/app/(dashboard)/leads/[id]/page.tsx:372)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/lead-scoring (src/app/(dashboard)/leads/[id]/page.tsx:372)"}, "fullDescription": {"text": "`src/app/(dashboard)/leads/[id]/page.tsx:372` calls `POST /api/v1/lead-scoring` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/lead-scoring`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fdf31042ba276ccb", "name": "Dangling fetch: GET /api/v1/whatsapp/templates?status=APPROVED (src/app/(dashboard)/leads/[id]/page.tsx:408)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/whatsapp/templates?status=APPROVED (src/app/(dashboard)/leads/[id]/page.tsx:408)"}, "fullDescription": {"text": "`src/app/(dashboard)/leads/[id]/page.tsx:408` calls `GET /api/v1/whatsapp/templates?status=APPROVED` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/whatsapp/templates`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b993759eb66a86b4", "name": "Dangling fetch: POST /api/v1/ai (src/app/(dashboard)/leads/[id]/page.tsx:433)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/ai (src/app/(dashboard)/leads/[id]/page.tsx:433)"}, "fullDescription": {"text": "`src/app/(dashboard)/leads/[id]/page.tsx:433` calls `POST /api/v1/ai` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ai`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3406ceee3a27397e", "name": "Dangling fetch: POST /api/v1/whatsapp/send (src/app/(dashboard)/leads/[id]/page.tsx:465)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/whatsapp/send (src/app/(dashboard)/leads/[id]/page.tsx:465)"}, "fullDescription": {"text": "`src/app/(dashboard)/leads/[id]/page.tsx:465` calls `POST /api/v1/whatsapp/send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/whatsapp/send`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-37018bf4e91c74a3", "name": "Dangling fetch: POST /api/v1/inbox (src/app/(dashboard)/leads/[id]/page.tsx:499)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/inbox (src/app/(dashboard)/leads/[id]/page.tsx:499)"}, "fullDescription": {"text": "`src/app/(dashboard)/leads/[id]/page.tsx:499` calls `POST /api/v1/inbox` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-49b726590cc15752", "name": "Dangling fetch: GET /api/v1/projects?${params} (src/app/(dashboard)/projects/page.tsx:86)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/projects?${params} (src/app/(dashboard)/projects/page.tsx:86)"}, "fullDescription": {"text": "`src/app/(dashboard)/projects/page.tsx:86` calls `GET /api/v1/projects?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/projects`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f78de423e7c3715a", "name": "Dangling fetch: DELETE /api/v1/projects/${deleteId} (src/app/(dashboard)/projects/page.tsx:111)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/projects/${deleteId} (src/app/(dashboard)/projects/page.tsx:111)"}, "fullDescription": {"text": "`src/app/(dashboard)/projects/page.tsx:111` calls `DELETE /api/v1/projects/${deleteId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/projects/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d6638b168576463c", "name": "Dangling fetch: POST /api/v1/projects/bulk (src/app/(dashboard)/projects/page.tsx:159)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/projects/bulk (src/app/(dashboard)/projects/page.tsx:159)"}, "fullDescription": {"text": "`src/app/(dashboard)/projects/page.tsx:159` calls `POST /api/v1/projects/bulk` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/projects/bulk`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-edc11f49b0739546", "name": "Dangling fetch: POST /api/v1/projects/bulk (src/app/(dashboard)/projects/page.tsx:169)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/projects/bulk (src/app/(dashboard)/projects/page.tsx:169)"}, "fullDescription": {"text": "`src/app/(dashboard)/projects/page.tsx:169` calls `POST /api/v1/projects/bulk` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/projects/bulk`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b1ffa5bcec17470d", "name": "Dangling fetch: GET /api/v1/projects/${id} (src/app/(dashboard)/projects/[id]/page.tsx:60)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/projects/${id} (src/app/(dashboard)/projects/[id]/page.tsx:60)"}, "fullDescription": {"text": "`src/app/(dashboard)/projects/[id]/page.tsx:60` calls `GET /api/v1/projects/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/projects/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8ab22b244495fff9", "name": "Dangling fetch: GET /api/v1/users (src/app/(dashboard)/projects/[id]/page.tsx:71)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users (src/app/(dashboard)/projects/[id]/page.tsx:71)"}, "fullDescription": {"text": "`src/app/(dashboard)/projects/[id]/page.tsx:71` calls `GET /api/v1/users` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e1b6b6880243fd12", "name": "Dangling fetch: DELETE /api/v1/projects/${id} (src/app/(dashboard)/projects/[id]/page.tsx:83)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/projects/${id} (src/app/(dashboard)/projects/[id]/page.tsx:83)"}, "fullDescription": {"text": "`src/app/(dashboard)/projects/[id]/page.tsx:83` calls `DELETE /api/v1/projects/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/projects/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-809ab0c115fd99b6", "name": "Dangling fetch: GET /api/v1/events?${qs} (src/app/(dashboard)/events/page.tsx:69)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/events?${qs} (src/app/(dashboard)/events/page.tsx:69)"}, "fullDescription": {"text": "`src/app/(dashboard)/events/page.tsx:69` calls `GET /api/v1/events?${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8aa28508e361f944", "name": "Dangling fetch: DELETE /api/v1/events/${deleteEvent.id} (src/app/(dashboard)/events/page.tsx:84)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/events/${deleteEvent.id} (src/app/(dashboard)/events/page.tsx:84)"}, "fullDescription": {"text": "`src/app/(dashboard)/events/page.tsx:84` calls `DELETE /api/v1/events/${deleteEvent.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/events/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-89f685ed539d4475", "name": "Dangling fetch: GET /api/v1/events/${params.id}?_t=${Date.now()} (src/app/(dashboard)/events/[id]/page.tsx:122)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/events/${params.id}?_t=${Date.now()} (src/app/(dashboard)/events/[id]/page.tsx:122)"}, "fullDescription": {"text": "`src/app/(dashboard)/events/[id]/page.tsx:122` calls `GET /api/v1/events/${params.id}?_t=${Date.now()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/events/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c0595fd34e6723bd", "name": "Dangling fetch: GET /api/v1/contacts?limit=200 (src/app/(dashboard)/events/[id]/page.tsx:136)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contacts?limit=200 (src/app/(dashboard)/events/[id]/page.tsx:136)"}, "fullDescription": {"text": "`src/app/(dashboard)/events/[id]/page.tsx:136` calls `GET /api/v1/contacts?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contacts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a41f5b3cab2dc8df", "name": "Dangling fetch: PUT /api/v1/events/${params.id} (src/app/(dashboard)/events/[id]/page.tsx:142)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/events/${params.id} (src/app/(dashboard)/events/[id]/page.tsx:142)"}, "fullDescription": {"text": "`src/app/(dashboard)/events/[id]/page.tsx:142` calls `PUT /api/v1/events/${params.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/events/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bd7a81d05dac565b", "name": "Dangling fetch: DELETE /api/v1/events/${params.id} (src/app/(dashboard)/events/[id]/page.tsx:151)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/events/${params.id} (src/app/(dashboard)/events/[id]/page.tsx:151)"}, "fullDescription": {"text": "`src/app/(dashboard)/events/[id]/page.tsx:151` calls `DELETE /api/v1/events/${params.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/events/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-58509ed0ae71662b", "name": "Dangling fetch: POST /api/v1/events/${params.id}/participants (src/app/(dashboard)/events/[id]/page.tsx:160)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/events/${params.id}/participants (src/app/(dashboard)/events/[id]/page.tsx:160)"}, "fullDescription": {"text": "`src/app/(dashboard)/events/[id]/page.tsx:160` calls `POST /api/v1/events/${params.id}/participants` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/events/<p>/participants`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0fc44e93f394922d", "name": "Dangling fetch: POST /api/v1/events/${params.id}/participants (src/app/(dashboard)/events/[id]/page.tsx:196)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/events/${params.id}/participants (src/app/(dashboard)/events/[id]/page.tsx:196)"}, "fullDescription": {"text": "`src/app/(dashboard)/events/[id]/page.tsx:196` calls `POST /api/v1/events/${params.id}/participants` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/events/<p>/participants`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-efcb879e7a84d82d", "name": "Dangling fetch: PATCH /api/v1/events/${params.id}/participants (src/app/(dashboard)/events/[id]/page.tsx:227)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/events/${params.id}/participants (src/app/(dashboard)/events/[id]/page.tsx:227)"}, "fullDescription": {"text": "`src/app/(dashboard)/events/[id]/page.tsx:227` calls `PATCH /api/v1/events/${params.id}/participants` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/events/<p>/participants`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-64cddb60abe26bee", "name": "Dangling fetch: PATCH /api/v1/events/${params.id}/participants (src/app/(dashboard)/events/[id]/page.tsx:246)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/events/${params.id}/participants (src/app/(dashboard)/events/[id]/page.tsx:246)"}, "fullDescription": {"text": "`src/app/(dashboard)/events/[id]/page.tsx:246` calls `PATCH /api/v1/events/${params.id}/participants` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/events/<p>/participants`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0f246134c4e7cad7", "name": "Dangling fetch: PATCH /api/v1/events/${params.id}/participants (src/app/(dashboard)/events/[id]/page.tsx:262)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/events/${params.id}/participants (src/app/(dashboard)/events/[id]/page.tsx:262)"}, "fullDescription": {"text": "`src/app/(dashboard)/events/[id]/page.tsx:262` calls `PATCH /api/v1/events/${params.id}/participants` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/events/<p>/participants`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cc3ca6332f1775b1", "name": "Dangling fetch: DELETE /api/v1/events/${params.id}/participants (src/app/(dashboard)/events/[id]/page.tsx:272)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/events/${params.id}/participants (src/app/(dashboard)/events/[id]/page.tsx:272)"}, "fullDescription": {"text": "`src/app/(dashboard)/events/[id]/page.tsx:272` calls `DELETE /api/v1/events/${params.id}/participants` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/events/<p>/participants`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-211e726882195beb", "name": "Dangling fetch: PUT /api/v1/events/${params.id} (src/app/(dashboard)/events/[id]/page.tsx:286)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/events/${params.id} (src/app/(dashboard)/events/[id]/page.tsx:286)"}, "fullDescription": {"text": "`src/app/(dashboard)/events/[id]/page.tsx:286` calls `PUT /api/v1/events/${params.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/events/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-04062865b93ff1d8", "name": "Dangling fetch: GET /api/v1/health-patients?${params} (src/app/(dashboard)/health/page.tsx:71)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/health-patients?${params} (src/app/(dashboard)/health/page.tsx:71)"}, "fullDescription": {"text": "`src/app/(dashboard)/health/page.tsx:71` calls `GET /api/v1/health-patients?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/health-patients`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0f9b34eb607d4a11", "name": "Dangling fetch: GET /api/v1/health-encounters?limit=1 (src/app/(dashboard)/health/page.tsx:96)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/health-encounters?limit=1 (src/app/(dashboard)/health/page.tsx:96)"}, "fullDescription": {"text": "`src/app/(dashboard)/health/page.tsx:96` calls `GET /api/v1/health-encounters?limit=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/health-encounters`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-98249532090b3124", "name": "Dangling fetch: GET /api/v1/health-care-plans?status=active&limit=1 (src/app/(dashboard)/health/page.tsx:97)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/health-care-plans?status=active&limit=1 (src/app/(dashboard)/health/page.tsx:97)"}, "fullDescription": {"text": "`src/app/(dashboard)/health/page.tsx:97` calls `GET /api/v1/health-care-plans?status=active&limit=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/health-care-plans`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-784d2c3d39437763", "name": "Dangling fetch: GET /api/v1/health-care-plans?${params} (src/app/(dashboard)/health/care-plans/page.tsx:63)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/health-care-plans?${params} (src/app/(dashboard)/health/care-plans/page.tsx:63)"}, "fullDescription": {"text": "`src/app/(dashboard)/health/care-plans/page.tsx:63` calls `GET /api/v1/health-care-plans?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/health-care-plans`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d81fd6d02028bf26", "name": "Dangling fetch: GET /api/v1/health-encounters?${params} (src/app/(dashboard)/health/encounters/page.tsx:66)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/health-encounters?${params} (src/app/(dashboard)/health/encounters/page.tsx:66)"}, "fullDescription": {"text": "`src/app/(dashboard)/health/encounters/page.tsx:66` calls `GET /api/v1/health-encounters?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/health-encounters`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-67d05ebf157cc3ce", "name": "Dangling fetch: GET /api/v1/health-patients/${id} (src/app/(dashboard)/health/[id]/page.tsx:107)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/health-patients/${id} (src/app/(dashboard)/health/[id]/page.tsx:107)"}, "fullDescription": {"text": "`src/app/(dashboard)/health/[id]/page.tsx:107` calls `GET /api/v1/health-patients/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/health-patients/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ec0ee6457f9434cb", "name": "Dangling fetch: GET /api/v1/health-encounters?patientId=${id}&limit=50 (src/app/(dashboard)/health/[id]/page.tsx:127)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/health-encounters?patientId=${id}&limit=50 (src/app/(dashboard)/health/[id]/page.tsx:127)"}, "fullDescription": {"text": "`src/app/(dashboard)/health/[id]/page.tsx:127` calls `GET /api/v1/health-encounters?patientId=${id}&limit=50` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/health-encounters`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-be5134fd842db0a1", "name": "Dangling fetch: GET /api/v1/health-care-plans?patientId=${id}&limit=50 (src/app/(dashboard)/health/[id]/page.tsx:133)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/health-care-plans?patientId=${id}&limit=50 (src/app/(dashboard)/health/[id]/page.tsx:133)"}, "fullDescription": {"text": "`src/app/(dashboard)/health/[id]/page.tsx:133` calls `GET /api/v1/health-care-plans?patientId=${id}&limit=50` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/health-care-plans`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-037eb4db43685e48", "name": "Dangling fetch: GET /api/v1/health-medical-records?patientId=${id}&limit=50 (src/app/(dashboard)/health/[id]/page.tsx:13", "shortDescription": {"text": "Dangling fetch: GET /api/v1/health-medical-records?patientId=${id}&limit=50 (src/app/(dashboard)/health/[id]/page.tsx:139)"}, "fullDescription": {"text": "`src/app/(dashboard)/health/[id]/page.tsx:139` calls `GET /api/v1/health-medical-records?patientId=${id}&limit=50` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/health-medical-records`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-84a2e3e1ce8fe850", "name": "Dangling fetch: GET /api/v1/health-providers?${params} (src/app/(dashboard)/health/providers/page.tsx:67)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/health-providers?${params} (src/app/(dashboard)/health/providers/page.tsx:67)"}, "fullDescription": {"text": "`src/app/(dashboard)/health/providers/page.tsx:67` calls `GET /api/v1/health-providers?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/health-providers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e1a51de92f2cb02a", "name": "Dangling fetch: GET /api/v1/media-subscribers?${params} (src/app/(dashboard)/media/page.tsx:74)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/media-subscribers?${params} (src/app/(dashboard)/media/page.tsx:74)"}, "fullDescription": {"text": "`src/app/(dashboard)/media/page.tsx:74` calls `GET /api/v1/media-subscribers?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/media-subscribers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-64f473017e0b2d4a", "name": "Dangling fetch: GET /api/v1/media-ad-campaigns?limit=1 (src/app/(dashboard)/media/page.tsx:100)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/media-ad-campaigns?limit=1 (src/app/(dashboard)/media/page.tsx:100)"}, "fullDescription": {"text": "`src/app/(dashboard)/media/page.tsx:100` calls `GET /api/v1/media-ad-campaigns?limit=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/media-ad-campaigns`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-da3eb40146082580", "name": "Dangling fetch: GET /api/v1/media-subscribers/${id} (src/app/(dashboard)/media/[id]/page.tsx:66)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/media-subscribers/${id} (src/app/(dashboard)/media/[id]/page.tsx:66)"}, "fullDescription": {"text": "`src/app/(dashboard)/media/[id]/page.tsx:66` calls `GET /api/v1/media-subscribers/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/media-subscribers/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3683686baca15c62", "name": "Dangling fetch: GET /api/v1/media-content-inventory?${params} (src/app/(dashboard)/media/content/page.tsx:75)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/media-content-inventory?${params} (src/app/(dashboard)/media/content/page.tsx:75)"}, "fullDescription": {"text": "`src/app/(dashboard)/media/content/page.tsx:75` calls `GET /api/v1/media-content-inventory?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/media-content-inventory`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ddbb779f6842933b", "name": "Dangling fetch: GET /api/v1/media-ad-campaigns?${params} (src/app/(dashboard)/media/ad-campaigns/page.tsx:76)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/media-ad-campaigns?${params} (src/app/(dashboard)/media/ad-campaigns/page.tsx:76)"}, "fullDescription": {"text": "`src/app/(dashboard)/media/ad-campaigns/page.tsx:76` calls `GET /api/v1/media-ad-campaigns?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/media-ad-campaigns`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e8c51a44a2978d03", "name": "Dangling fetch: GET /api/v1/kb?limit=500 (src/app/(dashboard)/knowledge-base/page.tsx:94)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/kb?limit=500 (src/app/(dashboard)/knowledge-base/page.tsx:94)"}, "fullDescription": {"text": "`src/app/(dashboard)/knowledge-base/page.tsx:94` calls `GET /api/v1/kb?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/kb`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-877f6bf352233662", "name": "Dangling fetch: GET /api/v1/kb-categories (src/app/(dashboard)/knowledge-base/page.tsx:107)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/kb-categories (src/app/(dashboard)/knowledge-base/page.tsx:107)"}, "fullDescription": {"text": "`src/app/(dashboard)/knowledge-base/page.tsx:107` calls `GET /api/v1/kb-categories` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/kb-categories`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cdc6cf741c880eec", "name": "Dangling fetch: DELETE /api/v1/kb/${deleteId} (src/app/(dashboard)/knowledge-base/page.tsx:119)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/kb/${deleteId} (src/app/(dashboard)/knowledge-base/page.tsx:119)"}, "fullDescription": {"text": "`src/app/(dashboard)/knowledge-base/page.tsx:119` calls `DELETE /api/v1/kb/${deleteId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/kb/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2a97166823d57198", "name": "Dangling fetch: POST /api/v1/kb-categories (src/app/(dashboard)/knowledge-base/page.tsx:131)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/kb-categories (src/app/(dashboard)/knowledge-base/page.tsx:131)"}, "fullDescription": {"text": "`src/app/(dashboard)/knowledge-base/page.tsx:131` calls `POST /api/v1/kb-categories` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/kb-categories`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ce493f10363d82a5", "name": "Dangling fetch: DELETE /api/v1/kb-categories/${catId} (src/app/(dashboard)/knowledge-base/page.tsx:148)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/kb-categories/${catId} (src/app/(dashboard)/knowledge-base/page.tsx:148)"}, "fullDescription": {"text": "`src/app/(dashboard)/knowledge-base/page.tsx:148` calls `DELETE /api/v1/kb-categories/${catId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/kb-categories/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2e0d8e9a0b60abcd", "name": "Dangling fetch: GET /api/v1/kb/${params.id} (src/app/(dashboard)/knowledge-base/[id]/page.tsx:35)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/kb/${params.id} (src/app/(dashboard)/knowledge-base/[id]/page.tsx:35)"}, "fullDescription": {"text": "`src/app/(dashboard)/knowledge-base/[id]/page.tsx:35` calls `GET /api/v1/kb/${params.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/kb/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1d3461bccb6a7aca", "name": "Dangling fetch: DELETE /api/v1/kb/${params.id} (src/app/(dashboard)/knowledge-base/[id]/page.tsx:50)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/kb/${params.id} (src/app/(dashboard)/knowledge-base/[id]/page.tsx:50)"}, "fullDescription": {"text": "`src/app/(dashboard)/knowledge-base/[id]/page.tsx:50` calls `DELETE /api/v1/kb/${params.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/kb/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-618796da1965a085", "name": "Dangling fetch: GET /api/v1/dashboard/widget-config (src/app/(dashboard)/dashboard/page.tsx:59)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/dashboard/widget-config (src/app/(dashboard)/dashboard/page.tsx:59)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/page.tsx:59` calls `GET /api/v1/dashboard/widget-config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/dashboard/widget-config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dd218989e53f4ee5", "name": "Dangling fetch: GET /api/v1/dashboard/executive (src/app/(dashboard)/dashboard/page.tsx:95)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/dashboard/executive (src/app/(dashboard)/dashboard/page.tsx:95)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/page.tsx:95` calls `GET /api/v1/dashboard/executive` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/dashboard/executive`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8a0d279d7dc9d218", "name": "Dangling fetch: GET /api/v1/lead-scoring (src/app/(dashboard)/lead-scoring/page.tsx:95)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/lead-scoring (src/app/(dashboard)/lead-scoring/page.tsx:95)"}, "fullDescription": {"text": "`src/app/(dashboard)/lead-scoring/page.tsx:95` calls `GET /api/v1/lead-scoring` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/lead-scoring`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b88c6fc91380028c", "name": "Dangling fetch: POST /api/v1/lead-scoring (src/app/(dashboard)/lead-scoring/page.tsx:115)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/lead-scoring (src/app/(dashboard)/lead-scoring/page.tsx:115)"}, "fullDescription": {"text": "`src/app/(dashboard)/lead-scoring/page.tsx:115` calls `POST /api/v1/lead-scoring` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/lead-scoring`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3b0e646157587f63", "name": "Dangling fetch: POST /api/v1/lead-scoring (src/app/(dashboard)/lead-scoring/page.tsx:135)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/lead-scoring (src/app/(dashboard)/lead-scoring/page.tsx:135)"}, "fullDescription": {"text": "`src/app/(dashboard)/lead-scoring/page.tsx:135` calls `POST /api/v1/lead-scoring` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/lead-scoring`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bbc26c71f8f7824d", "name": "Dangling fetch: GET /api/v1/loyalty-earn-rules${qs} (src/app/(dashboard)/loyalty/earn-rules/page.tsx:138)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/loyalty-earn-rules${qs} (src/app/(dashboard)/loyalty/earn-rules/page.tsx:138)"}, "fullDescription": {"text": "`src/app/(dashboard)/loyalty/earn-rules/page.tsx:138` calls `GET /api/v1/loyalty-earn-rules${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/loyalty-earn-rules/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c354bbac5646dec3", "name": "Dangling fetch: PATCH /api/v1/loyalty-earn-rules/${editingId} (src/app/(dashboard)/loyalty/earn-rules/page.tsx:231)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/loyalty-earn-rules/${editingId} (src/app/(dashboard)/loyalty/earn-rules/page.tsx:231)"}, "fullDescription": {"text": "`src/app/(dashboard)/loyalty/earn-rules/page.tsx:231` calls `PATCH /api/v1/loyalty-earn-rules/${editingId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/loyalty-earn-rules/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d75d316afabfca42", "name": "Dangling fetch: POST /api/v1/loyalty-earn-rules (src/app/(dashboard)/loyalty/earn-rules/page.tsx:237)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/loyalty-earn-rules (src/app/(dashboard)/loyalty/earn-rules/page.tsx:237)"}, "fullDescription": {"text": "`src/app/(dashboard)/loyalty/earn-rules/page.tsx:237` calls `POST /api/v1/loyalty-earn-rules` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/loyalty-earn-rules`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-42138eae278b07e5", "name": "Dangling fetch: DELETE /api/v1/loyalty-earn-rules/${row.id} (src/app/(dashboard)/loyalty/earn-rules/page.tsx:260)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/loyalty-earn-rules/${row.id} (src/app/(dashboard)/loyalty/earn-rules/page.tsx:260)"}, "fullDescription": {"text": "`src/app/(dashboard)/loyalty/earn-rules/page.tsx:260` calls `DELETE /api/v1/loyalty-earn-rules/${row.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/loyalty-earn-rules/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a33d611d0f43a3f1", "name": "Dangling fetch: PATCH /api/v1/loyalty-earn-rules/${row.id} (src/app/(dashboard)/loyalty/earn-rules/page.tsx:278)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/loyalty-earn-rules/${row.id} (src/app/(dashboard)/loyalty/earn-rules/page.tsx:278)"}, "fullDescription": {"text": "`src/app/(dashboard)/loyalty/earn-rules/page.tsx:278` calls `PATCH /api/v1/loyalty-earn-rules/${row.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/loyalty-earn-rules/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e2e28c195c609867", "name": "Dangling fetch: GET /api/v1/loyalty-overview (src/app/(dashboard)/loyalty/dashboard/page.tsx:124)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/loyalty-overview (src/app/(dashboard)/loyalty/dashboard/page.tsx:124)"}, "fullDescription": {"text": "`src/app/(dashboard)/loyalty/dashboard/page.tsx:124` calls `GET /api/v1/loyalty-overview` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/loyalty-overview`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-36ec8b571b7d1e31", "name": "Dangling fetch: GET /api/v1/promo-codes${qs} (src/app/(dashboard)/loyalty/promo-codes/page.tsx:120)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/promo-codes${qs} (src/app/(dashboard)/loyalty/promo-codes/page.tsx:120)"}, "fullDescription": {"text": "`src/app/(dashboard)/loyalty/promo-codes/page.tsx:120` calls `GET /api/v1/promo-codes${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/promo-codes/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e1762d862321f711", "name": "Dangling fetch: PATCH /api/v1/promo-codes/${editingId} (src/app/(dashboard)/loyalty/promo-codes/page.tsx:222)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/promo-codes/${editingId} (src/app/(dashboard)/loyalty/promo-codes/page.tsx:222)"}, "fullDescription": {"text": "`src/app/(dashboard)/loyalty/promo-codes/page.tsx:222` calls `PATCH /api/v1/promo-codes/${editingId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/promo-codes/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8014dbeab0159c58", "name": "Dangling fetch: POST /api/v1/promo-codes (src/app/(dashboard)/loyalty/promo-codes/page.tsx:228)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/promo-codes (src/app/(dashboard)/loyalty/promo-codes/page.tsx:228)"}, "fullDescription": {"text": "`src/app/(dashboard)/loyalty/promo-codes/page.tsx:228` calls `POST /api/v1/promo-codes` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/promo-codes`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f378e50b2a26920c", "name": "Dangling fetch: DELETE /api/v1/promo-codes/${row.id} (src/app/(dashboard)/loyalty/promo-codes/page.tsx:255)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/promo-codes/${row.id} (src/app/(dashboard)/loyalty/promo-codes/page.tsx:255)"}, "fullDescription": {"text": "`src/app/(dashboard)/loyalty/promo-codes/page.tsx:255` calls `DELETE /api/v1/promo-codes/${row.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/promo-codes/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b5e94079861e5938", "name": "Dangling fetch: PATCH /api/v1/promo-codes/${row.id} (src/app/(dashboard)/loyalty/promo-codes/page.tsx:273)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/promo-codes/${row.id} (src/app/(dashboard)/loyalty/promo-codes/page.tsx:273)"}, "fullDescription": {"text": "`src/app/(dashboard)/loyalty/promo-codes/page.tsx:273` calls `PATCH /api/v1/promo-codes/${row.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/promo-codes/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f5a331bb2afbd86c", "name": "Dangling fetch: GET /api/v1/loyalty-tiers (src/app/(dashboard)/loyalty/tiers/page.tsx:99)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/loyalty-tiers (src/app/(dashboard)/loyalty/tiers/page.tsx:99)"}, "fullDescription": {"text": "`src/app/(dashboard)/loyalty/tiers/page.tsx:99` calls `GET /api/v1/loyalty-tiers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/loyalty-tiers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-da49b6590b7a187f", "name": "Dangling fetch: POST /api/v1/loyalty-tiers?seedDefaults=true (src/app/(dashboard)/loyalty/tiers/page.tsx:145)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/loyalty-tiers?seedDefaults=true (src/app/(dashboard)/loyalty/tiers/page.tsx:145)"}, "fullDescription": {"text": "`src/app/(dashboard)/loyalty/tiers/page.tsx:145` calls `POST /api/v1/loyalty-tiers?seedDefaults=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/loyalty-tiers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e118fd40f380afe2", "name": "Dangling fetch: POST /api/v1/loyalty-tiers (src/app/(dashboard)/loyalty/tiers/page.tsx:190)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/loyalty-tiers (src/app/(dashboard)/loyalty/tiers/page.tsx:190)"}, "fullDescription": {"text": "`src/app/(dashboard)/loyalty/tiers/page.tsx:190` calls `POST /api/v1/loyalty-tiers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/loyalty-tiers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-482e3c462b2e85d2", "name": "Dangling fetch: DELETE /api/v1/loyalty-tiers/${row.id} (src/app/(dashboard)/loyalty/tiers/page.tsx:220)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/loyalty-tiers/${row.id} (src/app/(dashboard)/loyalty/tiers/page.tsx:220)"}, "fullDescription": {"text": "`src/app/(dashboard)/loyalty/tiers/page.tsx:220` calls `DELETE /api/v1/loyalty-tiers/${row.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/loyalty-tiers/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-80fb7c45487cefeb", "name": "Dangling fetch: POST /api/v1/loyalty-accounts/${accountId}/${mode} (src/app/(dashboard)/loyalty/accounts/[id]/page.tsx:1", "shortDescription": {"text": "Dangling fetch: POST /api/v1/loyalty-accounts/${accountId}/${mode} (src/app/(dashboard)/loyalty/accounts/[id]/page.tsx:118)"}, "fullDescription": {"text": "`src/app/(dashboard)/loyalty/accounts/[id]/page.tsx:118` calls `POST /api/v1/loyalty-accounts/${accountId}/${mode}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/loyalty-accounts/<p>/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-16bf00a4f2cab74b", "name": "Dangling fetch: GET /api/v1/loyalty-accounts/${id} (src/app/(dashboard)/loyalty/accounts/[id]/page.tsx:287)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/loyalty-accounts/${id} (src/app/(dashboard)/loyalty/accounts/[id]/page.tsx:287)"}, "fullDescription": {"text": "`src/app/(dashboard)/loyalty/accounts/[id]/page.tsx:287` calls `GET /api/v1/loyalty-accounts/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/loyalty-accounts/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c4a85cd0819c1b5d", "name": "Dangling fetch: GET /api/v1/campaign-roi (src/app/(dashboard)/campaign-roi/page.tsx:294)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/campaign-roi (src/app/(dashboard)/campaign-roi/page.tsx:294)"}, "fullDescription": {"text": "`src/app/(dashboard)/campaign-roi/page.tsx:294` calls `GET /api/v1/campaign-roi` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/campaign-roi`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e50b4a80b8fed52d", "name": "Dangling fetch: GET /api/v1/sequences/${seqId} (src/app/(dashboard)/sequences/page.tsx:88)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/sequences/${seqId} (src/app/(dashboard)/sequences/page.tsx:88)"}, "fullDescription": {"text": "`src/app/(dashboard)/sequences/page.tsx:88` calls `GET /api/v1/sequences/${seqId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/sequences/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6fd99b38b824ef22", "name": "Dangling fetch: GET /api/v1/sequences (src/app/(dashboard)/sequences/page.tsx:286)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/sequences (src/app/(dashboard)/sequences/page.tsx:286)"}, "fullDescription": {"text": "`src/app/(dashboard)/sequences/page.tsx:286` calls `GET /api/v1/sequences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/sequences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4fcaf452636866ff", "name": "Dangling fetch: DELETE /api/v1/sequences/${deleteTarget.id} (src/app/(dashboard)/sequences/page.tsx:328)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/sequences/${deleteTarget.id} (src/app/(dashboard)/sequences/page.tsx:328)"}, "fullDescription": {"text": "`src/app/(dashboard)/sequences/page.tsx:328` calls `DELETE /api/v1/sequences/${deleteTarget.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/sequences/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f35b598722bce8dd", "name": "Dangling fetch: PATCH /api/v1/sequences/${seq.id} (src/app/(dashboard)/sequences/page.tsx:334)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/sequences/${seq.id} (src/app/(dashboard)/sequences/page.tsx:334)"}, "fullDescription": {"text": "`src/app/(dashboard)/sequences/page.tsx:334` calls `PATCH /api/v1/sequences/${seq.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/sequences/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ebec4b57d9aeb9ba", "name": "Dangling fetch: GET /api/v1/policy-holders?${params} (src/app/(dashboard)/insurance/page.tsx:69)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/policy-holders?${params} (src/app/(dashboard)/insurance/page.tsx:69)"}, "fullDescription": {"text": "`src/app/(dashboard)/insurance/page.tsx:69` calls `GET /api/v1/policy-holders?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/policy-holders`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2af5ce447d65eb46", "name": "Dangling fetch: GET /api/v1/policies?limit=1 (src/app/(dashboard)/insurance/page.tsx:91)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/policies?limit=1 (src/app/(dashboard)/insurance/page.tsx:91)"}, "fullDescription": {"text": "`src/app/(dashboard)/insurance/page.tsx:91` calls `GET /api/v1/policies?limit=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/policies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d56b5887e85a68e0", "name": "Dangling fetch: GET /api/v1/claims?limit=1 (src/app/(dashboard)/insurance/page.tsx:92)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/claims?limit=1 (src/app/(dashboard)/insurance/page.tsx:92)"}, "fullDescription": {"text": "`src/app/(dashboard)/insurance/page.tsx:92` calls `GET /api/v1/claims?limit=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/claims`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-59d4d928dd7249e6", "name": "Dangling fetch: GET /api/v1/claims?${params} (src/app/(dashboard)/insurance/claims/page.tsx:67)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/claims?${params} (src/app/(dashboard)/insurance/claims/page.tsx:67)"}, "fullDescription": {"text": "`src/app/(dashboard)/insurance/claims/page.tsx:67` calls `GET /api/v1/claims?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/claims`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d5ccdd80fdfb6dab", "name": "Dangling fetch: GET /api/v1/policy-holders/${id} (src/app/(dashboard)/insurance/[id]/page.tsx:96)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/policy-holders/${id} (src/app/(dashboard)/insurance/[id]/page.tsx:96)"}, "fullDescription": {"text": "`src/app/(dashboard)/insurance/[id]/page.tsx:96` calls `GET /api/v1/policy-holders/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/policy-holders/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-54b6f0a4d6bc76f5", "name": "Dangling fetch: GET /api/v1/policies?policyHolderId=${id}&limit=50 (src/app/(dashboard)/insurance/[id]/page.tsx:112)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/policies?policyHolderId=${id}&limit=50 (src/app/(dashboard)/insurance/[id]/page.tsx:112)"}, "fullDescription": {"text": "`src/app/(dashboard)/insurance/[id]/page.tsx:112` calls `GET /api/v1/policies?policyHolderId=${id}&limit=50` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/policies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7da6aa4b9f70d267", "name": "Dangling fetch: GET /api/v1/beneficiaries?${params} (src/app/(dashboard)/insurance/beneficiaries/page.tsx:58)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/beneficiaries?${params} (src/app/(dashboard)/insurance/beneficiaries/page.tsx:58)"}, "fullDescription": {"text": "`src/app/(dashboard)/insurance/beneficiaries/page.tsx:58` calls `GET /api/v1/beneficiaries?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/beneficiaries`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9dbceec654c787b1", "name": "Dangling fetch: GET /api/v1/policies?${params} (src/app/(dashboard)/insurance/policies/page.tsx:64)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/policies?${params} (src/app/(dashboard)/insurance/policies/page.tsx:64)"}, "fullDescription": {"text": "`src/app/(dashboard)/insurance/policies/page.tsx:64` calls `GET /api/v1/policies?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/policies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9124ccaa8b8c22b5", "name": "Dangling fetch: GET /api/v1/surveys (src/app/(dashboard)/surveys/page.tsx:80)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/surveys (src/app/(dashboard)/surveys/page.tsx:80)"}, "fullDescription": {"text": "`src/app/(dashboard)/surveys/page.tsx:80` calls `GET /api/v1/surveys` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/surveys`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c2f0a0a144b9c114", "name": "Dangling fetch: POST /api/v1/surveys (src/app/(dashboard)/surveys/page.tsx:97)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/surveys (src/app/(dashboard)/surveys/page.tsx:97)"}, "fullDescription": {"text": "`src/app/(dashboard)/surveys/page.tsx:97` calls `POST /api/v1/surveys` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/surveys`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d5978492d289abd3", "name": "Dangling fetch: DELETE /api/v1/surveys/${deleteId} (src/app/(dashboard)/surveys/page.tsx:125)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/surveys/${deleteId} (src/app/(dashboard)/surveys/page.tsx:125)"}, "fullDescription": {"text": "`src/app/(dashboard)/surveys/page.tsx:125` calls `DELETE /api/v1/surveys/${deleteId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/surveys/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-098dd8719ae1122b", "name": "Dangling fetch: PUT /api/v1/surveys/${s.id} (src/app/(dashboard)/surveys/page.tsx:131)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/surveys/${s.id} (src/app/(dashboard)/surveys/page.tsx:131)"}, "fullDescription": {"text": "`src/app/(dashboard)/surveys/page.tsx:131` calls `PUT /api/v1/surveys/${s.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/surveys/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fb6d5699a3fae0f0", "name": "Dangling fetch: POST /api/v1/surveys/${sendDialogId}/send (src/app/(dashboard)/surveys/page.tsx:155)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/surveys/${sendDialogId}/send (src/app/(dashboard)/surveys/page.tsx:155)"}, "fullDescription": {"text": "`src/app/(dashboard)/surveys/page.tsx:155` calls `POST /api/v1/surveys/${sendDialogId}/send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/surveys/<p>/send`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-18bff9900b6e87e1", "name": "Dangling fetch: GET /api/v1/surveys/${params.id} (src/app/(dashboard)/surveys/[id]/page.tsx:70)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/surveys/${params.id} (src/app/(dashboard)/surveys/[id]/page.tsx:70)"}, "fullDescription": {"text": "`src/app/(dashboard)/surveys/[id]/page.tsx:70` calls `GET /api/v1/surveys/${params.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/surveys/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4aef5c2f3ef20544", "name": "Dangling fetch: PUT /api/v1/surveys/${params.id} (src/app/(dashboard)/surveys/[id]/page.tsx:88)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/surveys/${params.id} (src/app/(dashboard)/surveys/[id]/page.tsx:88)"}, "fullDescription": {"text": "`src/app/(dashboard)/surveys/[id]/page.tsx:88` calls `PUT /api/v1/surveys/${params.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/surveys/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bc3ab394559f718e", "name": "Dangling fetch: GET /api/v1/calendar/token (src/app/(dashboard)/tasks/page.tsx:155)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/calendar/token (src/app/(dashboard)/tasks/page.tsx:155)"}, "fullDescription": {"text": "`src/app/(dashboard)/tasks/page.tsx:155` calls `GET /api/v1/calendar/token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/calendar/token`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e8b8685a3a589470", "name": "Dangling fetch: POST /api/v1/calendar/generate-token (src/app/(dashboard)/tasks/page.tsx:167)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/calendar/generate-token (src/app/(dashboard)/tasks/page.tsx:167)"}, "fullDescription": {"text": "`src/app/(dashboard)/tasks/page.tsx:167` calls `POST /api/v1/calendar/generate-token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/calendar/generate-token`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-063b36f609faf3b3", "name": "Dangling fetch: GET /api/v1/tasks?limit=200 (src/app/(dashboard)/tasks/page.tsx:644)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/tasks?limit=200 (src/app/(dashboard)/tasks/page.tsx:644)"}, "fullDescription": {"text": "`src/app/(dashboard)/tasks/page.tsx:644` calls `GET /api/v1/tasks?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-be19764a1fff200b", "name": "Dangling fetch: PATCH /api/v1/tasks/${task.id} (src/app/(dashboard)/tasks/page.tsx:669)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/tasks/${task.id} (src/app/(dashboard)/tasks/page.tsx:669)"}, "fullDescription": {"text": "`src/app/(dashboard)/tasks/page.tsx:669` calls `PATCH /api/v1/tasks/${task.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c55a81f746ed49a0", "name": "Dangling fetch: PATCH /api/v1/tasks/${taskId} (src/app/(dashboard)/tasks/page.tsx:791)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/tasks/${taskId} (src/app/(dashboard)/tasks/page.tsx:791)"}, "fullDescription": {"text": "`src/app/(dashboard)/tasks/page.tsx:791` calls `PATCH /api/v1/tasks/${taskId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-012020c446c251d9", "name": "Dangling fetch: POST /api/v1/tasks (src/app/(dashboard)/tasks/page.tsx:816)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/tasks (src/app/(dashboard)/tasks/page.tsx:816)"}, "fullDescription": {"text": "`src/app/(dashboard)/tasks/page.tsx:816` calls `POST /api/v1/tasks` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d160dd290bd07dab", "name": "Dangling fetch: GET /api/v1/custom-fields?entityType=task (src/app/(dashboard)/tasks/page.tsx:831)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/custom-fields?entityType=task (src/app/(dashboard)/tasks/page.tsx:831)"}, "fullDescription": {"text": "`src/app/(dashboard)/tasks/page.tsx:831` calls `GET /api/v1/custom-fields?entityType=task` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/custom-fields`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a1510161a9130a0d", "name": "Dangling fetch: GET /api/v1/users/assignable (src/app/(dashboard)/tasks/page.tsx:844)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users/assignable (src/app/(dashboard)/tasks/page.tsx:844)"}, "fullDescription": {"text": "`src/app/(dashboard)/tasks/page.tsx:844` calls `GET /api/v1/users/assignable` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/assignable`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-890522cfa26271ea", "name": "Dangling fetch: GET /api/v1/projects?limit=200 (src/app/(dashboard)/tasks/page.tsx:865)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/projects?limit=200 (src/app/(dashboard)/tasks/page.tsx:865)"}, "fullDescription": {"text": "`src/app/(dashboard)/tasks/page.tsx:865` calls `GET /api/v1/projects?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/projects`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-517a64145ae947c7", "name": "Dangling fetch: DELETE /api/v1/tasks/${deleteItem.id} (src/app/(dashboard)/tasks/page.tsx:899)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/tasks/${deleteItem.id} (src/app/(dashboard)/tasks/page.tsx:899)"}, "fullDescription": {"text": "`src/app/(dashboard)/tasks/page.tsx:899` calls `DELETE /api/v1/tasks/${deleteItem.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4350e7d3f8fd4967", "name": "Dangling fetch: POST /api/v1/tasks/bulk (src/app/(dashboard)/tasks/page.tsx:928)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/tasks/bulk (src/app/(dashboard)/tasks/page.tsx:928)"}, "fullDescription": {"text": "`src/app/(dashboard)/tasks/page.tsx:928` calls `POST /api/v1/tasks/bulk` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks/bulk`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-00ec22599ab346cd", "name": "Dangling fetch: PATCH /api/v1/tasks/${taskId} (src/app/(dashboard)/tasks/page.tsx:955)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/tasks/${taskId} (src/app/(dashboard)/tasks/page.tsx:955)"}, "fullDescription": {"text": "`src/app/(dashboard)/tasks/page.tsx:955` calls `PATCH /api/v1/tasks/${taskId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e9fccec710e77dcf", "name": "Dangling fetch: GET /api/v1/account-engagement${qs} (src/app/(dashboard)/accounts/engagement/page.tsx:122)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/account-engagement${qs} (src/app/(dashboard)/accounts/engagement/page.tsx:122)"}, "fullDescription": {"text": "`src/app/(dashboard)/accounts/engagement/page.tsx:122` calls `GET /api/v1/account-engagement${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/account-engagement/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a85bce87a3b64a02", "name": "Dangling fetch: GET /api/v1/cobrowse/sessions?limit=50 (src/app/(dashboard)/cobrowse/page.tsx:56)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/cobrowse/sessions?limit=50 (src/app/(dashboard)/cobrowse/page.tsx:56)"}, "fullDescription": {"text": "`src/app/(dashboard)/cobrowse/page.tsx:56` calls `GET /api/v1/cobrowse/sessions?limit=50` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/cobrowse/sessions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1d662654fba68175", "name": "Dangling fetch: POST /api/v1/cobrowse/sessions (src/app/(dashboard)/cobrowse/page.tsx:183)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/cobrowse/sessions (src/app/(dashboard)/cobrowse/page.tsx:183)"}, "fullDescription": {"text": "`src/app/(dashboard)/cobrowse/page.tsx:183` calls `POST /api/v1/cobrowse/sessions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/cobrowse/sessions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-26cbf55f32d4cc5d", "name": "Dangling fetch: POST /api/v1/cobrowse/sessions/${id}/signal (src/app/(dashboard)/cobrowse/[id]/page.tsx:55)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/cobrowse/sessions/${id}/signal (src/app/(dashboard)/cobrowse/[id]/page.tsx:55)"}, "fullDescription": {"text": "`src/app/(dashboard)/cobrowse/[id]/page.tsx:55` calls `POST /api/v1/cobrowse/sessions/${id}/signal` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/cobrowse/sessions/<p>/signal`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dfc6b7476d0754e1", "name": "Dangling fetch: PATCH /api/v1/cobrowse/sessions/${id} (src/app/(dashboard)/cobrowse/[id]/page.tsx:129)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/cobrowse/sessions/${id} (src/app/(dashboard)/cobrowse/[id]/page.tsx:129)"}, "fullDescription": {"text": "`src/app/(dashboard)/cobrowse/[id]/page.tsx:129` calls `PATCH /api/v1/cobrowse/sessions/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/cobrowse/sessions/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f3e4bdcfbf61d986", "name": "Dangling fetch: GET /api/v1/cobrowse/sessions/${id} (src/app/(dashboard)/cobrowse/[id]/page.tsx:143)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/cobrowse/sessions/${id} (src/app/(dashboard)/cobrowse/[id]/page.tsx:143)"}, "fullDescription": {"text": "`src/app/(dashboard)/cobrowse/[id]/page.tsx:143` calls `GET /api/v1/cobrowse/sessions/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/cobrowse/sessions/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a7d0ae734ec667bb", "name": "Dangling fetch: PATCH /api/v1/cobrowse/sessions/${id} (src/app/(dashboard)/cobrowse/[id]/page.tsx:310)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/cobrowse/sessions/${id} (src/app/(dashboard)/cobrowse/[id]/page.tsx:310)"}, "fullDescription": {"text": "`src/app/(dashboard)/cobrowse/[id]/page.tsx:310` calls `PATCH /api/v1/cobrowse/sessions/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/cobrowse/sessions/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f0420ab04858babf", "name": "Dangling fetch: GET /api/v1/subscriptions-overview (src/app/(dashboard)/billing/subscriptions/page.tsx:127)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/subscriptions-overview (src/app/(dashboard)/billing/subscriptions/page.tsx:127)"}, "fullDescription": {"text": "`src/app/(dashboard)/billing/subscriptions/page.tsx:127` calls `GET /api/v1/subscriptions-overview` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/subscriptions-overview`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-462be21ebbebf628", "name": "Dangling fetch: GET /api/v1/tickets?limit=200 (src/app/(dashboard)/tickets/page.tsx:101)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/tickets?limit=200 (src/app/(dashboard)/tickets/page.tsx:101)"}, "fullDescription": {"text": "`src/app/(dashboard)/tickets/page.tsx:101` calls `GET /api/v1/tickets?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tickets`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-faafc1a8baf8069a", "name": "Dangling fetch: DELETE /api/v1/tickets/${deleteItem.id} (src/app/(dashboard)/tickets/page.tsx:142)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/tickets/${deleteItem.id} (src/app/(dashboard)/tickets/page.tsx:142)"}, "fullDescription": {"text": "`src/app/(dashboard)/tickets/page.tsx:142` calls `DELETE /api/v1/tickets/${deleteItem.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tickets/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7c9b554309f3da10", "name": "Dangling fetch: GET /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:196)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:196)"}, "fullDescription": {"text": "`src/app/(dashboard)/tickets/[id]/page.tsx:196` calls `GET /api/v1/tickets/${ticketId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tickets/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-25c90b742887939b", "name": "Dangling fetch: GET /api/v1/users (src/app/(dashboard)/tickets/[id]/page.tsx:220)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users (src/app/(dashboard)/tickets/[id]/page.tsx:220)"}, "fullDescription": {"text": "`src/app/(dashboard)/tickets/[id]/page.tsx:220` calls `GET /api/v1/users` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-33badde61394a44e", "name": "Dangling fetch: GET /api/v1/tickets/${ticketId}/siblings (src/app/(dashboard)/tickets/[id]/page.tsx:244)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/tickets/${ticketId}/siblings (src/app/(dashboard)/tickets/[id]/page.tsx:244)"}, "fullDescription": {"text": "`src/app/(dashboard)/tickets/[id]/page.tsx:244` calls `GET /api/v1/tickets/${ticketId}/siblings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tickets/<p>/siblings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9408a667396f83c2", "name": "Dangling fetch: GET /api/v1/ticket-macros (src/app/(dashboard)/tickets/[id]/page.tsx:248)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/ticket-macros (src/app/(dashboard)/tickets/[id]/page.tsx:248)"}, "fullDescription": {"text": "`src/app/(dashboard)/tickets/[id]/page.tsx:248` calls `GET /api/v1/ticket-macros` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ticket-macros`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e7586aa9bd52a614", "name": "Dangling fetch: GET /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:254)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:254)"}, "fullDescription": {"text": "`src/app/(dashboard)/tickets/[id]/page.tsx:254` calls `GET /api/v1/tickets/${ticketId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tickets/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8aa4a581d3bf693a", "name": "Dangling fetch: PUT /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:275)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:275)"}, "fullDescription": {"text": "`src/app/(dashboard)/tickets/[id]/page.tsx:275` calls `PUT /api/v1/tickets/${ticketId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tickets/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-596b2f710791fb6d", "name": "Dangling fetch: GET /api/v1/tickets/${ticketId}/context (src/app/(dashboard)/tickets/[id]/page.tsx:287)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/tickets/${ticketId}/context (src/app/(dashboard)/tickets/[id]/page.tsx:287)"}, "fullDescription": {"text": "`src/app/(dashboard)/tickets/[id]/page.tsx:287` calls `GET /api/v1/tickets/${ticketId}/context` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tickets/<p>/context`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bdf607e1641fb883", "name": "Dangling fetch: PUT /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:299)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:299)"}, "fullDescription": {"text": "`src/app/(dashboard)/tickets/[id]/page.tsx:299` calls `PUT /api/v1/tickets/${ticketId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tickets/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d993c03d004b2a38", "name": "Dangling fetch: PUT /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:308)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:308)"}, "fullDescription": {"text": "`src/app/(dashboard)/tickets/[id]/page.tsx:308` calls `PUT /api/v1/tickets/${ticketId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tickets/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1f41ffc0a1cb6cd7", "name": "Dangling fetch: POST /api/v1/ticket-macros/${m.id}/apply (src/app/(dashboard)/tickets/[id]/page.tsx:320)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/ticket-macros/${m.id}/apply (src/app/(dashboard)/tickets/[id]/page.tsx:320)"}, "fullDescription": {"text": "`src/app/(dashboard)/tickets/[id]/page.tsx:320` calls `POST /api/v1/ticket-macros/${m.id}/apply` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ticket-macros/<p>/apply`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dd29efb191ab1984", "name": "Dangling fetch: POST /api/v1/tickets/${ticketId}/comments (src/app/(dashboard)/tickets/[id]/page.tsx:333)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/tickets/${ticketId}/comments (src/app/(dashboard)/tickets/[id]/page.tsx:333)"}, "fullDescription": {"text": "`src/app/(dashboard)/tickets/[id]/page.tsx:333` calls `POST /api/v1/tickets/${ticketId}/comments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tickets/<p>/comments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-71d279bbeedb0180", "name": "Dangling fetch: PUT /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:350)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:350)"}, "fullDescription": {"text": "`src/app/(dashboard)/tickets/[id]/page.tsx:350` calls `PUT /api/v1/tickets/${ticketId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tickets/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6b51d038c4add28f", "name": "Dangling fetch: PUT /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:363)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:363)"}, "fullDescription": {"text": "`src/app/(dashboard)/tickets/[id]/page.tsx:363` calls `PUT /api/v1/tickets/${ticketId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tickets/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-90e4764b8a8cc5e6", "name": "Dangling fetch: PUT /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:380)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:380)"}, "fullDescription": {"text": "`src/app/(dashboard)/tickets/[id]/page.tsx:380` calls `PUT /api/v1/tickets/${ticketId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tickets/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-98f16b317cf7531c", "name": "Dangling fetch: POST /api/v1/tickets/ai (src/app/(dashboard)/tickets/[id]/page.tsx:393)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/tickets/ai (src/app/(dashboard)/tickets/[id]/page.tsx:393)"}, "fullDescription": {"text": "`src/app/(dashboard)/tickets/[id]/page.tsx:393` calls `POST /api/v1/tickets/ai` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tickets/ai`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-71e3709d29768fda", "name": "Dangling fetch: PATCH /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:413)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:413)"}, "fullDescription": {"text": "`src/app/(dashboard)/tickets/[id]/page.tsx:413` calls `PATCH /api/v1/tickets/${ticketId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tickets/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2175dfe25d1164db", "name": "Dangling fetch: PUT /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:427)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:427)"}, "fullDescription": {"text": "`src/app/(dashboard)/tickets/[id]/page.tsx:427` calls `PUT /api/v1/tickets/${ticketId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tickets/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a84f640ac7bf498c", "name": "Dangling fetch: PUT /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:439)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:439)"}, "fullDescription": {"text": "`src/app/(dashboard)/tickets/[id]/page.tsx:439` calls `PUT /api/v1/tickets/${ticketId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tickets/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-88d707b3a3c2774c", "name": "Dangling fetch: POST /api/v1/ticket-macros/${m.id}/apply (src/app/(dashboard)/tickets/[id]/page.tsx:581)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/ticket-macros/${m.id}/apply (src/app/(dashboard)/tickets/[id]/page.tsx:581)"}, "fullDescription": {"text": "`src/app/(dashboard)/tickets/[id]/page.tsx:581` calls `POST /api/v1/ticket-macros/${m.id}/apply` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ticket-macros/<p>/apply`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-22b2328debb52f80", "name": "Dangling fetch: PUT /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:641)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:641)"}, "fullDescription": {"text": "`src/app/(dashboard)/tickets/[id]/page.tsx:641` calls `PUT /api/v1/tickets/${ticketId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tickets/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bde61f1964c380d3", "name": "Dangling fetch: GET /api/v1/calculated-insights (src/app/(dashboard)/cdp/insights/page.tsx:248)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/calculated-insights (src/app/(dashboard)/cdp/insights/page.tsx:248)"}, "fullDescription": {"text": "`src/app/(dashboard)/cdp/insights/page.tsx:248` calls `GET /api/v1/calculated-insights` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/calculated-insights`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-77fc2cbb5c496949", "name": "Dangling fetch: POST /api/v1/tasks (src/app/(dashboard)/cdp/insights/page.tsx:309)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/tasks (src/app/(dashboard)/cdp/insights/page.tsx:309)"}, "fullDescription": {"text": "`src/app/(dashboard)/cdp/insights/page.tsx:309` calls `POST /api/v1/tasks` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aaa2e06fea29373e", "name": "Dangling fetch: GET /api/v1/identity-merge-queue (src/app/(dashboard)/cdp/merge-queue/page.tsx:198)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/identity-merge-queue (src/app/(dashboard)/cdp/merge-queue/page.tsx:198)"}, "fullDescription": {"text": "`src/app/(dashboard)/cdp/merge-queue/page.tsx:198` calls `GET /api/v1/identity-merge-queue` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/identity-merge-queue`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ee1b695d262f3b01", "name": "Dangling fetch: POST /api/v1/identity-merge-queue/${id}/resolve (src/app/(dashboard)/cdp/merge-queue/page.tsx:224)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/identity-merge-queue/${id}/resolve (src/app/(dashboard)/cdp/merge-queue/page.tsx:224)"}, "fullDescription": {"text": "`src/app/(dashboard)/cdp/merge-queue/page.tsx:224` calls `POST /api/v1/identity-merge-queue/${id}/resolve` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/identity-merge-queue/<p>/resolve`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-219ed475a61c021c", "name": "Dangling fetch: GET /api/v1/pages (src/app/(dashboard)/pages/page.tsx:92)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/pages (src/app/(dashboard)/pages/page.tsx:92)"}, "fullDescription": {"text": "`src/app/(dashboard)/pages/page.tsx:92` calls `GET /api/v1/pages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3cabb12ca2d5e41b", "name": "Dangling fetch: GET /api/v1/pages/submissions (src/app/(dashboard)/pages/page.tsx:104)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/pages/submissions (src/app/(dashboard)/pages/page.tsx:104)"}, "fullDescription": {"text": "`src/app/(dashboard)/pages/page.tsx:104` calls `GET /api/v1/pages/submissions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pages/submissions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-508e6aefce35cd2d", "name": "Dangling fetch: GET /api/v1/pages/${pageId}/analytics (src/app/(dashboard)/pages/page.tsx:118)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/pages/${pageId}/analytics (src/app/(dashboard)/pages/page.tsx:118)"}, "fullDescription": {"text": "`src/app/(dashboard)/pages/page.tsx:118` calls `GET /api/v1/pages/${pageId}/analytics` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pages/<p>/analytics`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-84249c6b614cfec0", "name": "Dangling fetch: POST /api/v1/pages (src/app/(dashboard)/pages/page.tsx:158)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/pages (src/app/(dashboard)/pages/page.tsx:158)"}, "fullDescription": {"text": "`src/app/(dashboard)/pages/page.tsx:158` calls `POST /api/v1/pages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3d5573d24fd4bab4", "name": "Dangling fetch: PUT /api/v1/pages/${page.id} (src/app/(dashboard)/pages/page.tsx:186)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/pages/${page.id} (src/app/(dashboard)/pages/page.tsx:186)"}, "fullDescription": {"text": "`src/app/(dashboard)/pages/page.tsx:186` calls `PUT /api/v1/pages/${page.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pages/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-da749fb21cf3f4b2", "name": "Dangling fetch: POST /api/v1/pages/${page.id}/publish (src/app/(dashboard)/pages/page.tsx:195)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/pages/${page.id}/publish (src/app/(dashboard)/pages/page.tsx:195)"}, "fullDescription": {"text": "`src/app/(dashboard)/pages/page.tsx:195` calls `POST /api/v1/pages/${page.id}/publish` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pages/<p>/publish`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fb4d7775f9534096", "name": "Dangling fetch: DELETE /api/v1/pages/${id} (src/app/(dashboard)/pages/page.tsx:211)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/pages/${id} (src/app/(dashboard)/pages/page.tsx:211)"}, "fullDescription": {"text": "`src/app/(dashboard)/pages/page.tsx:211` calls `DELETE /api/v1/pages/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pages/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-419b44fa4e7a099a", "name": "Dangling fetch: GET /api/v1/analytics/forecast?months=6 (src/app/(dashboard)/forecast/page.tsx:47)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/analytics/forecast?months=6 (src/app/(dashboard)/forecast/page.tsx:47)"}, "fullDescription": {"text": "`src/app/(dashboard)/forecast/page.tsx:47` calls `GET /api/v1/analytics/forecast?months=6` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/analytics/forecast`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b42472c67da51a64", "name": "Dangling fetch: GET /api/v1/sales-quotas?year=${year} (src/app/(dashboard)/forecast/page.tsx:48)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/sales-quotas?year=${year} (src/app/(dashboard)/forecast/page.tsx:48)"}, "fullDescription": {"text": "`src/app/(dashboard)/forecast/page.tsx:48` calls `GET /api/v1/sales-quotas?year=${year}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/sales-quotas`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-30836f29b194ec40", "name": "Dangling fetch: GET /api/v1/pipelines (src/app/(dashboard)/forecast/page.tsx:49)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/pipelines (src/app/(dashboard)/forecast/page.tsx:49)"}, "fullDescription": {"text": "`src/app/(dashboard)/forecast/page.tsx:49` calls `GET /api/v1/pipelines` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pipelines`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-403de72fc6f329de", "name": "Dangling fetch: GET /api/v1/deals?limit=200 (src/app/(dashboard)/forecast/page.tsx:50)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/deals?limit=200 (src/app/(dashboard)/forecast/page.tsx:50)"}, "fullDescription": {"text": "`src/app/(dashboard)/forecast/page.tsx:50` calls `GET /api/v1/deals?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c45acc2d78dd683c", "name": "Dangling fetch: GET /api/v1/forecast-snapshots?limit=50 (src/app/(dashboard)/forecast/snapshots/page.tsx:53)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/forecast-snapshots?limit=50 (src/app/(dashboard)/forecast/snapshots/page.tsx:53)"}, "fullDescription": {"text": "`src/app/(dashboard)/forecast/snapshots/page.tsx:53` calls `GET /api/v1/forecast-snapshots?limit=50` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/forecast-snapshots`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0b0f59dddbaa3a89", "name": "Dangling fetch: POST /api/v1/forecast-snapshots (src/app/(dashboard)/forecast/snapshots/page.tsx:75)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/forecast-snapshots (src/app/(dashboard)/forecast/snapshots/page.tsx:75)"}, "fullDescription": {"text": "`src/app/(dashboard)/forecast/snapshots/page.tsx:75` calls `POST /api/v1/forecast-snapshots` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/forecast-snapshots`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6690e4c58aa20f5b", "name": "Dangling fetch: DELETE /api/v1/forecast-snapshots/${id} (src/app/(dashboard)/forecast/snapshots/page.tsx:106)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/forecast-snapshots/${id} (src/app/(dashboard)/forecast/snapshots/page.tsx:106)"}, "fullDescription": {"text": "`src/app/(dashboard)/forecast/snapshots/page.tsx:106` calls `DELETE /api/v1/forecast-snapshots/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/forecast-snapshots/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7bf1ec3e55b0ea49", "name": "Dangling fetch: GET /api/v1/deal-velocity?periodKey=${period} (src/app/(dashboard)/forecast/velocity/page.tsx:85)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/deal-velocity?periodKey=${period} (src/app/(dashboard)/forecast/velocity/page.tsx:85)"}, "fullDescription": {"text": "`src/app/(dashboard)/forecast/velocity/page.tsx:85` calls `GET /api/v1/deal-velocity?periodKey=${period}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deal-velocity`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-19f0ba8d6883207c", "name": "Dangling fetch: GET /api/v1/pipeline-waterfall?days=${days} (src/app/(dashboard)/forecast/waterfall/page.tsx:92)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/pipeline-waterfall?days=${days} (src/app/(dashboard)/forecast/waterfall/page.tsx:92)"}, "fullDescription": {"text": "`src/app/(dashboard)/forecast/waterfall/page.tsx:92` calls `GET /api/v1/pipeline-waterfall?days=${days}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pipeline-waterfall`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-91759ac7d1cd5088", "name": "Dangling fetch: POST /api/budgeting/matrix-seed (src/app/(dashboard)/budgeting/page.tsx:1584)", "shortDescription": {"text": "Dangling fetch: POST /api/budgeting/matrix-seed (src/app/(dashboard)/budgeting/page.tsx:1584)"}, "fullDescription": {"text": "`src/app/(dashboard)/budgeting/page.tsx:1584` calls `POST /api/budgeting/matrix-seed` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/matrix-seed`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d69b272973cf6013", "name": "Dangling fetch: POST /api/budgeting/resolve-costs (src/app/(dashboard)/budgeting/page.tsx:4036)", "shortDescription": {"text": "Dangling fetch: POST /api/budgeting/resolve-costs (src/app/(dashboard)/budgeting/page.tsx:4036)"}, "fullDescription": {"text": "`src/app/(dashboard)/budgeting/page.tsx:4036` calls `POST /api/budgeting/resolve-costs` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/resolve-costs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-75c89699f7be2a40", "name": "Dangling fetch: GET /api/v1/email-templates?limit=500 (src/app/(dashboard)/email-templates/page.tsx:80)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/email-templates?limit=500 (src/app/(dashboard)/email-templates/page.tsx:80)"}, "fullDescription": {"text": "`src/app/(dashboard)/email-templates/page.tsx:80` calls `GET /api/v1/email-templates?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/email-templates`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1acd299fdbb984c5", "name": "Dangling fetch: GET /api/v1/content-scores?entityType=email_template (src/app/(dashboard)/email-templates/page.tsx:98)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/content-scores?entityType=email_template (src/app/(dashboard)/email-templates/page.tsx:98)"}, "fullDescription": {"text": "`src/app/(dashboard)/email-templates/page.tsx:98` calls `GET /api/v1/content-scores?entityType=email_template` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/content-scores`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a34339be40909e29", "name": "Dangling fetch: DELETE /api/v1/email-templates/${deleteId} (src/app/(dashboard)/email-templates/page.tsx:125)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/email-templates/${deleteId} (src/app/(dashboard)/email-templates/page.tsx:125)"}, "fullDescription": {"text": "`src/app/(dashboard)/email-templates/page.tsx:125` calls `DELETE /api/v1/email-templates/${deleteId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/email-templates/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4a15a43f1c3e7988", "name": "Dangling fetch: GET /api/v1/email-log?${params} (src/app/(dashboard)/email-log/page.tsx:91)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/email-log?${params} (src/app/(dashboard)/email-log/page.tsx:91)"}, "fullDescription": {"text": "`src/app/(dashboard)/email-log/page.tsx:91` calls `GET /api/v1/email-log?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/email-log`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2746e2aaf4e57571", "name": "Dangling fetch: POST /api/v1/email-log/ai-analysis (src/app/(dashboard)/email-log/page.tsx:112)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/email-log/ai-analysis (src/app/(dashboard)/email-log/page.tsx:112)"}, "fullDescription": {"text": "`src/app/(dashboard)/email-log/page.tsx:112` calls `POST /api/v1/email-log/ai-analysis` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/email-log/ai-analysis`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-600674782fb368c4", "name": "Dangling fetch: GET /api/v1/utility-customers?${params} (src/app/(dashboard)/energy/page.tsx:73)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/utility-customers?${params} (src/app/(dashboard)/energy/page.tsx:73)"}, "fullDescription": {"text": "`src/app/(dashboard)/energy/page.tsx:73` calls `GET /api/v1/utility-customers?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/utility-customers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ce0a47b6d63ad6fe", "name": "Dangling fetch: GET /api/v1/metering-points?limit=1 (src/app/(dashboard)/energy/page.tsx:99)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/metering-points?limit=1 (src/app/(dashboard)/energy/page.tsx:99)"}, "fullDescription": {"text": "`src/app/(dashboard)/energy/page.tsx:99` calls `GET /api/v1/metering-points?limit=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/metering-points`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d3f0c29b5b0dc3fe", "name": "Dangling fetch: GET /api/v1/outages?limit=1 (src/app/(dashboard)/energy/page.tsx:100)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/outages?limit=1 (src/app/(dashboard)/energy/page.tsx:100)"}, "fullDescription": {"text": "`src/app/(dashboard)/energy/page.tsx:100` calls `GET /api/v1/outages?limit=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/outages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c8d4dd836ec0a234", "name": "Dangling fetch: GET /api/v1/outages?${params} (src/app/(dashboard)/energy/outages/page.tsx:77)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/outages?${params} (src/app/(dashboard)/energy/outages/page.tsx:77)"}, "fullDescription": {"text": "`src/app/(dashboard)/energy/outages/page.tsx:77` calls `GET /api/v1/outages?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/outages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a2964405e7a7e64e", "name": "Dangling fetch: GET /api/v1/utility-customers/${id} (src/app/(dashboard)/energy/[id]/page.tsx:106)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/utility-customers/${id} (src/app/(dashboard)/energy/[id]/page.tsx:106)"}, "fullDescription": {"text": "`src/app/(dashboard)/energy/[id]/page.tsx:106` calls `GET /api/v1/utility-customers/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/utility-customers/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c4a040d4ac6f9c7c", "name": "Dangling fetch: GET /api/v1/service-calls?${params} (src/app/(dashboard)/energy/service-calls/page.tsx:77)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/service-calls?${params} (src/app/(dashboard)/energy/service-calls/page.tsx:77)"}, "fullDescription": {"text": "`src/app/(dashboard)/energy/service-calls/page.tsx:77` calls `GET /api/v1/service-calls?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/service-calls`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1ba16bf82920a6d0", "name": "Dangling fetch: GET /api/v1/metering-points?${params} (src/app/(dashboard)/energy/metering/page.tsx:72)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/metering-points?${params} (src/app/(dashboard)/energy/metering/page.tsx:72)"}, "fullDescription": {"text": "`src/app/(dashboard)/energy/metering/page.tsx:72` calls `GET /api/v1/metering-points?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/metering-points`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8649b4104705a74a", "name": "Dangling fetch: GET /api/v1/campaigns?limit=500 (src/app/(dashboard)/campaigns/page.tsx:87)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/campaigns?limit=500 (src/app/(dashboard)/campaigns/page.tsx:87)"}, "fullDescription": {"text": "`src/app/(dashboard)/campaigns/page.tsx:87` calls `GET /api/v1/campaigns?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/campaigns`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7891627d76cb9876", "name": "Dangling fetch: DELETE /api/v1/campaigns/${deleteId} (src/app/(dashboard)/campaigns/page.tsx:102)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/campaigns/${deleteId} (src/app/(dashboard)/campaigns/page.tsx:102)"}, "fullDescription": {"text": "`src/app/(dashboard)/campaigns/page.tsx:102` calls `DELETE /api/v1/campaigns/${deleteId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/campaigns/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7dcf186028df9fc1", "name": "Dangling fetch: POST /api/v1/campaigns/${campaign.id}/send (src/app/(dashboard)/campaigns/page.tsx:112)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/campaigns/${campaign.id}/send (src/app/(dashboard)/campaigns/page.tsx:112)"}, "fullDescription": {"text": "`src/app/(dashboard)/campaigns/page.tsx:112` calls `POST /api/v1/campaigns/${campaign.id}/send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/campaigns/<p>/send`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ef0d53ad913f42c6", "name": "Dangling fetch: GET /api/v1/campaigns/${campaignId} (src/app/(dashboard)/campaigns/page.tsx:296)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/campaigns/${campaignId} (src/app/(dashboard)/campaigns/page.tsx:296)"}, "fullDescription": {"text": "`src/app/(dashboard)/campaigns/page.tsx:296` calls `GET /api/v1/campaigns/${campaignId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/campaigns/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a80ca05c0da202ae", "name": "Dangling fetch: GET /api/v1/campaigns/${params.id} (src/app/(dashboard)/campaigns/[id]/page.tsx:59)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/campaigns/${params.id} (src/app/(dashboard)/campaigns/[id]/page.tsx:59)"}, "fullDescription": {"text": "`src/app/(dashboard)/campaigns/[id]/page.tsx:59` calls `GET /api/v1/campaigns/${params.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/campaigns/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e3d63861120b79cf", "name": "Dangling fetch: GET /api/v1/campaigns/${params.id}/variants (src/app/(dashboard)/campaigns/[id]/page.tsx:67)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/campaigns/${params.id}/variants (src/app/(dashboard)/campaigns/[id]/page.tsx:67)"}, "fullDescription": {"text": "`src/app/(dashboard)/campaigns/[id]/page.tsx:67` calls `GET /api/v1/campaigns/${params.id}/variants` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/campaigns/<p>/variants`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-746e1143af41cd22", "name": "Dangling fetch: DELETE /api/v1/campaigns/${params.id} (src/app/(dashboard)/campaigns/[id]/page.tsx:80)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/campaigns/${params.id} (src/app/(dashboard)/campaigns/[id]/page.tsx:80)"}, "fullDescription": {"text": "`src/app/(dashboard)/campaigns/[id]/page.tsx:80` calls `DELETE /api/v1/campaigns/${params.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/campaigns/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d2384c79e5ab5307", "name": "Dangling fetch: POST /api/v1/campaigns/${campaign.id}/send (src/app/(dashboard)/campaigns/[id]/page.tsx:144)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/campaigns/${campaign.id}/send (src/app/(dashboard)/campaigns/[id]/page.tsx:144)"}, "fullDescription": {"text": "`src/app/(dashboard)/campaigns/[id]/page.tsx:144` calls `POST /api/v1/campaigns/${campaign.id}/send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/campaigns/<p>/send`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-879d6d7ae0bd1083", "name": "Dangling fetch: PUT /api/v1/campaigns/${campaign.id} (src/app/(dashboard)/campaigns/[id]/page.tsx:278)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/campaigns/${campaign.id} (src/app/(dashboard)/campaigns/[id]/page.tsx:278)"}, "fullDescription": {"text": "`src/app/(dashboard)/campaigns/[id]/page.tsx:278` calls `PUT /api/v1/campaigns/${campaign.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/campaigns/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-65cb815726a36892", "name": "Dangling fetch: PUT /api/v1/campaigns/${campaign.id} (src/app/(dashboard)/campaigns/[id]/page.tsx:303)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/campaigns/${campaign.id} (src/app/(dashboard)/campaigns/[id]/page.tsx:303)"}, "fullDescription": {"text": "`src/app/(dashboard)/campaigns/[id]/page.tsx:303` calls `PUT /api/v1/campaigns/${campaign.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/campaigns/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-112dbd88cd4f26ea", "name": "Dangling fetch: POST /api/v1/campaigns/${campaign.id}/send (src/app/(dashboard)/campaigns/[id]/page.tsx:313)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/campaigns/${campaign.id}/send (src/app/(dashboard)/campaigns/[id]/page.tsx:313)"}, "fullDescription": {"text": "`src/app/(dashboard)/campaigns/[id]/page.tsx:313` calls `POST /api/v1/campaigns/${campaign.id}/send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/campaigns/<p>/send`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aa1bf2cb87242f9c", "name": "Dangling fetch: PUT /api/v1/campaigns/${params.id} (src/app/(dashboard)/campaigns/[id]/page.tsx:388)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/campaigns/${params.id} (src/app/(dashboard)/campaigns/[id]/page.tsx:388)"}, "fullDescription": {"text": "`src/app/(dashboard)/campaigns/[id]/page.tsx:388` calls `PUT /api/v1/campaigns/${params.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/campaigns/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c82b36d71bd39a53", "name": "Dangling fetch: POST /api/v1/analytics/segments/ai-summary (src/app/(dashboard)/contacts/page.tsx:98)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/analytics/segments/ai-summary (src/app/(dashboard)/contacts/page.tsx:98)"}, "fullDescription": {"text": "`src/app/(dashboard)/contacts/page.tsx:98` calls `POST /api/v1/analytics/segments/ai-summary` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/analytics/segments/ai-summary`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4370aad2669c1064", "name": "Dangling fetch: GET /api/v1/contacts?limit=500 (src/app/(dashboard)/contacts/list/page.tsx:127)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contacts?limit=500 (src/app/(dashboard)/contacts/list/page.tsx:127)"}, "fullDescription": {"text": "`src/app/(dashboard)/contacts/list/page.tsx:127` calls `GET /api/v1/contacts?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contacts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3927286cf985ecee", "name": "Dangling fetch: PATCH /api/v1/contacts/${contactId} (src/app/(dashboard)/contacts/list/page.tsx:148)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/contacts/${contactId} (src/app/(dashboard)/contacts/list/page.tsx:148)"}, "fullDescription": {"text": "`src/app/(dashboard)/contacts/list/page.tsx:148` calls `PATCH /api/v1/contacts/${contactId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contacts/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a9a1ffad65222c29", "name": "Dangling fetch: DELETE /api/v1/contacts/${deleteItem.id} (src/app/(dashboard)/contacts/list/page.tsx:190)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/contacts/${deleteItem.id} (src/app/(dashboard)/contacts/list/page.tsx:190)"}, "fullDescription": {"text": "`src/app/(dashboard)/contacts/list/page.tsx:190` calls `DELETE /api/v1/contacts/${deleteItem.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contacts/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8f41eee0f5ce8277", "name": "Dangling fetch: POST /api/v1/contacts/bulk (src/app/(dashboard)/contacts/list/page.tsx:210)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/contacts/bulk (src/app/(dashboard)/contacts/list/page.tsx:210)"}, "fullDescription": {"text": "`src/app/(dashboard)/contacts/list/page.tsx:210` calls `POST /api/v1/contacts/bulk` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contacts/bulk`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dd3f0fd4f35eed89", "name": "Dangling fetch: GET /api/v1/contacts/${contactId}/engagement (src/app/(dashboard)/contacts/[id]/page.tsx:78)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contacts/${contactId}/engagement (src/app/(dashboard)/contacts/[id]/page.tsx:78)"}, "fullDescription": {"text": "`src/app/(dashboard)/contacts/[id]/page.tsx:78` calls `GET /api/v1/contacts/${contactId}/engagement` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contacts/<p>/engagement`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cfa33fc6136c8e06", "name": "Dangling fetch: GET /api/v1/health-scores?entityType=contact&entityId=${id} (src/app/(dashboard)/contacts/[id]/page.tsx:", "shortDescription": {"text": "Dangling fetch: GET /api/v1/health-scores?entityType=contact&entityId=${id} (src/app/(dashboard)/contacts/[id]/page.tsx:156)"}, "fullDescription": {"text": "`src/app/(dashboard)/contacts/[id]/page.tsx:156` calls `GET /api/v1/health-scores?entityType=contact&entityId=${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/health-scores`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-36facc40f250c127", "name": "Dangling fetch: POST /api/v1/activities (src/app/(dashboard)/contacts/[id]/page.tsx:192)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/activities (src/app/(dashboard)/contacts/[id]/page.tsx:192)"}, "fullDescription": {"text": "`src/app/(dashboard)/contacts/[id]/page.tsx:192` calls `POST /api/v1/activities` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/activities`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0b5fd685db9ad618", "name": "Dangling fetch: GET /api/v1/calls?contactId=${id}&limit=20 (src/app/(dashboard)/contacts/[id]/page.tsx:223)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/calls?contactId=${id}&limit=20 (src/app/(dashboard)/contacts/[id]/page.tsx:223)"}, "fullDescription": {"text": "`src/app/(dashboard)/contacts/[id]/page.tsx:223` calls `GET /api/v1/calls?contactId=${id}&limit=20` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/calls`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-19ab171407b2a8d6", "name": "Dangling fetch: GET /api/v1/contacts/${id} (src/app/(dashboard)/contacts/[id]/page.tsx:242)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contacts/${id} (src/app/(dashboard)/contacts/[id]/page.tsx:242)"}, "fullDescription": {"text": "`src/app/(dashboard)/contacts/[id]/page.tsx:242` calls `GET /api/v1/contacts/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contacts/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6d0e947af4271b07", "name": "Dangling fetch: GET /api/v1/companies?limit=500 (src/app/(dashboard)/contacts/[id]/page.tsx:275)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/companies?limit=500 (src/app/(dashboard)/contacts/[id]/page.tsx:275)"}, "fullDescription": {"text": "`src/app/(dashboard)/contacts/[id]/page.tsx:275` calls `GET /api/v1/companies?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/companies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3fd2ad0ea1ed8869", "name": "Dangling fetch: PUT /api/v1/contacts/${id} (src/app/(dashboard)/contacts/[id]/page.tsx:289)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/contacts/${id} (src/app/(dashboard)/contacts/[id]/page.tsx:289)"}, "fullDescription": {"text": "`src/app/(dashboard)/contacts/[id]/page.tsx:289` calls `PUT /api/v1/contacts/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contacts/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-130d4dd75a3a73ea", "name": "Dangling fetch: POST /api/v1/ai/recommend (src/app/(dashboard)/contacts/[id]/page.tsx:466)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/ai/recommend (src/app/(dashboard)/contacts/[id]/page.tsx:466)"}, "fullDescription": {"text": "`src/app/(dashboard)/contacts/[id]/page.tsx:466` calls `POST /api/v1/ai/recommend` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ai/recommend`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-de7ed3d95340a194", "name": "Dangling fetch: GET /api/v1/ai-configs (src/app/(dashboard)/ai-command-center/page.tsx:195)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/ai-configs (src/app/(dashboard)/ai-command-center/page.tsx:195)"}, "fullDescription": {"text": "`src/app/(dashboard)/ai-command-center/page.tsx:195` calls `GET /api/v1/ai-configs` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ai-configs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b5ce605c5428fae8", "name": "Dangling fetch: GET /api/v1/ai-sessions (src/app/(dashboard)/ai-command-center/page.tsx:196)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/ai-sessions (src/app/(dashboard)/ai-command-center/page.tsx:196)"}, "fullDescription": {"text": "`src/app/(dashboard)/ai-command-center/page.tsx:196` calls `GET /api/v1/ai-sessions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ai-sessions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-03f2328767137c73", "name": "Dangling fetch: GET /api/v1/ai-sessions/stats (src/app/(dashboard)/ai-command-center/page.tsx:197)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/ai-sessions/stats (src/app/(dashboard)/ai-command-center/page.tsx:197)"}, "fullDescription": {"text": "`src/app/(dashboard)/ai-command-center/page.tsx:197` calls `GET /api/v1/ai-sessions/stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ai-sessions/stats`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e18e3c8f9e0f3874", "name": "Dangling fetch: GET /api/v1/ai-alerts (src/app/(dashboard)/ai-command-center/page.tsx:198)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/ai-alerts (src/app/(dashboard)/ai-command-center/page.tsx:198)"}, "fullDescription": {"text": "`src/app/(dashboard)/ai-command-center/page.tsx:198` calls `GET /api/v1/ai-alerts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ai-alerts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0677c8873f2ee973", "name": "Dangling fetch: GET /api/v1/ai-interaction-logs?limit=50 (src/app/(dashboard)/ai-command-center/page.tsx:199)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/ai-interaction-logs?limit=50 (src/app/(dashboard)/ai-command-center/page.tsx:199)"}, "fullDescription": {"text": "`src/app/(dashboard)/ai-command-center/page.tsx:199` calls `GET /api/v1/ai-interaction-logs?limit=50` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ai-interaction-logs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ccd30620e27fa3f0", "name": "Dangling fetch: GET /api/v1/ai-guardrails (src/app/(dashboard)/ai-command-center/page.tsx:200)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/ai-guardrails (src/app/(dashboard)/ai-command-center/page.tsx:200)"}, "fullDescription": {"text": "`src/app/(dashboard)/ai-command-center/page.tsx:200` calls `GET /api/v1/ai-guardrails` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ai-guardrails`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0a89945d128b6199", "name": "Dangling fetch: GET /api/v1/ai-configs/stats (src/app/(dashboard)/ai-command-center/page.tsx:216)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/ai-configs/stats (src/app/(dashboard)/ai-command-center/page.tsx:216)"}, "fullDescription": {"text": "`src/app/(dashboard)/ai-command-center/page.tsx:216` calls `GET /api/v1/ai-configs/stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ai-configs/stats`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f63a73f9feba3047", "name": "Dangling fetch: DELETE /api/v1/ai-configs/${deleteId} (src/app/(dashboard)/ai-command-center/page.tsx:237)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/ai-configs/${deleteId} (src/app/(dashboard)/ai-command-center/page.tsx:237)"}, "fullDescription": {"text": "`src/app/(dashboard)/ai-command-center/page.tsx:237` calls `DELETE /api/v1/ai-configs/${deleteId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ai-configs/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6409a52e6a9dbd1f", "name": "Dangling fetch: PUT /api/v1/ai-configs/${id} (src/app/(dashboard)/ai-command-center/page.tsx:242)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/ai-configs/${id} (src/app/(dashboard)/ai-command-center/page.tsx:242)"}, "fullDescription": {"text": "`src/app/(dashboard)/ai-command-center/page.tsx:242` calls `PUT /api/v1/ai-configs/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ai-configs/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-61608f3bf1646532", "name": "Dangling fetch: POST /api/v1/ai-alerts (src/app/(dashboard)/ai-command-center/page.tsx:251)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/ai-alerts (src/app/(dashboard)/ai-command-center/page.tsx:251)"}, "fullDescription": {"text": "`src/app/(dashboard)/ai-command-center/page.tsx:251` calls `POST /api/v1/ai-alerts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ai-alerts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fa8e1c5acc0fc101", "name": "Dangling fetch: GET /api/v1/ai-sessions/${id} (src/app/(dashboard)/ai-command-center/page.tsx:264)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/ai-sessions/${id} (src/app/(dashboard)/ai-command-center/page.tsx:264)"}, "fullDescription": {"text": "`src/app/(dashboard)/ai-command-center/page.tsx:264` calls `GET /api/v1/ai-sessions/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ai-sessions/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6347adc236be40f4", "name": "Dangling fetch: POST /api/v1/ai-guardrails (src/app/(dashboard)/ai-command-center/page.tsx:272)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/ai-guardrails (src/app/(dashboard)/ai-command-center/page.tsx:272)"}, "fullDescription": {"text": "`src/app/(dashboard)/ai-command-center/page.tsx:272` calls `POST /api/v1/ai-guardrails` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ai-guardrails`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d4e6fff7dad9b3b5", "name": "Dangling fetch: DELETE /api/v1/ai-guardrails?id=${id} (src/app/(dashboard)/ai-command-center/page.tsx:291)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/ai-guardrails?id=${id} (src/app/(dashboard)/ai-command-center/page.tsx:291)"}, "fullDescription": {"text": "`src/app/(dashboard)/ai-command-center/page.tsx:291` calls `DELETE /api/v1/ai-guardrails?id=${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ai-guardrails`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-10c655b2e09e79d5", "name": "Dangling fetch: DELETE /api/v1/offers/${deleteId} (src/app/(dashboard)/offers/page.tsx:92)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/offers/${deleteId} (src/app/(dashboard)/offers/page.tsx:92)"}, "fullDescription": {"text": "`src/app/(dashboard)/offers/page.tsx:92` calls `DELETE /api/v1/offers/${deleteId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/offers/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d4bfa428589369b4", "name": "Dangling fetch: GET /api/v1/offers/${params.id} (src/app/(dashboard)/offers/[id]/page.tsx:68)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/offers/${params.id} (src/app/(dashboard)/offers/[id]/page.tsx:68)"}, "fullDescription": {"text": "`src/app/(dashboard)/offers/[id]/page.tsx:68` calls `GET /api/v1/offers/${params.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/offers/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cbd030c3eaad3f3f", "name": "Dangling fetch: GET /api/v1/companies/${json.data.companyId} (src/app/(dashboard)/offers/[id]/page.tsx:76)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/companies/${json.data.companyId} (src/app/(dashboard)/offers/[id]/page.tsx:76)"}, "fullDescription": {"text": "`src/app/(dashboard)/offers/[id]/page.tsx:76` calls `GET /api/v1/companies/${json.data.companyId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/companies/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c2fa57b50098993c", "name": "Dangling fetch: DELETE /api/v1/offers/${params.id} (src/app/(dashboard)/offers/[id]/page.tsx:96)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/offers/${params.id} (src/app/(dashboard)/offers/[id]/page.tsx:96)"}, "fullDescription": {"text": "`src/app/(dashboard)/offers/[id]/page.tsx:96` calls `DELETE /api/v1/offers/${params.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/offers/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-13c5aa5ca58dd407", "name": "Dangling fetch: POST /api/v1/offers/${params.id}/send (src/app/(dashboard)/offers/[id]/page.tsx:112)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/offers/${params.id}/send (src/app/(dashboard)/offers/[id]/page.tsx:112)"}, "fullDescription": {"text": "`src/app/(dashboard)/offers/[id]/page.tsx:112` calls `POST /api/v1/offers/${params.id}/send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/offers/<p>/send`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6f2d0308f5ef5fa1", "name": "Dangling fetch: POST /api/v1/invoices/from-offer (src/app/(dashboard)/offers/[id]/page.tsx:140)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/invoices/from-offer (src/app/(dashboard)/offers/[id]/page.tsx:140)"}, "fullDescription": {"text": "`src/app/(dashboard)/offers/[id]/page.tsx:140` calls `POST /api/v1/invoices/from-offer` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/invoices/from-offer`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-896f22c8321326c5", "name": "Dangling fetch: GET /api/v1/users/me (src/app/(dashboard)/profile/page.tsx:76)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users/me (src/app/(dashboard)/profile/page.tsx:76)"}, "fullDescription": {"text": "`src/app/(dashboard)/profile/page.tsx:76` calls `GET /api/v1/users/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-116bdfa344c56274", "name": "Dangling fetch: PATCH /api/v1/users/me (src/app/(dashboard)/profile/page.tsx:174)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/users/me (src/app/(dashboard)/profile/page.tsx:174)"}, "fullDescription": {"text": "`src/app/(dashboard)/profile/page.tsx:174` calls `PATCH /api/v1/users/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8a2f3f34fd68c202", "name": "Dangling fetch: POST /api/v1/users/me/avatar (src/app/(dashboard)/profile/page.tsx:207)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/users/me/avatar (src/app/(dashboard)/profile/page.tsx:207)"}, "fullDescription": {"text": "`src/app/(dashboard)/profile/page.tsx:207` calls `POST /api/v1/users/me/avatar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/me/avatar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-000d2bfa804a48e5", "name": "Dangling fetch: POST /api/v1/users/me/change-password (src/app/(dashboard)/profile/page.tsx:341)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/users/me/change-password (src/app/(dashboard)/profile/page.tsx:341)"}, "fullDescription": {"text": "`src/app/(dashboard)/profile/page.tsx:341` calls `POST /api/v1/users/me/change-password` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/me/change-password`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6a6a523d77997e58", "name": "Dangling fetch: POST /api/v1/users/me/revoke-sessions (src/app/(dashboard)/profile/page.tsx:434)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/users/me/revoke-sessions (src/app/(dashboard)/profile/page.tsx:434)"}, "fullDescription": {"text": "`src/app/(dashboard)/profile/page.tsx:434` calls `POST /api/v1/users/me/revoke-sessions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/me/revoke-sessions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cb80470eb78fc525", "name": "Dangling fetch: PATCH /api/v1/users/me (src/app/(dashboard)/profile/page.tsx:525)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/users/me (src/app/(dashboard)/profile/page.tsx:525)"}, "fullDescription": {"text": "`src/app/(dashboard)/profile/page.tsx:525` calls `PATCH /api/v1/users/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-19154ef64ea8d26d", "name": "Dangling fetch: POST /api/v1/contracts/search/semantic (src/app/(dashboard)/contracts/page.tsx:186)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/contracts/search/semantic (src/app/(dashboard)/contracts/page.tsx:186)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/page.tsx:186` calls `POST /api/v1/contracts/search/semantic` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/search/semantic`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4924db6c88edd444", "name": "Dangling fetch: GET /api/v1/contract-templates?limit=200&active=true (src/app/(dashboard)/contracts/page.tsx:298)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contract-templates?limit=200&active=true (src/app/(dashboard)/contracts/page.tsx:298)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/page.tsx:298` calls `GET /api/v1/contract-templates?limit=200&active=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contract-templates`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8496fd1aa0916231", "name": "Dangling fetch: POST /api/v1/contract-templates/${selectedTemplate.id}/generate (src/app/(dashboard)/contracts/page.tsx:", "shortDescription": {"text": "Dangling fetch: POST /api/v1/contract-templates/${selectedTemplate.id}/generate (src/app/(dashboard)/contracts/page.tsx:341)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/page.tsx:341` calls `POST /api/v1/contract-templates/${selectedTemplate.id}/generate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contract-templates/<p>/generate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7cc48201cbac865f", "name": "Dangling fetch: POST /api/v1/contracts/${detailContract.id}/submit-for-approval (src/app/(dashboard)/contracts/page.tsx:", "shortDescription": {"text": "Dangling fetch: POST /api/v1/contracts/${detailContract.id}/submit-for-approval (src/app/(dashboard)/contracts/page.tsx:395)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/page.tsx:395` calls `POST /api/v1/contracts/${detailContract.id}/submit-for-approval` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/submit-for-approval`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-46af496ed5946f1a", "name": "Dangling fetch: GET /api/v1/contracts?${params.toString()} (src/app/(dashboard)/contracts/page.tsx:471)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contracts?${params.toString()} (src/app/(dashboard)/contracts/page.tsx:471)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/page.tsx:471` calls `GET /api/v1/contracts?${params.toString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cb5e63db179f4972", "name": "Dangling fetch: GET /api/v1/contract-tags (src/app/(dashboard)/contracts/page.tsx:485)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contract-tags (src/app/(dashboard)/contracts/page.tsx:485)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/page.tsx:485` calls `GET /api/v1/contract-tags` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contract-tags`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d12025c897c87a23", "name": "Dangling fetch: GET /api/v1/contracts/${contract.id} (src/app/(dashboard)/contracts/page.tsx:501)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contracts/${contract.id} (src/app/(dashboard)/contracts/page.tsx:501)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/page.tsx:501` calls `GET /api/v1/contracts/${contract.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dcf1144f3a52d998", "name": "Dangling fetch: GET /api/v1/contracts/${contract.id}/files (src/app/(dashboard)/contracts/page.tsx:502)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contracts/${contract.id}/files (src/app/(dashboard)/contracts/page.tsx:502)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/page.tsx:502` calls `GET /api/v1/contracts/${contract.id}/files` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/files`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cb0296ed88612639", "name": "Dangling fetch: GET /api/v1/invoices?contractId=${contract.id}&limit=50 (src/app/(dashboard)/contracts/page.tsx:503)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/invoices?contractId=${contract.id}&limit=50 (src/app/(dashboard)/contracts/page.tsx:503)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/page.tsx:503` calls `GET /api/v1/invoices?contractId=${contract.id}&limit=50` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/invoices`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-07fa078b54f2af6d", "name": "Dangling fetch: POST /api/v1/contract-tags (src/app/(dashboard)/contracts/page.tsx:525)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/contract-tags (src/app/(dashboard)/contracts/page.tsx:525)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/page.tsx:525` calls `POST /api/v1/contract-tags` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contract-tags`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2155fb40bb00adad", "name": "Dangling fetch: DELETE /api/v1/contract-tags/${tagId} (src/app/(dashboard)/contracts/page.tsx:547)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/contract-tags/${tagId} (src/app/(dashboard)/contracts/page.tsx:547)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/page.tsx:547` calls `DELETE /api/v1/contract-tags/${tagId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contract-tags/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a1e5800dee040469", "name": "Dangling fetch: POST /api/v1/contracts/${detailContract.id}/files (src/app/(dashboard)/contracts/page.tsx:562)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/contracts/${detailContract.id}/files (src/app/(dashboard)/contracts/page.tsx:562)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/page.tsx:562` calls `POST /api/v1/contracts/${detailContract.id}/files` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/files`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-24efde6f89eb965b", "name": "Dangling fetch: DELETE /api/v1/contracts/${detailContract.id}/files/${fileId} (src/app/(dashboard)/contracts/page.tsx:58", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/contracts/${detailContract.id}/files/${fileId} (src/app/(dashboard)/contracts/page.tsx:581)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/page.tsx:581` calls `DELETE /api/v1/contracts/${detailContract.id}/files/${fileId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/files/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3b2444e11fa9a44d", "name": "Dangling fetch: DELETE /api/v1/contracts/${deleteId} (src/app/(dashboard)/contracts/page.tsx:597)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/contracts/${deleteId} (src/app/(dashboard)/contracts/page.tsx:597)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/page.tsx:597` calls `DELETE /api/v1/contracts/${deleteId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c5ea2f73add745e4", "name": "Dangling fetch: POST /api/v1/contracts/${params.id}/reindex (src/app/(dashboard)/contracts/[id]/page.tsx:375)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/contracts/${params.id}/reindex (src/app/(dashboard)/contracts/[id]/page.tsx:375)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/page.tsx:375` calls `POST /api/v1/contracts/${params.id}/reindex` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/reindex`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ed94e584864511b9", "name": "Dangling fetch: GET /api/v1/contracts/${params.id}/score-risk (src/app/(dashboard)/contracts/[id]/page.tsx:399)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contracts/${params.id}/score-risk (src/app/(dashboard)/contracts/[id]/page.tsx:399)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/page.tsx:399` calls `GET /api/v1/contracts/${params.id}/score-risk` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/score-risk`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fd95f1be76198e81", "name": "Dangling fetch: POST /api/v1/contracts/${params.id}/score-risk (src/app/(dashboard)/contracts/[id]/page.tsx:419)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/contracts/${params.id}/score-risk (src/app/(dashboard)/contracts/[id]/page.tsx:419)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/page.tsx:419` calls `POST /api/v1/contracts/${params.id}/score-risk` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/score-risk`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7bf899a0b5082904", "name": "Dangling fetch: GET /api/v1/contracts/${params.id}/redline${qs} (src/app/(dashboard)/contracts/[id]/page.tsx:451)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contracts/${params.id}/redline${qs} (src/app/(dashboard)/contracts/[id]/page.tsx:451)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/page.tsx:451` calls `GET /api/v1/contracts/${params.id}/redline${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/redline/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8e9798ef00bd91a0", "name": "Dangling fetch: POST /api/v1/contracts/${params.id}/redline (src/app/(dashboard)/contracts/[id]/page.tsx:480)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/contracts/${params.id}/redline (src/app/(dashboard)/contracts/[id]/page.tsx:480)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/page.tsx:480` calls `POST /api/v1/contracts/${params.id}/redline` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/redline`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bae61492ac65bfef", "name": "Dangling fetch: GET /api/v1/contracts/${params.id}/extract (src/app/(dashboard)/contracts/[id]/page.tsx:505)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contracts/${params.id}/extract (src/app/(dashboard)/contracts/[id]/page.tsx:505)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/page.tsx:505` calls `GET /api/v1/contracts/${params.id}/extract` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/extract`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d96de2f02c95439e", "name": "Dangling fetch: POST /api/v1/contracts/${params.id}/extract (src/app/(dashboard)/contracts/[id]/page.tsx:525)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/contracts/${params.id}/extract (src/app/(dashboard)/contracts/[id]/page.tsx:525)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/page.tsx:525` calls `POST /api/v1/contracts/${params.id}/extract` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/extract`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ca0f2abdd03f7648", "name": "Dangling fetch: GET /api/v1/contracts/${params.id} (src/app/(dashboard)/contracts/[id]/page.tsx:548)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contracts/${params.id} (src/app/(dashboard)/contracts/[id]/page.tsx:548)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/page.tsx:548` calls `GET /api/v1/contracts/${params.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-73352bd64c752802", "name": "Dangling fetch: GET /api/v1/contracts/${params.id}/versions (src/app/(dashboard)/contracts/[id]/page.tsx:562)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contracts/${params.id}/versions (src/app/(dashboard)/contracts/[id]/page.tsx:562)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/page.tsx:562` calls `GET /api/v1/contracts/${params.id}/versions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/versions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4682e5c338438498", "name": "Dangling fetch: GET /api/v1/contracts/${params.id}/esign (src/app/(dashboard)/contracts/[id]/page.tsx:588)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contracts/${params.id}/esign (src/app/(dashboard)/contracts/[id]/page.tsx:588)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/page.tsx:588` calls `GET /api/v1/contracts/${params.id}/esign` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/esign`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f0170e9c5f6e57b5", "name": "Dangling fetch: GET /api/v1/contracts/${params.id}/deviations (src/app/(dashboard)/contracts/[id]/page.tsx:616)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contracts/${params.id}/deviations (src/app/(dashboard)/contracts/[id]/page.tsx:616)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/page.tsx:616` calls `GET /api/v1/contracts/${params.id}/deviations` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/deviations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3789831bec770ec2", "name": "Dangling fetch: GET /api/v1/contracts/${params.id}/performance-obligations (src/app/(dashboard)/contracts/[id]/page.tsx:", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contracts/${params.id}/performance-obligations (src/app/(dashboard)/contracts/[id]/page.tsx:641)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/page.tsx:641` calls `GET /api/v1/contracts/${params.id}/performance-obligations` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/performance-obligations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d4207ad7e76da1bf", "name": "Dangling fetch: GET /api/v1/contracts/${params.id}/performance-obligations/${poId}/schedules (src/app/(dashboard)/contra", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contracts/${params.id}/performance-obligations/${poId}/schedules (src/app/(dashboard)/contracts/[id]/page.tsx:661)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/page.tsx:661` calls `GET /api/v1/contracts/${params.id}/performance-obligations/${poId}/schedules` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/performance-obligations/<p>/schedules`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8d583eed71f16a3c", "name": "Dangling fetch: POST /api/v1/contracts/${params.id}/performance-obligations/recalculate (src/app/(dashboard)/contracts/[", "shortDescription": {"text": "Dangling fetch: POST /api/v1/contracts/${params.id}/performance-obligations/recalculate (src/app/(dashboard)/contracts/[id]/page.tsx:691)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/page.tsx:691` calls `POST /api/v1/contracts/${params.id}/performance-obligations/recalculate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/performance-obligations/recalculate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-908ac4888e0b05f1", "name": "Dangling fetch: POST /api/v1/contracts/${params.id}/performance-obligations (src/app/(dashboard)/contracts/[id]/page.tsx", "shortDescription": {"text": "Dangling fetch: POST /api/v1/contracts/${params.id}/performance-obligations (src/app/(dashboard)/contracts/[id]/page.tsx:755)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/page.tsx:755` calls `POST /api/v1/contracts/${params.id}/performance-obligations` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/performance-obligations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e5bb9fef40c15ae1", "name": "Dangling fetch: GET /api/v1/contracts/${params.id}/milestones (src/app/(dashboard)/contracts/[id]/page.tsx:781)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contracts/${params.id}/milestones (src/app/(dashboard)/contracts/[id]/page.tsx:781)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/page.tsx:781` calls `GET /api/v1/contracts/${params.id}/milestones` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/milestones`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3eb780c0e1635641", "name": "Dangling fetch: PATCH /api/v1/contracts/${params.id}/milestones/${milestoneId} (src/app/(dashboard)/contracts/[id]/page.", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/contracts/${params.id}/milestones/${milestoneId} (src/app/(dashboard)/contracts/[id]/page.tsx:857)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/page.tsx:857` calls `PATCH /api/v1/contracts/${params.id}/milestones/${milestoneId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/milestones/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e68c369bda20f73b", "name": "Dangling fetch: DELETE /api/v1/contracts/${params.id}/milestones/${milestoneId} (src/app/(dashboard)/contracts/[id]/page", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/contracts/${params.id}/milestones/${milestoneId} (src/app/(dashboard)/contracts/[id]/page.tsx:877)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/page.tsx:877` calls `DELETE /api/v1/contracts/${params.id}/milestones/${milestoneId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/milestones/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-81c58c88abda6316", "name": "Dangling fetch: PATCH /api/v1/contracts/${params.id}/deviations/${flagId} (src/app/(dashboard)/contracts/[id]/page.tsx:8", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/contracts/${params.id}/deviations/${flagId} (src/app/(dashboard)/contracts/[id]/page.tsx:894)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/page.tsx:894` calls `PATCH /api/v1/contracts/${params.id}/deviations/${flagId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/deviations/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1ce6ca74cb20d636", "name": "Dangling fetch: POST /api/v1/contracts/${params.id}/deviations/rescan (src/app/(dashboard)/contracts/[id]/page.tsx:914)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/contracts/${params.id}/deviations/rescan (src/app/(dashboard)/contracts/[id]/page.tsx:914)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/page.tsx:914` calls `POST /api/v1/contracts/${params.id}/deviations/rescan` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/deviations/rescan`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-49b37d76ec2b3f22", "name": "Dangling fetch: DELETE /api/v1/contracts/${params.id} (src/app/(dashboard)/contracts/[id]/page.tsx:946)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/contracts/${params.id} (src/app/(dashboard)/contracts/[id]/page.tsx:946)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/page.tsx:946` calls `DELETE /api/v1/contracts/${params.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-46a06f06a78c899a", "name": "Dangling fetch: POST /api/v1/contracts/${params.id}/submit-for-approval (src/app/(dashboard)/contracts/[id]/page.tsx:101", "shortDescription": {"text": "Dangling fetch: POST /api/v1/contracts/${params.id}/submit-for-approval (src/app/(dashboard)/contracts/[id]/page.tsx:1019)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/page.tsx:1019` calls `POST /api/v1/contracts/${params.id}/submit-for-approval` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/submit-for-approval`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f14d1a212d55fd0b", "name": "Dangling fetch: POST /api/v1/contracts/${params.id}/approvals/${stageOrder} (src/app/(dashboard)/contracts/[id]/page.tsx", "shortDescription": {"text": "Dangling fetch: POST /api/v1/contracts/${params.id}/approvals/${stageOrder} (src/app/(dashboard)/contracts/[id]/page.tsx:1057)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/page.tsx:1057` calls `POST /api/v1/contracts/${params.id}/approvals/${stageOrder}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/approvals/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3795acd0f920ed9e", "name": "Dangling fetch: POST /api/v1/contracts/${params.id}/esign (src/app/(dashboard)/contracts/[id]/page.tsx:1151)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/contracts/${params.id}/esign (src/app/(dashboard)/contracts/[id]/page.tsx:1151)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/page.tsx:1151` calls `POST /api/v1/contracts/${params.id}/esign` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/esign`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f5a9dec46b421d48", "name": "Dangling fetch: POST /api/v1/contracts/${params.id}/esign/${envelopeId}/send (src/app/(dashboard)/contracts/[id]/page.ts", "shortDescription": {"text": "Dangling fetch: POST /api/v1/contracts/${params.id}/esign/${envelopeId}/send (src/app/(dashboard)/contracts/[id]/page.tsx:1173)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/page.tsx:1173` calls `POST /api/v1/contracts/${params.id}/esign/${envelopeId}/send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/esign/<p>/send`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a84a9d8b7c850259", "name": "Dangling fetch: POST /api/v1/contracts/${params.id}/amend (src/app/(dashboard)/contracts/[id]/page.tsx:1220)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/contracts/${params.id}/amend (src/app/(dashboard)/contracts/[id]/page.tsx:1220)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/page.tsx:1220` calls `POST /api/v1/contracts/${params.id}/amend` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/amend`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a1bd8b00b7861846", "name": "Dangling fetch: POST /api/v1/contracts/${params.id}/create-invoice (src/app/(dashboard)/contracts/[id]/page.tsx:1339)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/contracts/${params.id}/create-invoice (src/app/(dashboard)/contracts/[id]/page.tsx:1339)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/page.tsx:1339` calls `POST /api/v1/contracts/${params.id}/create-invoice` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/create-invoice`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e48422b07f5d20d1", "name": "Dangling fetch: PUT /api/v1/contracts/${id}/body (src/app/(dashboard)/contracts/[id]/editor/page.tsx:156)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/contracts/${id}/body (src/app/(dashboard)/contracts/[id]/editor/page.tsx:156)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/editor/page.tsx:156` calls `PUT /api/v1/contracts/${id}/body` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/body`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e03d84467600f50f", "name": "Dangling fetch: GET /api/v1/contracts/${id}/editor (src/app/(dashboard)/contracts/[id]/editor/page.tsx:258)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contracts/${id}/editor (src/app/(dashboard)/contracts/[id]/editor/page.tsx:258)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/editor/page.tsx:258` calls `GET /api/v1/contracts/${id}/editor` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/editor`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ee9f0c38d26f5492", "name": "Dangling fetch: POST /api/v1/contracts/${id}/import-docx (src/app/(dashboard)/contracts/[id]/editor/page.tsx:386)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/contracts/${id}/import-docx (src/app/(dashboard)/contracts/[id]/editor/page.tsx:386)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/editor/page.tsx:386` calls `POST /api/v1/contracts/${id}/import-docx` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/import-docx`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ae162373c64167c7", "name": "Dangling fetch: GET /api/v1/contracts/${id}/editor (src/app/(dashboard)/contracts/[id]/editor/page.tsx:393)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contracts/${id}/editor (src/app/(dashboard)/contracts/[id]/editor/page.tsx:393)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/editor/page.tsx:393` calls `GET /api/v1/contracts/${id}/editor` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/editor`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-68c36057eae11b2b", "name": "Dangling fetch: POST /api/v1/contracts/upload-image (src/app/(dashboard)/contracts/[id]/editor/page.tsx:460)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/contracts/upload-image (src/app/(dashboard)/contracts/[id]/editor/page.tsx:460)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/[id]/editor/page.tsx:460` calls `POST /api/v1/contracts/upload-image` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/upload-image`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2351e26092fd2ee3", "name": "Dangling fetch: GET /api/v1/contract-milestones?${sp} (src/app/(dashboard)/contracts/milestones/page.tsx:119)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contract-milestones?${sp} (src/app/(dashboard)/contracts/milestones/page.tsx:119)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/milestones/page.tsx:119` calls `GET /api/v1/contract-milestones?${sp}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contract-milestones`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-703759c58448ea92", "name": "Dangling fetch: GET /api/v1/users/assignable (src/app/(dashboard)/contracts/templates/page.tsx:460)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users/assignable (src/app/(dashboard)/contracts/templates/page.tsx:460)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/templates/page.tsx:460` calls `GET /api/v1/users/assignable` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/assignable`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d1afab5cf9098ba7", "name": "Dangling fetch: GET /api/v1/contract-clauses?limit=100 (src/app/(dashboard)/contracts/templates/page.tsx:468)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contract-clauses?limit=100 (src/app/(dashboard)/contracts/templates/page.tsx:468)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/templates/page.tsx:468` calls `GET /api/v1/contract-clauses?limit=100` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contract-clauses`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-876d4fe674030793", "name": "Dangling fetch: POST /api/v1/contract-clauses/draft (src/app/(dashboard)/contracts/templates/page.tsx:673)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/contract-clauses/draft (src/app/(dashboard)/contracts/templates/page.tsx:673)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/templates/page.tsx:673` calls `POST /api/v1/contract-clauses/draft` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contract-clauses/draft`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-be30db08dafbf121", "name": "Dangling fetch: POST /api/v1/contract-clauses (src/app/(dashboard)/contracts/templates/page.tsx:702)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/contract-clauses (src/app/(dashboard)/contracts/templates/page.tsx:702)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/templates/page.tsx:702` calls `POST /api/v1/contract-clauses` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contract-clauses`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a81f067bd7c83114", "name": "Dangling fetch: GET /api/v1/contract-templates?${params} (src/app/(dashboard)/contracts/templates/page.tsx:903)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contract-templates?${params} (src/app/(dashboard)/contracts/templates/page.tsx:903)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/templates/page.tsx:903` calls `GET /api/v1/contract-templates?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contract-templates`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d3b04d6733eec3d2", "name": "Dangling fetch: GET /api/v1/contract-clauses?${params} (src/app/(dashboard)/contracts/templates/page.tsx:925)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contract-clauses?${params} (src/app/(dashboard)/contracts/templates/page.tsx:925)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/templates/page.tsx:925` calls `GET /api/v1/contract-clauses?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contract-clauses`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4baeaead913ac55a", "name": "Dangling fetch: DELETE /api/v1/contract-templates/${deleteTemplateId} (src/app/(dashboard)/contracts/templates/page.tsx:", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/contract-templates/${deleteTemplateId} (src/app/(dashboard)/contracts/templates/page.tsx:947)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/templates/page.tsx:947` calls `DELETE /api/v1/contract-templates/${deleteTemplateId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contract-templates/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-de050e928331210b", "name": "Dangling fetch: DELETE /api/v1/contract-clauses/${deleteClauseId} (src/app/(dashboard)/contracts/templates/page.tsx:961)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/contract-clauses/${deleteClauseId} (src/app/(dashboard)/contracts/templates/page.tsx:961)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/templates/page.tsx:961` calls `DELETE /api/v1/contract-clauses/${deleteClauseId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contract-clauses/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-08ada5d005926253", "name": "Dangling fetch: PUT /api/v1/contract-clauses/${clauseId} (src/app/(dashboard)/contracts/templates/page.tsx:980)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/contract-clauses/${clauseId} (src/app/(dashboard)/contracts/templates/page.tsx:980)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/templates/page.tsx:980` calls `PUT /api/v1/contract-clauses/${clauseId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contract-clauses/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a1ff282737c7d3ca", "name": "Dangling fetch: GET /api/v1/contract-lifecycle (src/app/(dashboard)/contracts/lifecycle/page.tsx:170)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contract-lifecycle (src/app/(dashboard)/contracts/lifecycle/page.tsx:170)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/lifecycle/page.tsx:170` calls `GET /api/v1/contract-lifecycle` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contract-lifecycle`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2c87be2affbaad61", "name": "Dangling fetch: POST /api/v1/contracts/${contractId}/approvals/${stageOrder} (src/app/(dashboard)/contracts/lifecycle/pa", "shortDescription": {"text": "Dangling fetch: POST /api/v1/contracts/${contractId}/approvals/${stageOrder} (src/app/(dashboard)/contracts/lifecycle/page.tsx:198)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/lifecycle/page.tsx:198` calls `POST /api/v1/contracts/${contractId}/approvals/${stageOrder}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts/<p>/approvals/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3e204b515d6e09d8", "name": "Dangling fetch: GET /api/v1/contract-intake-submissions?limit=50 (src/app/(dashboard)/contracts/request/page.tsx:80)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contract-intake-submissions?limit=50 (src/app/(dashboard)/contracts/request/page.tsx:80)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/request/page.tsx:80` calls `GET /api/v1/contract-intake-submissions?limit=50` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contract-intake-submissions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fa4524322555f427", "name": "Dangling fetch: GET /api/v1/contract-intake-forms?isActive=true (src/app/(dashboard)/contracts/request/page.tsx:181)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contract-intake-forms?isActive=true (src/app/(dashboard)/contracts/request/page.tsx:181)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/request/page.tsx:181` calls `GET /api/v1/contract-intake-forms?isActive=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contract-intake-forms`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a15f3b52ec8ba831", "name": "Dangling fetch: POST /api/v1/contract-intake-forms/${selectedForm.id}/submit (src/app/(dashboard)/contracts/request/page", "shortDescription": {"text": "Dangling fetch: POST /api/v1/contract-intake-forms/${selectedForm.id}/submit (src/app/(dashboard)/contracts/request/page.tsx:210)"}, "fullDescription": {"text": "`src/app/(dashboard)/contracts/request/page.tsx:210` calls `POST /api/v1/contract-intake-forms/${selectedForm.id}/submit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contract-intake-forms/<p>/submit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-41c5b96f4b25cd24", "name": "Dangling fetch: GET /api/v1/reports/ai-narrative (src/app/(dashboard)/reports/page.tsx:87)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/reports/ai-narrative (src/app/(dashboard)/reports/page.tsx:87)"}, "fullDescription": {"text": "`src/app/(dashboard)/reports/page.tsx:87` calls `GET /api/v1/reports/ai-narrative` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/reports/ai-narrative`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c3cd90a197b02b7f", "name": "Dangling fetch: GET /api/v1/leads?status=${status}&limit=50 (src/app/(dashboard)/reports/page.tsx:235)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/leads?status=${status}&limit=50 (src/app/(dashboard)/reports/page.tsx:235)"}, "fullDescription": {"text": "`src/app/(dashboard)/reports/page.tsx:235` calls `GET /api/v1/leads?status=${status}&limit=50` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/leads`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a2094e61a61a2caf", "name": "Dangling fetch: GET /api/v1/reports (src/app/(dashboard)/reports/page.tsx:265)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/reports (src/app/(dashboard)/reports/page.tsx:265)"}, "fullDescription": {"text": "`src/app/(dashboard)/reports/page.tsx:265` calls `GET /api/v1/reports` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/reports`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-60ce9a8c5283873b", "name": "Dangling fetch: POST /api/v1/reports/builder/preview (src/app/(dashboard)/reports/builder/page.tsx:285)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/reports/builder/preview (src/app/(dashboard)/reports/builder/page.tsx:285)"}, "fullDescription": {"text": "`src/app/(dashboard)/reports/builder/page.tsx:285` calls `POST /api/v1/reports/builder/preview` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/reports/builder/preview`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fb459586a279a51b", "name": "Dangling fetch: GET /api/v1/reports/builder (src/app/(dashboard)/reports/builder/page.tsx:317)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/reports/builder (src/app/(dashboard)/reports/builder/page.tsx:317)"}, "fullDescription": {"text": "`src/app/(dashboard)/reports/builder/page.tsx:317` calls `GET /api/v1/reports/builder` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/reports/builder`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-da872518ba7e2e88", "name": "Dangling fetch: POST /api/v1/reports/builder (src/app/(dashboard)/reports/builder/page.tsx:361)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/reports/builder (src/app/(dashboard)/reports/builder/page.tsx:361)"}, "fullDescription": {"text": "`src/app/(dashboard)/reports/builder/page.tsx:361` calls `POST /api/v1/reports/builder` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/reports/builder`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a78b9c5a90eb81b2", "name": "Dangling fetch: POST /api/v1/reports/builder/export (src/app/(dashboard)/reports/builder/page.tsx:410)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/reports/builder/export (src/app/(dashboard)/reports/builder/page.tsx:410)"}, "fullDescription": {"text": "`src/app/(dashboard)/reports/builder/page.tsx:410` calls `POST /api/v1/reports/builder/export` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/reports/builder/export`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b3d001b7563183c0", "name": "Dangling fetch: GET /api/v1/entitlements (src/app/(dashboard)/support/entitlements/page.tsx:94)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/entitlements (src/app/(dashboard)/support/entitlements/page.tsx:94)"}, "fullDescription": {"text": "`src/app/(dashboard)/support/entitlements/page.tsx:94` calls `GET /api/v1/entitlements` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/entitlements`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1a0c6c8845477e91", "name": "Dangling fetch: GET /api/v1/users/${session.user.id} (src/app/(dashboard)/support/agent-desktop/page.tsx:77)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users/${session.user.id} (src/app/(dashboard)/support/agent-desktop/page.tsx:77)"}, "fullDescription": {"text": "`src/app/(dashboard)/support/agent-desktop/page.tsx:77` calls `GET /api/v1/users/${session.user.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6f1d15aa9cf0bb2b", "name": "Dangling fetch: PATCH /api/v1/users/me/availability (src/app/(dashboard)/support/agent-desktop/page.tsx:95)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/users/me/availability (src/app/(dashboard)/support/agent-desktop/page.tsx:95)"}, "fullDescription": {"text": "`src/app/(dashboard)/support/agent-desktop/page.tsx:95` calls `PATCH /api/v1/users/me/availability` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/me/availability`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-095d9bc3dafaae8d", "name": "Dangling fetch: GET /api/v1/tickets?limit=100 (src/app/(dashboard)/support/agent-desktop/page.tsx:113)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/tickets?limit=100 (src/app/(dashboard)/support/agent-desktop/page.tsx:113)"}, "fullDescription": {"text": "`src/app/(dashboard)/support/agent-desktop/page.tsx:113` calls `GET /api/v1/tickets?limit=100` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tickets`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e505c926e90f01af", "name": "Dangling fetch: GET /api/v1/users?limit=50 (src/app/(dashboard)/support/agent-desktop/page.tsx:114)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users?limit=50 (src/app/(dashboard)/support/agent-desktop/page.tsx:114)"}, "fullDescription": {"text": "`src/app/(dashboard)/support/agent-desktop/page.tsx:114` calls `GET /api/v1/users?limit=50` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-78b5738b8243d82d", "name": "Dangling fetch: GET /api/v1/calls?${params} (src/app/(dashboard)/support/voip/page.tsx:88)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/calls?${params} (src/app/(dashboard)/support/voip/page.tsx:88)"}, "fullDescription": {"text": "`src/app/(dashboard)/support/voip/page.tsx:88` calls `GET /api/v1/calls?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/calls`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-54130cd7d507c2bb", "name": "Dangling fetch: POST /api/v1/calls/test (src/app/(dashboard)/support/voip/page.tsx:105)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/calls/test (src/app/(dashboard)/support/voip/page.tsx:105)"}, "fullDescription": {"text": "`src/app/(dashboard)/support/voip/page.tsx:105` calls `POST /api/v1/calls/test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/calls/test`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5486f93cef48bf24", "name": "Dangling fetch: GET /api/v1/calendar/agent?from=${from}&to=${to} (src/app/(dashboard)/support/calendar/page.tsx:112)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/calendar/agent?from=${from}&to=${to} (src/app/(dashboard)/support/calendar/page.tsx:112)"}, "fullDescription": {"text": "`src/app/(dashboard)/support/calendar/page.tsx:112` calls `GET /api/v1/calendar/agent?from=${from}&to=${to}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/calendar/agent`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f1b8b7a26d259e0e", "name": "Dangling fetch: GET /api/v1/conversation-insights?days=${d} (src/app/(dashboard)/voip/insights/page.tsx:186)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/conversation-insights?days=${d} (src/app/(dashboard)/voip/insights/page.tsx:186)"}, "fullDescription": {"text": "`src/app/(dashboard)/voip/insights/page.tsx:186` calls `GET /api/v1/conversation-insights?days=${d}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/conversation-insights`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1ab31b738d2de7b9", "name": "Dangling fetch: GET /api/v1/products (src/app/(dashboard)/products/page.tsx:88)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/products (src/app/(dashboard)/products/page.tsx:88)"}, "fullDescription": {"text": "`src/app/(dashboard)/products/page.tsx:88` calls `GET /api/v1/products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-878ccbbcb86dd3dd", "name": "Dangling fetch: PUT /api/v1/products/${editItem.id} (src/app/(dashboard)/products/page.tsx:135)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/products/${editItem.id} (src/app/(dashboard)/products/page.tsx:135)"}, "fullDescription": {"text": "`src/app/(dashboard)/products/page.tsx:135` calls `PUT /api/v1/products/${editItem.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/products/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e3c0376b28a426e9", "name": "Dangling fetch: POST /api/v1/products (src/app/(dashboard)/products/page.tsx:137)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/products (src/app/(dashboard)/products/page.tsx:137)"}, "fullDescription": {"text": "`src/app/(dashboard)/products/page.tsx:137` calls `POST /api/v1/products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c4bcf8e8a28a37ba", "name": "Dangling fetch: DELETE /api/v1/products/${deleteItem.id} (src/app/(dashboard)/products/page.tsx:147)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/products/${deleteItem.id} (src/app/(dashboard)/products/page.tsx:147)"}, "fullDescription": {"text": "`src/app/(dashboard)/products/page.tsx:147` calls `DELETE /api/v1/products/${deleteItem.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/products/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-812ee40d6c4d82e1", "name": "Dangling fetch: GET /api/v1/products/${id} (src/app/(dashboard)/products/[id]/page.tsx:73)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/products/${id} (src/app/(dashboard)/products/[id]/page.tsx:73)"}, "fullDescription": {"text": "`src/app/(dashboard)/products/[id]/page.tsx:73` calls `GET /api/v1/products/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/products/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3265909e9604c90e", "name": "Dangling fetch: PUT /api/v1/products/${id} (src/app/(dashboard)/products/[id]/page.tsx:102)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/products/${id} (src/app/(dashboard)/products/[id]/page.tsx:102)"}, "fullDescription": {"text": "`src/app/(dashboard)/products/[id]/page.tsx:102` calls `PUT /api/v1/products/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/products/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d9f0a205101ffa59", "name": "Dangling fetch: DELETE /api/v1/products/${id} (src/app/(dashboard)/products/[id]/page.tsx:123)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/products/${id} (src/app/(dashboard)/products/[id]/page.tsx:123)"}, "fullDescription": {"text": "`src/app/(dashboard)/products/[id]/page.tsx:123` calls `DELETE /api/v1/products/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/products/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ee41a068b610a7ed", "name": "Dangling fetch: GET /api/v1/attribution-models/${m.id}/influences (src/app/(dashboard)/attribution/models/page.tsx:280)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/attribution-models/${m.id}/influences (src/app/(dashboard)/attribution/models/page.tsx:280)"}, "fullDescription": {"text": "`src/app/(dashboard)/attribution/models/page.tsx:280` calls `GET /api/v1/attribution-models/${m.id}/influences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/attribution-models/<p>/influences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c3aea3da34d7146f", "name": "Dangling fetch: GET /api/v1/attribution-models (src/app/(dashboard)/attribution/models/page.tsx:302)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/attribution-models (src/app/(dashboard)/attribution/models/page.tsx:302)"}, "fullDescription": {"text": "`src/app/(dashboard)/attribution/models/page.tsx:302` calls `GET /api/v1/attribution-models` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/attribution-models`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1eb3dfd42e5b3379", "name": "Dangling fetch: PATCH /api/v1/attribution-models/${editingId} (src/app/(dashboard)/attribution/models/page.tsx:410)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/attribution-models/${editingId} (src/app/(dashboard)/attribution/models/page.tsx:410)"}, "fullDescription": {"text": "`src/app/(dashboard)/attribution/models/page.tsx:410` calls `PATCH /api/v1/attribution-models/${editingId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/attribution-models/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7a267baab2bbcecb", "name": "Dangling fetch: POST /api/v1/attribution-models (src/app/(dashboard)/attribution/models/page.tsx:419)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/attribution-models (src/app/(dashboard)/attribution/models/page.tsx:419)"}, "fullDescription": {"text": "`src/app/(dashboard)/attribution/models/page.tsx:419` calls `POST /api/v1/attribution-models` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/attribution-models`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5229eadc70a91ba0", "name": "Dangling fetch: PATCH /api/v1/attribution-models/${m.id} (src/app/(dashboard)/attribution/models/page.tsx:446)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/attribution-models/${m.id} (src/app/(dashboard)/attribution/models/page.tsx:446)"}, "fullDescription": {"text": "`src/app/(dashboard)/attribution/models/page.tsx:446` calls `PATCH /api/v1/attribution-models/${m.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/attribution-models/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-924ad8a360b60df4", "name": "Dangling fetch: DELETE /api/v1/attribution-models/${m.id} (src/app/(dashboard)/attribution/models/page.tsx:478)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/attribution-models/${m.id} (src/app/(dashboard)/attribution/models/page.tsx:478)"}, "fullDescription": {"text": "`src/app/(dashboard)/attribution/models/page.tsx:478` calls `DELETE /api/v1/attribution-models/${m.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/attribution-models/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c2f3e27faaf01223", "name": "Dangling fetch: POST /api/v1/attribution-models/${m.id}/recompute (src/app/(dashboard)/attribution/models/page.tsx:496)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/attribution-models/${m.id}/recompute (src/app/(dashboard)/attribution/models/page.tsx:496)"}, "fullDescription": {"text": "`src/app/(dashboard)/attribution/models/page.tsx:496` calls `POST /api/v1/attribution-models/${m.id}/recompute` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/attribution-models/<p>/recompute`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2aa718eea0bffef9", "name": "Dangling fetch: GET /api/v1/segments?limit=500 (src/app/(dashboard)/segments/page.tsx:86)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/segments?limit=500 (src/app/(dashboard)/segments/page.tsx:86)"}, "fullDescription": {"text": "`src/app/(dashboard)/segments/page.tsx:86` calls `GET /api/v1/segments?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/segments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b3ef1833713a6409", "name": "Dangling fetch: GET /api/v1/contacts?limit=1 (src/app/(dashboard)/segments/page.tsx:89)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contacts?limit=1 (src/app/(dashboard)/segments/page.tsx:89)"}, "fullDescription": {"text": "`src/app/(dashboard)/segments/page.tsx:89` calls `GET /api/v1/contacts?limit=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contacts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dcd416e907814150", "name": "Dangling fetch: DELETE /api/v1/segments/${deleteId} (src/app/(dashboard)/segments/page.tsx:104)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/segments/${deleteId} (src/app/(dashboard)/segments/page.tsx:104)"}, "fullDescription": {"text": "`src/app/(dashboard)/segments/page.tsx:104` calls `DELETE /api/v1/segments/${deleteId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/segments/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d35c0b924338c1da", "name": "Dangling fetch: GET /api/v1/citizens?${params} (src/app/(dashboard)/public-sector/page.tsx:66)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/citizens?${params} (src/app/(dashboard)/public-sector/page.tsx:66)"}, "fullDescription": {"text": "`src/app/(dashboard)/public-sector/page.tsx:66` calls `GET /api/v1/citizens?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/citizens`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-18a7d51aab1818e7", "name": "Dangling fetch: GET /api/v1/public-sector-cases?limit=1 (src/app/(dashboard)/public-sector/page.tsx:92)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/public-sector-cases?limit=1 (src/app/(dashboard)/public-sector/page.tsx:92)"}, "fullDescription": {"text": "`src/app/(dashboard)/public-sector/page.tsx:92` calls `GET /api/v1/public-sector-cases?limit=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public-sector-cases`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c0ea1981ab01d610", "name": "Dangling fetch: GET /api/v1/public-sector-licenses?limit=1 (src/app/(dashboard)/public-sector/page.tsx:93)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/public-sector-licenses?limit=1 (src/app/(dashboard)/public-sector/page.tsx:93)"}, "fullDescription": {"text": "`src/app/(dashboard)/public-sector/page.tsx:93` calls `GET /api/v1/public-sector-licenses?limit=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public-sector-licenses`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6614c80f24893bba", "name": "Dangling fetch: GET /api/v1/public-sector-cases?${params} (src/app/(dashboard)/public-sector/cases/page.tsx:86)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/public-sector-cases?${params} (src/app/(dashboard)/public-sector/cases/page.tsx:86)"}, "fullDescription": {"text": "`src/app/(dashboard)/public-sector/cases/page.tsx:86` calls `GET /api/v1/public-sector-cases?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public-sector-cases`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-410c7ee8ef508f53", "name": "Dangling fetch: GET /api/v1/public-sector-licenses?${params} (src/app/(dashboard)/public-sector/licenses/page.tsx:75)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/public-sector-licenses?${params} (src/app/(dashboard)/public-sector/licenses/page.tsx:75)"}, "fullDescription": {"text": "`src/app/(dashboard)/public-sector/licenses/page.tsx:75` calls `GET /api/v1/public-sector-licenses?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public-sector-licenses`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-39fdd77ec537ae0e", "name": "Dangling fetch: GET /api/v1/public-sector-grants?${params} (src/app/(dashboard)/public-sector/grants/page.tsx:78)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/public-sector-grants?${params} (src/app/(dashboard)/public-sector/grants/page.tsx:78)"}, "fullDescription": {"text": "`src/app/(dashboard)/public-sector/grants/page.tsx:78` calls `GET /api/v1/public-sector-grants?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public-sector-grants`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7aa718b3ece96fff", "name": "Dangling fetch: GET /api/v1/inbox${params} (src/app/(dashboard)/inbox/page.tsx:152)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/inbox${params} (src/app/(dashboard)/inbox/page.tsx:152)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/page.tsx:152` calls `GET /api/v1/inbox${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e5445a8a9891c4ce", "name": "Dangling fetch: GET /api/v1/ticket-macros (src/app/(dashboard)/inbox/page.tsx:207)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/ticket-macros (src/app/(dashboard)/inbox/page.tsx:207)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/page.tsx:207` calls `GET /api/v1/ticket-macros` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ticket-macros`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ffa8773f1c8d0d2d", "name": "Dangling fetch: GET /api/v1/users/assignable (src/app/(dashboard)/inbox/page.tsx:216)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users/assignable (src/app/(dashboard)/inbox/page.tsx:216)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/page.tsx:216` calls `GET /api/v1/users/assignable` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/assignable`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-56d8604d76d3ec4e", "name": "Dangling fetch: GET /api/v1/inbox/folders (src/app/(dashboard)/inbox/page.tsx:225)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/inbox/folders (src/app/(dashboard)/inbox/page.tsx:225)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/page.tsx:225` calls `GET /api/v1/inbox/folders` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox/folders`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-061b1ba863c10413", "name": "Dangling fetch: POST /api/v1/inbox/folders (src/app/(dashboard)/inbox/page.tsx:237)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/inbox/folders (src/app/(dashboard)/inbox/page.tsx:237)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/page.tsx:237` calls `POST /api/v1/inbox/folders` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox/folders`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0be7f57f24b7f5b3", "name": "Dangling fetch: DELETE /api/v1/inbox/folders/${id} (src/app/(dashboard)/inbox/page.tsx:260)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/inbox/folders/${id} (src/app/(dashboard)/inbox/page.tsx:260)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/page.tsx:260` calls `DELETE /api/v1/inbox/folders/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox/folders/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-124170dbd85687fd", "name": "Dangling fetch: PATCH /api/v1/inbox/conversations/${scid} (src/app/(dashboard)/inbox/page.tsx:282)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/inbox/conversations/${scid} (src/app/(dashboard)/inbox/page.tsx:282)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/page.tsx:282` calls `PATCH /api/v1/inbox/conversations/${scid}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox/conversations/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-790c2759d0e419f6", "name": "Dangling fetch: GET /api/v1/contacts/${cid} (src/app/(dashboard)/inbox/page.tsx:417)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contacts/${cid} (src/app/(dashboard)/inbox/page.tsx:417)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/page.tsx:417` calls `GET /api/v1/contacts/${cid}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contacts/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f0b41864e9a81cc5", "name": "Dangling fetch: GET /api/v1/inbox/conversations/${scid}/notes (src/app/(dashboard)/inbox/page.tsx:433)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/inbox/conversations/${scid}/notes (src/app/(dashboard)/inbox/page.tsx:433)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/page.tsx:433` calls `GET /api/v1/inbox/conversations/${scid}/notes` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox/conversations/<p>/notes`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9ffbe50fd17c2720", "name": "Dangling fetch: PATCH /api/v1/contacts/${cid} (src/app/(dashboard)/inbox/page.tsx:448)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/contacts/${cid} (src/app/(dashboard)/inbox/page.tsx:448)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/page.tsx:448` calls `PATCH /api/v1/contacts/${cid}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contacts/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1b1c8aaef63ef026", "name": "Dangling fetch: PATCH /api/v1/inbox/conversations/${scid} (src/app/(dashboard)/inbox/page.tsx:532)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/inbox/conversations/${scid} (src/app/(dashboard)/inbox/page.tsx:532)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/page.tsx:532` calls `PATCH /api/v1/inbox/conversations/${scid}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox/conversations/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9017706570067d2b", "name": "Dangling fetch: PATCH /api/v1/inbox/conversations/${scid} (src/app/(dashboard)/inbox/page.tsx:557)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/inbox/conversations/${scid} (src/app/(dashboard)/inbox/page.tsx:557)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/page.tsx:557` calls `PATCH /api/v1/inbox/conversations/${scid}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox/conversations/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-51e09245c67b941a", "name": "Dangling fetch: PATCH /api/v1/inbox/conversations/${scid} (src/app/(dashboard)/inbox/page.tsx:583)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/inbox/conversations/${scid} (src/app/(dashboard)/inbox/page.tsx:583)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/page.tsx:583` calls `PATCH /api/v1/inbox/conversations/${scid}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox/conversations/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ce508c83815a30a2", "name": "Dangling fetch: DELETE /api/v1/inbox/conversations/${scid}/participants/${userId} (src/app/(dashboard)/inbox/page.tsx:64", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/inbox/conversations/${scid}/participants/${userId} (src/app/(dashboard)/inbox/page.tsx:640)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/page.tsx:640` calls `DELETE /api/v1/inbox/conversations/${scid}/participants/${userId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox/conversations/<p>/participants/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cad5ae8f2af033b7", "name": "Dangling fetch: PATCH /api/v1/notifications (src/app/(dashboard)/inbox/page.tsx:656)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/notifications (src/app/(dashboard)/inbox/page.tsx:656)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/page.tsx:656` calls `PATCH /api/v1/notifications` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/notifications`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-04447fe94c4cbb92", "name": "Dangling fetch: PATCH /api/v1/inbox (src/app/(dashboard)/inbox/page.tsx:669)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/inbox (src/app/(dashboard)/inbox/page.tsx:669)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/page.tsx:669` calls `PATCH /api/v1/inbox` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0a468fd475328012", "name": "Dangling fetch: POST /api/v1/inbox/upload (src/app/(dashboard)/inbox/page.tsx:683)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/inbox/upload (src/app/(dashboard)/inbox/page.tsx:683)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/page.tsx:683` calls `POST /api/v1/inbox/upload` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox/upload`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-32791b477c44004d", "name": "Dangling fetch: POST /api/v1/inbox (src/app/(dashboard)/inbox/page.tsx:726)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/inbox (src/app/(dashboard)/inbox/page.tsx:726)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/page.tsx:726` calls `POST /api/v1/inbox` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6a84774b84a7b0cf", "name": "Dangling fetch: GET /api/v1/inbox/analytics?${qs} (src/app/(dashboard)/inbox/analytics/page.tsx:87)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/inbox/analytics?${qs} (src/app/(dashboard)/inbox/analytics/page.tsx:87)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/analytics/page.tsx:87` calls `GET /api/v1/inbox/analytics?${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox/analytics`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2212433d815a5654", "name": "Dangling fetch: GET /api/v1/inbox/analytics/frt?${qs} (src/app/(dashboard)/inbox/analytics/page.tsx:88)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/inbox/analytics/frt?${qs} (src/app/(dashboard)/inbox/analytics/page.tsx:88)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/analytics/page.tsx:88` calls `GET /api/v1/inbox/analytics/frt?${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox/analytics/frt`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-14d177c13aaa865e", "name": "Dangling fetch: GET /api/v1/inbox/analytics/team?${qs} (src/app/(dashboard)/inbox/analytics/page.tsx:89)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/inbox/analytics/team?${qs} (src/app/(dashboard)/inbox/analytics/page.tsx:89)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/analytics/page.tsx:89` calls `GET /api/v1/inbox/analytics/team?${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox/analytics/team`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9c8caa405f6e90c0", "name": "Dangling fetch: GET /api/v1/inbox/analytics/temporal?${qs} (src/app/(dashboard)/inbox/analytics/page.tsx:90)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/inbox/analytics/temporal?${qs} (src/app/(dashboard)/inbox/analytics/page.tsx:90)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/analytics/page.tsx:90` calls `GET /api/v1/inbox/analytics/temporal?${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox/analytics/temporal`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-49ac1334f6f04716", "name": "Dangling fetch: GET /api/v1/inbox/analytics/conversations?${params.toString()} (src/app/(dashboard)/inbox/analytics/page", "shortDescription": {"text": "Dangling fetch: GET /api/v1/inbox/analytics/conversations?${params.toString()} (src/app/(dashboard)/inbox/analytics/page.tsx:127)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/analytics/page.tsx:127` calls `GET /api/v1/inbox/analytics/conversations?${params.toString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox/analytics/conversations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0bac8d1ccd48c193", "name": "Dangling fetch: GET /api/v1/inbox${params} (src/app/(dashboard)/inbox/legacy/page.tsx:151)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/inbox${params} (src/app/(dashboard)/inbox/legacy/page.tsx:151)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/legacy/page.tsx:151` calls `GET /api/v1/inbox${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-13f6d624569743bc", "name": "Dangling fetch: GET /api/v1/contacts?limit=500 (src/app/(dashboard)/inbox/legacy/page.tsx:177)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contacts?limit=500 (src/app/(dashboard)/inbox/legacy/page.tsx:177)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/legacy/page.tsx:177` calls `GET /api/v1/contacts?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contacts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-52aab4dbbec08205", "name": "Dangling fetch: POST /api/v1/inbox (src/app/(dashboard)/inbox/legacy/page.tsx:238)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/inbox (src/app/(dashboard)/inbox/legacy/page.tsx:238)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/legacy/page.tsx:238` calls `POST /api/v1/inbox` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4965feb278d72a85", "name": "Dangling fetch: POST /api/v1/inbox (src/app/(dashboard)/inbox/legacy/page.tsx:263)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/inbox (src/app/(dashboard)/inbox/legacy/page.tsx:263)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/legacy/page.tsx:263` calls `POST /api/v1/inbox` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-08ddb10fd58d23f9", "name": "Dangling fetch: PATCH /api/v1/inbox (src/app/(dashboard)/inbox/legacy/page.tsx:296)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/inbox (src/app/(dashboard)/inbox/legacy/page.tsx:296)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/legacy/page.tsx:296` calls `PATCH /api/v1/inbox` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c5e611c692fa6082", "name": "Dangling fetch: DELETE /api/v1/inbox (src/app/(dashboard)/inbox/legacy/page.tsx:313)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/inbox (src/app/(dashboard)/inbox/legacy/page.tsx:313)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/legacy/page.tsx:313` calls `DELETE /api/v1/inbox` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-53d6b803b115842f", "name": "Dangling fetch: GET /api/v1/web-chat/sessions?${params} (src/app/(dashboard)/inbox/web-chat/page.tsx:133)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/web-chat/sessions?${params} (src/app/(dashboard)/inbox/web-chat/page.tsx:133)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/web-chat/page.tsx:133` calls `GET /api/v1/web-chat/sessions?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/web-chat/sessions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6edcba251bc4460f", "name": "Dangling fetch: GET /api/v1/web-chat/sessions/${id} (src/app/(dashboard)/inbox/web-chat/page.tsx:158)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/web-chat/sessions/${id} (src/app/(dashboard)/inbox/web-chat/page.tsx:158)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/web-chat/page.tsx:158` calls `GET /api/v1/web-chat/sessions/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/web-chat/sessions/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-918b975b0901b4b1", "name": "Dangling fetch: GET /api/v1/users (src/app/(dashboard)/inbox/web-chat/page.tsx:169)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users (src/app/(dashboard)/inbox/web-chat/page.tsx:169)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/web-chat/page.tsx:169` calls `GET /api/v1/users` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c1baeee727371750", "name": "Dangling fetch: GET /api/v1/web-chat/sessions/${selectedId}/typing (src/app/(dashboard)/inbox/web-chat/page.tsx:187)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/web-chat/sessions/${selectedId}/typing (src/app/(dashboard)/inbox/web-chat/page.tsx:187)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/web-chat/page.tsx:187` calls `GET /api/v1/web-chat/sessions/${selectedId}/typing` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/web-chat/sessions/<p>/typing`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cd67acd50e0df637", "name": "Dangling fetch: POST /api/v1/web-chat/sessions/${selectedId}/messages (src/app/(dashboard)/inbox/web-chat/page.tsx:210)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/web-chat/sessions/${selectedId}/messages (src/app/(dashboard)/inbox/web-chat/page.tsx:210)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/web-chat/page.tsx:210` calls `POST /api/v1/web-chat/sessions/${selectedId}/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/web-chat/sessions/<p>/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8b38934bddcdd685", "name": "Dangling fetch: PATCH /api/v1/web-chat/sessions/${id} (src/app/(dashboard)/inbox/web-chat/page.tsx:226)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/web-chat/sessions/${id} (src/app/(dashboard)/inbox/web-chat/page.tsx:226)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/web-chat/page.tsx:226` calls `PATCH /api/v1/web-chat/sessions/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/web-chat/sessions/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fa7c22f84ab9c085", "name": "Dangling fetch: PATCH /api/v1/web-chat/sessions/${id} (src/app/(dashboard)/inbox/web-chat/page.tsx:235)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/web-chat/sessions/${id} (src/app/(dashboard)/inbox/web-chat/page.tsx:235)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/web-chat/page.tsx:235` calls `PATCH /api/v1/web-chat/sessions/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/web-chat/sessions/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-687b779de3e2860a", "name": "Dangling fetch: POST /api/v1/web-chat/sessions/${selectedId}/escalate (src/app/(dashboard)/inbox/web-chat/page.tsx:246)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/web-chat/sessions/${selectedId}/escalate (src/app/(dashboard)/inbox/web-chat/page.tsx:246)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/web-chat/page.tsx:246` calls `POST /api/v1/web-chat/sessions/${selectedId}/escalate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/web-chat/sessions/<p>/escalate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-32cbbdacfa1d8109", "name": "Dangling fetch: POST /api/v1/web-chat/sessions/${selectedId}/typing (src/app/(dashboard)/inbox/web-chat/page.tsx:415)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/web-chat/sessions/${selectedId}/typing (src/app/(dashboard)/inbox/web-chat/page.tsx:415)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/web-chat/page.tsx:415` calls `POST /api/v1/web-chat/sessions/${selectedId}/typing` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/web-chat/sessions/<p>/typing`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4391e3ed5d110345", "name": "Dangling fetch: GET /api/v1/inbox/chatbot-rules (src/app/(dashboard)/inbox/chatbot-rules/page.tsx:84)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/inbox/chatbot-rules (src/app/(dashboard)/inbox/chatbot-rules/page.tsx:84)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/chatbot-rules/page.tsx:84` calls `GET /api/v1/inbox/chatbot-rules` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox/chatbot-rules`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8ad39270e5209074", "name": "Dangling fetch: GET /api/v1/settings/ai-features (src/app/(dashboard)/inbox/chatbot-rules/page.tsx:85)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/settings/ai-features (src/app/(dashboard)/inbox/chatbot-rules/page.tsx:85)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/chatbot-rules/page.tsx:85` calls `GET /api/v1/settings/ai-features` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/ai-features`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9fdc528ca68694c5", "name": "Dangling fetch: PATCH /api/v1/settings/ai-features (src/app/(dashboard)/inbox/chatbot-rules/page.tsx:104)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/settings/ai-features (src/app/(dashboard)/inbox/chatbot-rules/page.tsx:104)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/chatbot-rules/page.tsx:104` calls `PATCH /api/v1/settings/ai-features` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/ai-features`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-21ca5426d4704279", "name": "Dangling fetch: POST /api/v1/inbox/chatbot-rules (src/app/(dashboard)/inbox/chatbot-rules/page.tsx:124)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/inbox/chatbot-rules (src/app/(dashboard)/inbox/chatbot-rules/page.tsx:124)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/chatbot-rules/page.tsx:124` calls `POST /api/v1/inbox/chatbot-rules` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox/chatbot-rules`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fa4840e2a6e75bb1", "name": "Dangling fetch: PATCH /api/v1/inbox/chatbot-rules/${id} (src/app/(dashboard)/inbox/chatbot-rules/page.tsx:146)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/inbox/chatbot-rules/${id} (src/app/(dashboard)/inbox/chatbot-rules/page.tsx:146)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/chatbot-rules/page.tsx:146` calls `PATCH /api/v1/inbox/chatbot-rules/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox/chatbot-rules/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0549cd8bc0fb651c", "name": "Dangling fetch: DELETE /api/v1/inbox/chatbot-rules/${id} (src/app/(dashboard)/inbox/chatbot-rules/page.tsx:154)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/inbox/chatbot-rules/${id} (src/app/(dashboard)/inbox/chatbot-rules/page.tsx:154)"}, "fullDescription": {"text": "`src/app/(dashboard)/inbox/chatbot-rules/page.tsx:154` calls `DELETE /api/v1/inbox/chatbot-rules/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/inbox/chatbot-rules/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b6a63665227c3b6f", "name": "Dangling fetch: GET /api/v1/social/accounts (src/app/(dashboard)/social-monitoring/page.tsx:105)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/social/accounts (src/app/(dashboard)/social-monitoring/page.tsx:105)"}, "fullDescription": {"text": "`src/app/(dashboard)/social-monitoring/page.tsx:105` calls `GET /api/v1/social/accounts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/social/accounts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bc6a7a5799646f41", "name": "Dangling fetch: GET /api/v1/social/mentions?${params} (src/app/(dashboard)/social-monitoring/page.tsx:115)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/social/mentions?${params} (src/app/(dashboard)/social-monitoring/page.tsx:115)"}, "fullDescription": {"text": "`src/app/(dashboard)/social-monitoring/page.tsx:115` calls `GET /api/v1/social/mentions?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/social/mentions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-87d0eafddd610714", "name": "Dangling fetch: POST /api/v1/social/accounts (src/app/(dashboard)/social-monitoring/page.tsx:150)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/social/accounts (src/app/(dashboard)/social-monitoring/page.tsx:150)"}, "fullDescription": {"text": "`src/app/(dashboard)/social-monitoring/page.tsx:150` calls `POST /api/v1/social/accounts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/social/accounts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b2a62e06a579c4ed", "name": "Dangling fetch: DELETE /api/v1/social/accounts/${id} (src/app/(dashboard)/social-monitoring/page.tsx:169)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/social/accounts/${id} (src/app/(dashboard)/social-monitoring/page.tsx:169)"}, "fullDescription": {"text": "`src/app/(dashboard)/social-monitoring/page.tsx:169` calls `DELETE /api/v1/social/accounts/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/social/accounts/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-645110756e1f2948", "name": "Dangling fetch: POST /api/v1/social/accounts/${a.id}/poll (src/app/(dashboard)/social-monitoring/page.tsx:180)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/social/accounts/${a.id}/poll (src/app/(dashboard)/social-monitoring/page.tsx:180)"}, "fullDescription": {"text": "`src/app/(dashboard)/social-monitoring/page.tsx:180` calls `POST /api/v1/social/accounts/${a.id}/poll` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/social/accounts/<p>/poll`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e810a7720d7dfdb0", "name": "Dangling fetch: GET /api/v1/social/enable-inbox (src/app/(dashboard)/social-monitoring/page.tsx:208)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/social/enable-inbox (src/app/(dashboard)/social-monitoring/page.tsx:208)"}, "fullDescription": {"text": "`src/app/(dashboard)/social-monitoring/page.tsx:208` calls `GET /api/v1/social/enable-inbox` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/social/enable-inbox`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6222c70411a8fa0a", "name": "Dangling fetch: POST /api/v1/social/enable-inbox (src/app/(dashboard)/social-monitoring/page.tsx:220)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/social/enable-inbox (src/app/(dashboard)/social-monitoring/page.tsx:220)"}, "fullDescription": {"text": "`src/app/(dashboard)/social-monitoring/page.tsx:220` calls `POST /api/v1/social/enable-inbox` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/social/enable-inbox`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5e4535b9cd874ff2", "name": "Dangling fetch: POST /api/v1/social/import-conversations (src/app/(dashboard)/social-monitoring/page.tsx:242)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/social/import-conversations (src/app/(dashboard)/social-monitoring/page.tsx:242)"}, "fullDescription": {"text": "`src/app/(dashboard)/social-monitoring/page.tsx:242` calls `POST /api/v1/social/import-conversations` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/social/import-conversations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aad95006739fbc71", "name": "Dangling fetch: POST /api/v1/social/accounts/${id}/poll (src/app/(dashboard)/social-monitoring/page.tsx:257)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/social/accounts/${id}/poll (src/app/(dashboard)/social-monitoring/page.tsx:257)"}, "fullDescription": {"text": "`src/app/(dashboard)/social-monitoring/page.tsx:257` calls `POST /api/v1/social/accounts/${id}/poll` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/social/accounts/<p>/poll`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-513f7f2d5d2cc81b", "name": "Dangling fetch: PATCH /api/v1/social/mentions (src/app/(dashboard)/social-monitoring/page.tsx:269)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/social/mentions (src/app/(dashboard)/social-monitoring/page.tsx:269)"}, "fullDescription": {"text": "`src/app/(dashboard)/social-monitoring/page.tsx:269` calls `PATCH /api/v1/social/mentions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/social/mentions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-906cb598254a639c", "name": "Dangling fetch: POST /api/v1/social/mentions/${id}/convert-to-ticket (src/app/(dashboard)/social-monitoring/page.tsx:278", "shortDescription": {"text": "Dangling fetch: POST /api/v1/social/mentions/${id}/convert-to-ticket (src/app/(dashboard)/social-monitoring/page.tsx:278)"}, "fullDescription": {"text": "`src/app/(dashboard)/social-monitoring/page.tsx:278` calls `POST /api/v1/social/mentions/${id}/convert-to-ticket` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/social/mentions/<p>/convert-to-ticket`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6bffa6527ff5ab9d", "name": "Dangling fetch: POST /api/v1/social/mentions/${m.id}/convert-to-lead (src/app/(dashboard)/social-monitoring/page.tsx:317", "shortDescription": {"text": "Dangling fetch: POST /api/v1/social/mentions/${m.id}/convert-to-lead (src/app/(dashboard)/social-monitoring/page.tsx:317)"}, "fullDescription": {"text": "`src/app/(dashboard)/social-monitoring/page.tsx:317` calls `POST /api/v1/social/mentions/${m.id}/convert-to-lead` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/social/mentions/<p>/convert-to-lead`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2c7fbf7753b6670c", "name": "Dangling fetch: POST /api/v1/social/mentions/${id}/reply (src/app/(dashboard)/social-monitoring/page.tsx:333)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/social/mentions/${id}/reply (src/app/(dashboard)/social-monitoring/page.tsx:333)"}, "fullDescription": {"text": "`src/app/(dashboard)/social-monitoring/page.tsx:333` calls `POST /api/v1/social/mentions/${id}/reply` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/social/mentions/<p>/reply`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-804386bf96610f4b", "name": "Dangling fetch: POST /api/v1/social/mentions/${id}/convert-to-task (src/app/(dashboard)/social-monitoring/page.tsx:352)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/social/mentions/${id}/convert-to-task (src/app/(dashboard)/social-monitoring/page.tsx:352)"}, "fullDescription": {"text": "`src/app/(dashboard)/social-monitoring/page.tsx:352` calls `POST /api/v1/social/mentions/${id}/convert-to-task` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/social/mentions/<p>/convert-to-task`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7f02a350984d02eb", "name": "Dangling fetch: PUT /api/v1/social/accounts/${editKeywordsId} (src/app/(dashboard)/social-monitoring/page.tsx:374)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/social/accounts/${editKeywordsId} (src/app/(dashboard)/social-monitoring/page.tsx:374)"}, "fullDescription": {"text": "`src/app/(dashboard)/social-monitoring/page.tsx:374` calls `PUT /api/v1/social/accounts/${editKeywordsId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/social/accounts/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5b20cd206724ee1e", "name": "Dangling fetch: GET /api/v1/quotes?${params.toString()} (src/app/(dashboard)/quotes/page.tsx:84)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/quotes?${params.toString()} (src/app/(dashboard)/quotes/page.tsx:84)"}, "fullDescription": {"text": "`src/app/(dashboard)/quotes/page.tsx:84` calls `GET /api/v1/quotes?${params.toString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/quotes`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d3616fc6943e104a", "name": "Dangling fetch: GET /api/v1/quotes/${quoteId} (src/app/(dashboard)/quotes/[id]/page.tsx:155)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/quotes/${quoteId} (src/app/(dashboard)/quotes/[id]/page.tsx:155)"}, "fullDescription": {"text": "`src/app/(dashboard)/quotes/[id]/page.tsx:155` calls `GET /api/v1/quotes/${quoteId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/quotes/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-04bfc46c18250d3a", "name": "Dangling fetch: PATCH /api/v1/quotes/${quoteId} (src/app/(dashboard)/quotes/[id]/page.tsx:232)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/quotes/${quoteId} (src/app/(dashboard)/quotes/[id]/page.tsx:232)"}, "fullDescription": {"text": "`src/app/(dashboard)/quotes/[id]/page.tsx:232` calls `PATCH /api/v1/quotes/${quoteId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/quotes/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-80395fdaf3f2665d", "name": "Dangling fetch: PATCH /api/v1/quotes/${quoteId} (src/app/(dashboard)/quotes/[id]/page.tsx:268)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/quotes/${quoteId} (src/app/(dashboard)/quotes/[id]/page.tsx:268)"}, "fullDescription": {"text": "`src/app/(dashboard)/quotes/[id]/page.tsx:268` calls `PATCH /api/v1/quotes/${quoteId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/quotes/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9b73d1ab0f641ad0", "name": "Dangling fetch: DELETE /api/v1/quotes/${quoteId} (src/app/(dashboard)/quotes/[id]/page.tsx:304)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/quotes/${quoteId} (src/app/(dashboard)/quotes/[id]/page.tsx:304)"}, "fullDescription": {"text": "`src/app/(dashboard)/quotes/[id]/page.tsx:304` calls `DELETE /api/v1/quotes/${quoteId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/quotes/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f5adf0bfbc618f47", "name": "Dangling fetch: GET /api/v1/lead-scoring (src/app/(dashboard)/ai-scoring/page.tsx:59)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/lead-scoring (src/app/(dashboard)/ai-scoring/page.tsx:59)"}, "fullDescription": {"text": "`src/app/(dashboard)/ai-scoring/page.tsx:59` calls `GET /api/v1/lead-scoring` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/lead-scoring`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-48a4b1b4d9848cdc", "name": "Dangling fetch: POST /api/v1/lead-scoring (src/app/(dashboard)/ai-scoring/page.tsx:72)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/lead-scoring (src/app/(dashboard)/ai-scoring/page.tsx:72)"}, "fullDescription": {"text": "`src/app/(dashboard)/ai-scoring/page.tsx:72` calls `POST /api/v1/lead-scoring` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/lead-scoring`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d091ea881cec295b", "name": "Dangling fetch: POST /api/v1/lead-scoring (src/app/(dashboard)/ai-scoring/page.tsx:89)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/lead-scoring (src/app/(dashboard)/ai-scoring/page.tsx:89)"}, "fullDescription": {"text": "`src/app/(dashboard)/ai-scoring/page.tsx:89` calls `POST /api/v1/lead-scoring` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/lead-scoring`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-95e6134ce673e5cf", "name": "Dangling fetch: GET /api/v1/pipelines (src/app/(dashboard)/deals/page.tsx:108)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/pipelines (src/app/(dashboard)/deals/page.tsx:108)"}, "fullDescription": {"text": "`src/app/(dashboard)/deals/page.tsx:108` calls `GET /api/v1/pipelines` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pipelines`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c6e8da51226e337f", "name": "Dangling fetch: POST /api/v1/deals/bulk (src/app/(dashboard)/deals/page.tsx:143)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/deals/bulk (src/app/(dashboard)/deals/page.tsx:143)"}, "fullDescription": {"text": "`src/app/(dashboard)/deals/page.tsx:143` calls `POST /api/v1/deals/bulk` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/bulk`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-48218414bc07e1da", "name": "Dangling fetch: PATCH /api/v1/deals/${dealId} (src/app/(dashboard)/deals/page.tsx:176)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/deals/${dealId} (src/app/(dashboard)/deals/page.tsx:176)"}, "fullDescription": {"text": "`src/app/(dashboard)/deals/page.tsx:176` calls `PATCH /api/v1/deals/${dealId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0f54f9de1349fb95", "name": "Dangling fetch: POST /api/v1/deals/ai-analysis (src/app/(dashboard)/deals/page.tsx:233)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/deals/ai-analysis (src/app/(dashboard)/deals/page.tsx:233)"}, "fullDescription": {"text": "`src/app/(dashboard)/deals/page.tsx:233` calls `POST /api/v1/deals/ai-analysis` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/ai-analysis`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-62d61eb3ac0b1ba6", "name": "Dangling fetch: PUT /api/v1/deals/${dealId} (src/app/(dashboard)/deals/page.tsx:308)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/deals/${dealId} (src/app/(dashboard)/deals/page.tsx:308)"}, "fullDescription": {"text": "`src/app/(dashboard)/deals/page.tsx:308` calls `PUT /api/v1/deals/${dealId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7bb61e223c01f97d", "name": "Dangling fetch: DELETE /api/v1/deals/${deleteId} (src/app/(dashboard)/deals/page.tsx:334)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/deals/${deleteId} (src/app/(dashboard)/deals/page.tsx:334)"}, "fullDescription": {"text": "`src/app/(dashboard)/deals/page.tsx:334` calls `DELETE /api/v1/deals/${deleteId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1c62b7ddb47083f4", "name": "Dangling fetch: POST /api/v1/deals/${dealId}/next-steps (src/app/(dashboard)/deals/page.tsx:964)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/deals/${dealId}/next-steps (src/app/(dashboard)/deals/page.tsx:964)"}, "fullDescription": {"text": "`src/app/(dashboard)/deals/page.tsx:964` calls `POST /api/v1/deals/${dealId}/next-steps` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/<p>/next-steps`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-150971f21b84832d", "name": "Dangling fetch: GET /api/v1/analytics/deal-prediction?dealId=${dealId} (src/app/(dashboard)/deals/[id]/page.tsx:119)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/analytics/deal-prediction?dealId=${dealId} (src/app/(dashboard)/deals/[id]/page.tsx:119)"}, "fullDescription": {"text": "`src/app/(dashboard)/deals/[id]/page.tsx:119` calls `GET /api/v1/analytics/deal-prediction?dealId=${dealId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/analytics/deal-prediction`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fd515286c55f136a", "name": "Dangling fetch: GET /api/v1/ai/next-actions?limit=3 (src/app/(dashboard)/deals/[id]/page.tsx:120)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/ai/next-actions?limit=3 (src/app/(dashboard)/deals/[id]/page.tsx:120)"}, "fullDescription": {"text": "`src/app/(dashboard)/deals/[id]/page.tsx:120` calls `GET /api/v1/ai/next-actions?limit=3` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/ai/next-actions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-09e4413be53a8843", "name": "Dangling fetch: PUT /api/v1/deals/${dealId}/next-steps (src/app/(dashboard)/deals/[id]/page.tsx:285)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/deals/${dealId}/next-steps (src/app/(dashboard)/deals/[id]/page.tsx:285)"}, "fullDescription": {"text": "`src/app/(dashboard)/deals/[id]/page.tsx:285` calls `PUT /api/v1/deals/${dealId}/next-steps` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/<p>/next-steps`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-987f5c77ca3d67d1", "name": "Dangling fetch: POST /api/v1/deals/${dealId}/next-steps (src/app/(dashboard)/deals/[id]/page.tsx:294)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/deals/${dealId}/next-steps (src/app/(dashboard)/deals/[id]/page.tsx:294)"}, "fullDescription": {"text": "`src/app/(dashboard)/deals/[id]/page.tsx:294` calls `POST /api/v1/deals/${dealId}/next-steps` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/<p>/next-steps`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3d347abdec6141d7", "name": "Dangling fetch: GET /api/v1/deals/${id} (src/app/(dashboard)/deals/[id]/page.tsx:409)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/deals/${id} (src/app/(dashboard)/deals/[id]/page.tsx:409)"}, "fullDescription": {"text": "`src/app/(dashboard)/deals/[id]/page.tsx:409` calls `GET /api/v1/deals/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b6827d97cf8f6915", "name": "Dangling fetch: GET /api/v1/deals/${id}/next-steps (src/app/(dashboard)/deals/[id]/page.tsx:418)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/deals/${id}/next-steps (src/app/(dashboard)/deals/[id]/page.tsx:418)"}, "fullDescription": {"text": "`src/app/(dashboard)/deals/[id]/page.tsx:418` calls `GET /api/v1/deals/${id}/next-steps` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/<p>/next-steps`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5604d94051a0f30e", "name": "Dangling fetch: GET /api/v1/deals/${id}/offers (src/app/(dashboard)/deals/[id]/page.tsx:427)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/deals/${id}/offers (src/app/(dashboard)/deals/[id]/page.tsx:427)"}, "fullDescription": {"text": "`src/app/(dashboard)/deals/[id]/page.tsx:427` calls `GET /api/v1/deals/${id}/offers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/<p>/offers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cf6fc4c93fb47553", "name": "Dangling fetch: GET /api/v1/invoices?dealId=${id}&limit=1 (src/app/(dashboard)/deals/[id]/page.tsx:428)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/invoices?dealId=${id}&limit=1 (src/app/(dashboard)/deals/[id]/page.tsx:428)"}, "fullDescription": {"text": "`src/app/(dashboard)/deals/[id]/page.tsx:428` calls `GET /api/v1/invoices?dealId=${id}&limit=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/invoices`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-26f49133bbe09fae", "name": "Dangling fetch: GET /api/v1/pipelines/${pipelineId} (src/app/(dashboard)/deals/[id]/page.tsx:440)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/pipelines/${pipelineId} (src/app/(dashboard)/deals/[id]/page.tsx:440)"}, "fullDescription": {"text": "`src/app/(dashboard)/deals/[id]/page.tsx:440` calls `GET /api/v1/pipelines/${pipelineId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pipelines/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-342926285b34931e", "name": "Dangling fetch: PUT /api/v1/deals/${id} (src/app/(dashboard)/deals/[id]/page.tsx:454)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/deals/${id} (src/app/(dashboard)/deals/[id]/page.tsx:454)"}, "fullDescription": {"text": "`src/app/(dashboard)/deals/[id]/page.tsx:454` calls `PUT /api/v1/deals/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c335da2700e6c218", "name": "Dangling fetch: GET /api/v1/pipeline-stages?target=${newStage} (src/app/(dashboard)/deals/[id]/page.tsx:471)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/pipeline-stages?target=${newStage} (src/app/(dashboard)/deals/[id]/page.tsx:471)"}, "fullDescription": {"text": "`src/app/(dashboard)/deals/[id]/page.tsx:471` calls `GET /api/v1/pipeline-stages?target=${newStage}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pipeline-stages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-13b74fe160eb8de2", "name": "Dangling fetch: GET /api/v1/pipeline-stages/${targetStage.id}/rules (src/app/(dashboard)/deals/[id]/page.tsx:477)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/pipeline-stages/${targetStage.id}/rules (src/app/(dashboard)/deals/[id]/page.tsx:477)"}, "fullDescription": {"text": "`src/app/(dashboard)/deals/[id]/page.tsx:477` calls `GET /api/v1/pipeline-stages/${targetStage.id}/rules` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pipeline-stages/<p>/rules`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8fd4c690b228a588", "name": "Dangling fetch: PUT /api/v1/deals/${id} (src/app/(dashboard)/deals/[id]/page.tsx:507)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/deals/${id} (src/app/(dashboard)/deals/[id]/page.tsx:507)"}, "fullDescription": {"text": "`src/app/(dashboard)/deals/[id]/page.tsx:507` calls `PUT /api/v1/deals/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a86b54587fa016a5", "name": "Dangling fetch: DELETE /api/v1/deals/${id} (src/app/(dashboard)/deals/[id]/page.tsx:528)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/deals/${id} (src/app/(dashboard)/deals/[id]/page.tsx:528)"}, "fullDescription": {"text": "`src/app/(dashboard)/deals/[id]/page.tsx:528` calls `DELETE /api/v1/deals/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f013fe2d80ce219d", "name": "Dangling fetch: GET /api/v1/forms?limit=200 (src/app/(dashboard)/forms/page.tsx:46)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/forms?limit=200 (src/app/(dashboard)/forms/page.tsx:46)"}, "fullDescription": {"text": "`src/app/(dashboard)/forms/page.tsx:46` calls `GET /api/v1/forms?limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/forms`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8d6f6ad2219826cb", "name": "Dangling fetch: POST /api/v1/forms (src/app/(dashboard)/forms/page.tsx:162)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/forms (src/app/(dashboard)/forms/page.tsx:162)"}, "fullDescription": {"text": "`src/app/(dashboard)/forms/page.tsx:162` calls `POST /api/v1/forms` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/forms`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c8d0d205559b130b", "name": "Dangling fetch: GET /api/v1/campaigns?limit=500 (src/app/(dashboard)/forms/[id]/page.tsx:53)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/campaigns?limit=500 (src/app/(dashboard)/forms/[id]/page.tsx:53)"}, "fullDescription": {"text": "`src/app/(dashboard)/forms/[id]/page.tsx:53` calls `GET /api/v1/campaigns?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/campaigns`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d7543dc17f124b02", "name": "Dangling fetch: GET /api/v1/forms/${id} (src/app/(dashboard)/forms/[id]/page.tsx:64)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/forms/${id} (src/app/(dashboard)/forms/[id]/page.tsx:64)"}, "fullDescription": {"text": "`src/app/(dashboard)/forms/[id]/page.tsx:64` calls `GET /api/v1/forms/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/forms/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1e27612652563750", "name": "Dangling fetch: PUT /api/v1/forms/${id} (src/app/(dashboard)/forms/[id]/page.tsx:105)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/forms/${id} (src/app/(dashboard)/forms/[id]/page.tsx:105)"}, "fullDescription": {"text": "`src/app/(dashboard)/forms/[id]/page.tsx:105` calls `PUT /api/v1/forms/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/forms/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e10dc3c1315146d4", "name": "Dangling fetch: POST /api/v1/forms/${id}/publish (src/app/(dashboard)/forms/[id]/page.tsx:145)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/forms/${id}/publish (src/app/(dashboard)/forms/[id]/page.tsx:145)"}, "fullDescription": {"text": "`src/app/(dashboard)/forms/[id]/page.tsx:145` calls `POST /api/v1/forms/${id}/publish` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/forms/<p>/publish`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cb1d06e1fd55ea9a", "name": "Dangling fetch: GET /api/v1/divisions (src/app/(dashboard)/boards/page.tsx:98)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/divisions (src/app/(dashboard)/boards/page.tsx:98)"}, "fullDescription": {"text": "`src/app/(dashboard)/boards/page.tsx:98` calls `GET /api/v1/divisions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/divisions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5abfb70af1102888", "name": "Dangling fetch: GET /api/v1/users/assignable (src/app/(dashboard)/boards/page.tsx:210)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users/assignable (src/app/(dashboard)/boards/page.tsx:210)"}, "fullDescription": {"text": "`src/app/(dashboard)/boards/page.tsx:210` calls `GET /api/v1/users/assignable` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/assignable`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-34e9dd2422631bfa", "name": "Dangling fetch: POST /api/v1/divisions (src/app/(dashboard)/boards/page.tsx:227)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/divisions (src/app/(dashboard)/boards/page.tsx:227)"}, "fullDescription": {"text": "`src/app/(dashboard)/boards/page.tsx:227` calls `POST /api/v1/divisions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/divisions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8521a4799c65fa27", "name": "Dangling fetch: POST /api/v1/board-permissions (src/app/(dashboard)/boards/page.tsx:242)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/board-permissions (src/app/(dashboard)/boards/page.tsx:242)"}, "fullDescription": {"text": "`src/app/(dashboard)/boards/page.tsx:242` calls `POST /api/v1/board-permissions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/board-permissions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-19da9446c2a2a0a9", "name": "Dangling fetch: GET /api/v1/users/assignable (src/app/(dashboard)/boards/page.tsx:344)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users/assignable (src/app/(dashboard)/boards/page.tsx:344)"}, "fullDescription": {"text": "`src/app/(dashboard)/boards/page.tsx:344` calls `GET /api/v1/users/assignable` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/assignable`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-92ceeba7aa5d555a", "name": "Dangling fetch: GET /api/v1/board-permissions?divisionId=${encodeURIComponent(division.id)} (src/app/(dashboard)/boards/", "shortDescription": {"text": "Dangling fetch: GET /api/v1/board-permissions?divisionId=${encodeURIComponent(division.id)} (src/app/(dashboard)/boards/page.tsx:345)"}, "fullDescription": {"text": "`src/app/(dashboard)/boards/page.tsx:345` calls `GET /api/v1/board-permissions?divisionId=${encodeURIComponent(division.id)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/board-permissions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1f0ff55118d407b2", "name": "Dangling fetch: PUT /api/v1/divisions/${division.id}/columns (src/app/(dashboard)/boards/page.tsx:371)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/divisions/${division.id}/columns (src/app/(dashboard)/boards/page.tsx:371)"}, "fullDescription": {"text": "`src/app/(dashboard)/boards/page.tsx:371` calls `PUT /api/v1/divisions/${division.id}/columns` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/divisions/<p>/columns`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9e55bc9eff137cd9", "name": "Dangling fetch: PATCH /api/v1/divisions/${division.id} (src/app/(dashboard)/boards/page.tsx:385)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/divisions/${division.id} (src/app/(dashboard)/boards/page.tsx:385)"}, "fullDescription": {"text": "`src/app/(dashboard)/boards/page.tsx:385` calls `PATCH /api/v1/divisions/${division.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/divisions/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6f177886955d602c", "name": "Dangling fetch: POST /api/v1/board-permissions (src/app/(dashboard)/boards/page.tsx:401)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/board-permissions (src/app/(dashboard)/boards/page.tsx:401)"}, "fullDescription": {"text": "`src/app/(dashboard)/boards/page.tsx:401` calls `POST /api/v1/board-permissions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/board-permissions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2d15aca68bcdc34f", "name": "Dangling fetch: DELETE /api/v1/board-permissions?userId=${encodeURIComponent(userId)}&divisionId=${encodeURIComponent(di", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/board-permissions?userId=${encodeURIComponent(userId)}&divisionId=${encodeURIComponent(division.id)} (src/app/(dashboard)/boards/page.tsx:408)"}, "fullDescription": {"text": "`src/app/(dashboard)/boards/page.tsx:408` calls `DELETE /api/v1/board-permissions?userId=${encodeURIComponent(userId)}&divisionId=${encodeURIComponent(division.id)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/board-permissions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-48ecee487bdef358", "name": "Dangling fetch: POST /api/v1/divisions/${division.id}/import-tasks (src/app/(dashboard)/boards/page.tsx:434)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/divisions/${division.id}/import-tasks (src/app/(dashboard)/boards/page.tsx:434)"}, "fullDescription": {"text": "`src/app/(dashboard)/boards/page.tsx:434` calls `POST /api/v1/divisions/${division.id}/import-tasks` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/divisions/<p>/import-tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bc0adab96c665c36", "name": "Dangling fetch: DELETE /api/v1/divisions/${division.id} (src/app/(dashboard)/boards/page.tsx:455)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/divisions/${division.id} (src/app/(dashboard)/boards/page.tsx:455)"}, "fullDescription": {"text": "`src/app/(dashboard)/boards/page.tsx:455` calls `DELETE /api/v1/divisions/${division.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/divisions/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-44d245c23dfb0e4d", "name": "Dangling fetch: GET /api/v1/tasks?divisionId=${encodeURIComponent(divisionId)}&limit=200 (src/app/(dashboard)/boards/[di", "shortDescription": {"text": "Dangling fetch: GET /api/v1/tasks?divisionId=${encodeURIComponent(divisionId)}&limit=200 (src/app/(dashboard)/boards/[divisionId]/page.tsx:215)"}, "fullDescription": {"text": "`src/app/(dashboard)/boards/[divisionId]/page.tsx:215` calls `GET /api/v1/tasks?divisionId=${encodeURIComponent(divisionId)}&limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-58bb8c280a92c8a1", "name": "Dangling fetch: GET /api/v1/divisions (src/app/(dashboard)/boards/[divisionId]/page.tsx:226)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/divisions (src/app/(dashboard)/boards/[divisionId]/page.tsx:226)"}, "fullDescription": {"text": "`src/app/(dashboard)/boards/[divisionId]/page.tsx:226` calls `GET /api/v1/divisions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/divisions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-56ac5a1ca8d20b56", "name": "Dangling fetch: PATCH /api/v1/tasks/${taskId} (src/app/(dashboard)/boards/[divisionId]/page.tsx:340)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/tasks/${taskId} (src/app/(dashboard)/boards/[divisionId]/page.tsx:340)"}, "fullDescription": {"text": "`src/app/(dashboard)/boards/[divisionId]/page.tsx:340` calls `PATCH /api/v1/tasks/${taskId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8aa761eea400baa8", "name": "Dangling fetch: PATCH /api/v1/tasks/${taskId} (src/app/(dashboard)/boards/[divisionId]/page.tsx:361)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/tasks/${taskId} (src/app/(dashboard)/boards/[divisionId]/page.tsx:361)"}, "fullDescription": {"text": "`src/app/(dashboard)/boards/[divisionId]/page.tsx:361` calls `PATCH /api/v1/tasks/${taskId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-135cac985f20e4c2", "name": "Dangling fetch: POST /api/v1/tasks (src/app/(dashboard)/boards/[divisionId]/page.tsx:438)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/tasks (src/app/(dashboard)/boards/[divisionId]/page.tsx:438)"}, "fullDescription": {"text": "`src/app/(dashboard)/boards/[divisionId]/page.tsx:438` calls `POST /api/v1/tasks` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cd66898655569fd2", "name": "Dangling fetch: DELETE /api/v1/tasks/${id} (src/app/(dashboard)/boards/[divisionId]/page.tsx:448)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/tasks/${id} (src/app/(dashboard)/boards/[divisionId]/page.tsx:448)"}, "fullDescription": {"text": "`src/app/(dashboard)/boards/[divisionId]/page.tsx:448` calls `DELETE /api/v1/tasks/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c15217f2a7077e1f", "name": "Dangling fetch: GET /api/v1/users/assignable (src/app/(dashboard)/boards/[divisionId]/page.tsx:459)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users/assignable (src/app/(dashboard)/boards/[divisionId]/page.tsx:459)"}, "fullDescription": {"text": "`src/app/(dashboard)/boards/[divisionId]/page.tsx:459` calls `GET /api/v1/users/assignable` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/assignable`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a120b7c1bfc95b19", "name": "Dangling fetch: GET /api/v1/users/assignable (src/app/(dashboard)/boards/[divisionId]/page.tsx:934)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/users/assignable (src/app/(dashboard)/boards/[divisionId]/page.tsx:934)"}, "fullDescription": {"text": "`src/app/(dashboard)/boards/[divisionId]/page.tsx:934` calls `GET /api/v1/users/assignable` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/users/assignable`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a0d0c8d3fa3556ea", "name": "Dangling fetch: POST /api/v1/tasks (src/app/(dashboard)/boards/[divisionId]/page.tsx:957)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/tasks (src/app/(dashboard)/boards/[divisionId]/page.tsx:957)"}, "fullDescription": {"text": "`src/app/(dashboard)/boards/[divisionId]/page.tsx:957` calls `POST /api/v1/tasks` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3af25c0f73f96d0b", "name": "Dangling fetch: GET /api/v1/divisions (src/app/(dashboard)/boards/[divisionId]/settings/page.tsx:54)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/divisions (src/app/(dashboard)/boards/[divisionId]/settings/page.tsx:54)"}, "fullDescription": {"text": "`src/app/(dashboard)/boards/[divisionId]/settings/page.tsx:54` calls `GET /api/v1/divisions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/divisions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d5129afea9affedc", "name": "Dangling fetch: PUT /api/v1/divisions/${divisionId}/columns (src/app/(dashboard)/boards/[divisionId]/settings/page.tsx:7", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/divisions/${divisionId}/columns (src/app/(dashboard)/boards/[divisionId]/settings/page.tsx:74)"}, "fullDescription": {"text": "`src/app/(dashboard)/boards/[divisionId]/settings/page.tsx:74` calls `PUT /api/v1/divisions/${divisionId}/columns` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/divisions/<p>/columns`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8cc6081a9671e78d", "name": "Dangling fetch: GET /api/v1/companies?category=client&limit=500 (src/app/(dashboard)/companies/page.tsx:106)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/companies?category=client&limit=500 (src/app/(dashboard)/companies/page.tsx:106)"}, "fullDescription": {"text": "`src/app/(dashboard)/companies/page.tsx:106` calls `GET /api/v1/companies?category=client&limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/companies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c0d087d11600e038", "name": "Dangling fetch: POST /api/v1/companies/bulk (src/app/(dashboard)/companies/page.tsx:129)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/companies/bulk (src/app/(dashboard)/companies/page.tsx:129)"}, "fullDescription": {"text": "`src/app/(dashboard)/companies/page.tsx:129` calls `POST /api/v1/companies/bulk` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/companies/bulk`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-247ac938aaf83c50", "name": "Dangling fetch: PATCH /api/v1/companies/${companyId} (src/app/(dashboard)/companies/page.tsx:168)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/companies/${companyId} (src/app/(dashboard)/companies/page.tsx:168)"}, "fullDescription": {"text": "`src/app/(dashboard)/companies/page.tsx:168` calls `PATCH /api/v1/companies/${companyId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/companies/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-74feec98d1bcb5f2", "name": "Dangling fetch: DELETE /api/v1/companies/${deleteItem.id} (src/app/(dashboard)/companies/page.tsx:209)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/companies/${deleteItem.id} (src/app/(dashboard)/companies/page.tsx:209)"}, "fullDescription": {"text": "`src/app/(dashboard)/companies/page.tsx:209` calls `DELETE /api/v1/companies/${deleteItem.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/companies/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-48870b82c0de12ca", "name": "Dangling fetch: GET /api/v1/companies/${params.id} (src/app/(dashboard)/companies/[id]/page.tsx:102)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/companies/${params.id} (src/app/(dashboard)/companies/[id]/page.tsx:102)"}, "fullDescription": {"text": "`src/app/(dashboard)/companies/[id]/page.tsx:102` calls `GET /api/v1/companies/${params.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/companies/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a7929dcd38e34d58", "name": "Dangling fetch: GET /api/v1/pricing/profiles?companyId=${params.id}&all=true (src/app/(dashboard)/companies/[id]/page.ts", "shortDescription": {"text": "Dangling fetch: GET /api/v1/pricing/profiles?companyId=${params.id}&all=true (src/app/(dashboard)/companies/[id]/page.tsx:115)"}, "fullDescription": {"text": "`src/app/(dashboard)/companies/[id]/page.tsx:115` calls `GET /api/v1/pricing/profiles?companyId=${params.id}&all=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pricing/profiles`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d3d62611ac4a8eeb", "name": "Dangling fetch: GET /api/v1/pricing/additional-sales?profileId=${profile.id} (src/app/(dashboard)/companies/[id]/page.ts", "shortDescription": {"text": "Dangling fetch: GET /api/v1/pricing/additional-sales?profileId=${profile.id} (src/app/(dashboard)/companies/[id]/page.tsx:120)"}, "fullDescription": {"text": "`src/app/(dashboard)/companies/[id]/page.tsx:120` calls `GET /api/v1/pricing/additional-sales?profileId=${profile.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pricing/additional-sales`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-152603f577a22913", "name": "Dangling fetch: GET /api/v1/companies/${params.id}/timeline (src/app/(dashboard)/companies/[id]/page.tsx:131)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/companies/${params.id}/timeline (src/app/(dashboard)/companies/[id]/page.tsx:131)"}, "fullDescription": {"text": "`src/app/(dashboard)/companies/[id]/page.tsx:131` calls `GET /api/v1/companies/${params.id}/timeline` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/companies/<p>/timeline`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-69727addea1c2930", "name": "Dangling fetch: GET /api/v1/calls?companyId=${params.id}&limit=20 (src/app/(dashboard)/companies/[id]/page.tsx:142)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/calls?companyId=${params.id}&limit=20 (src/app/(dashboard)/companies/[id]/page.tsx:142)"}, "fullDescription": {"text": "`src/app/(dashboard)/companies/[id]/page.tsx:142` calls `GET /api/v1/calls?companyId=${params.id}&limit=20` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/calls`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cdb2b35002b278c6", "name": "Dangling fetch: GET /api/v1/pricing/data (src/app/(dashboard)/pricing/page.tsx:158)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/pricing/data (src/app/(dashboard)/pricing/page.tsx:158)"}, "fullDescription": {"text": "`src/app/(dashboard)/pricing/page.tsx:158` calls `GET /api/v1/pricing/data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pricing/data`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-51e006ba63c10982", "name": "Dangling fetch: GET /api/v1/pricing/additional-sales?limit=500 (src/app/(dashboard)/pricing/page.tsx:168)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/pricing/additional-sales?limit=500 (src/app/(dashboard)/pricing/page.tsx:168)"}, "fullDescription": {"text": "`src/app/(dashboard)/pricing/page.tsx:168` calls `GET /api/v1/pricing/additional-sales?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pricing/additional-sales`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8035906c15a6e0e9", "name": "Dangling fetch: GET /api/v1/pricing/profiles?all=true (src/app/(dashboard)/pricing/page.tsx:177)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/pricing/profiles?all=true (src/app/(dashboard)/pricing/page.tsx:177)"}, "fullDescription": {"text": "`src/app/(dashboard)/pricing/page.tsx:177` calls `GET /api/v1/pricing/profiles?all=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pricing/profiles`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-02e085d2d9e78407", "name": "Dangling fetch: GET /api/v1/deals?limit=500&stage=WON (src/app/(dashboard)/pricing/page.tsx:186)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/deals?limit=500&stage=WON (src/app/(dashboard)/pricing/page.tsx:186)"}, "fullDescription": {"text": "`src/app/(dashboard)/pricing/page.tsx:186` calls `GET /api/v1/deals?limit=500&stage=WON` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-628c5f76362e7626", "name": "Dangling fetch: POST /api/v1/pricing/export (src/app/(dashboard)/pricing/page.tsx:326)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/pricing/export (src/app/(dashboard)/pricing/page.tsx:326)"}, "fullDescription": {"text": "`src/app/(dashboard)/pricing/page.tsx:326` calls `POST /api/v1/pricing/export` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pricing/export`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f790e9300ae407fa", "name": "Dangling fetch: PUT /api/v1/pricing/company/${encodeURIComponent(code)} (src/app/(dashboard)/pricing/page.tsx:353)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/pricing/company/${encodeURIComponent(code)} (src/app/(dashboard)/pricing/page.tsx:353)"}, "fullDescription": {"text": "`src/app/(dashboard)/pricing/page.tsx:353` calls `PUT /api/v1/pricing/company/${encodeURIComponent(code)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pricing/company/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8262652eb702a06a", "name": "Dangling fetch: DELETE /api/v1/pricing/delete/${encodeURIComponent(code)} (src/app/(dashboard)/pricing/page.tsx:365)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/pricing/delete/${encodeURIComponent(code)} (src/app/(dashboard)/pricing/page.tsx:365)"}, "fullDescription": {"text": "`src/app/(dashboard)/pricing/page.tsx:365` calls `DELETE /api/v1/pricing/delete/${encodeURIComponent(code)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pricing/delete/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2f282b424a18f746", "name": "Dangling fetch: POST /api/v1/pricing/additional-sales (src/app/(dashboard)/pricing/page.tsx:978)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/pricing/additional-sales (src/app/(dashboard)/pricing/page.tsx:978)"}, "fullDescription": {"text": "`src/app/(dashboard)/pricing/page.tsx:978` calls `POST /api/v1/pricing/additional-sales` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pricing/additional-sales`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-29518f8a2f2fe5de", "name": "Dangling fetch: POST /api/v1/deals/${deal.id}/add-to-pricing (src/app/(dashboard)/pricing/page.tsx:1049)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/deals/${deal.id}/add-to-pricing (src/app/(dashboard)/pricing/page.tsx:1049)"}, "fullDescription": {"text": "`src/app/(dashboard)/pricing/page.tsx:1049` calls `POST /api/v1/deals/${deal.id}/add-to-pricing` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals/<p>/add-to-pricing`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e1695062ffc281ef", "name": "Dangling fetch: DELETE /api/v1/pricing/additional-sales/${sale.id} (src/app/(dashboard)/pricing/page.tsx:1184)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/pricing/additional-sales/${sale.id} (src/app/(dashboard)/pricing/page.tsx:1184)"}, "fullDescription": {"text": "`src/app/(dashboard)/pricing/page.tsx:1184` calls `DELETE /api/v1/pricing/additional-sales/${sale.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pricing/additional-sales/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6a77669139d6ad3e", "name": "Dangling fetch: GET /api/v1/invoices/stats (src/app/(dashboard)/invoices/page.tsx:117)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/invoices/stats (src/app/(dashboard)/invoices/page.tsx:117)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/page.tsx:117` calls `GET /api/v1/invoices/stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/invoices/stats`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-541b5625c39e685c", "name": "Dangling fetch: DELETE /api/v1/invoices/${deleteId} (src/app/(dashboard)/invoices/page.tsx:152)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/invoices/${deleteId} (src/app/(dashboard)/invoices/page.tsx:152)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/page.tsx:152` calls `DELETE /api/v1/invoices/${deleteId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/invoices/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6b4dba79d3bdf673", "name": "Dangling fetch: PUT /api/v1/invoices/${editInvoice.id} (src/app/(dashboard)/invoices/page.tsx:183)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/invoices/${editInvoice.id} (src/app/(dashboard)/invoices/page.tsx:183)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/page.tsx:183` calls `PUT /api/v1/invoices/${editInvoice.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/invoices/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4efea89af215e12d", "name": "Dangling fetch: GET /api/v1/recurring-invoices (src/app/(dashboard)/invoices/recurring/page.tsx:123)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/recurring-invoices (src/app/(dashboard)/invoices/recurring/page.tsx:123)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/recurring/page.tsx:123` calls `GET /api/v1/recurring-invoices` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/recurring-invoices`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9f58a7a7c25793c1", "name": "Dangling fetch: GET /api/v1/companies?limit=500 (src/app/(dashboard)/invoices/recurring/page.tsx:139)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/companies?limit=500 (src/app/(dashboard)/invoices/recurring/page.tsx:139)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/recurring/page.tsx:139` calls `GET /api/v1/companies?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/companies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bc83dc8546a811a8", "name": "Dangling fetch: POST /api/v1/recurring-invoices (src/app/(dashboard)/invoices/recurring/page.tsx:179)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/recurring-invoices (src/app/(dashboard)/invoices/recurring/page.tsx:179)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/recurring/page.tsx:179` calls `POST /api/v1/recurring-invoices` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/recurring-invoices`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ddfb621c1b63ebe3", "name": "Dangling fetch: PUT /api/v1/recurring-invoices/${rule.id} (src/app/(dashboard)/invoices/recurring/page.tsx:199)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/recurring-invoices/${rule.id} (src/app/(dashboard)/invoices/recurring/page.tsx:199)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/recurring/page.tsx:199` calls `PUT /api/v1/recurring-invoices/${rule.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/recurring-invoices/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ad392ab59a495680", "name": "Dangling fetch: DELETE /api/v1/recurring-invoices/${deleteId} (src/app/(dashboard)/invoices/recurring/page.tsx:212)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/recurring-invoices/${deleteId} (src/app/(dashboard)/invoices/recurring/page.tsx:212)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/recurring/page.tsx:212` calls `DELETE /api/v1/recurring-invoices/${deleteId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/recurring-invoices/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1d8352b7c7f54450", "name": "Dangling fetch: POST /api/v1/recurring-invoices/generate (src/app/(dashboard)/invoices/recurring/page.tsx:224)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/recurring-invoices/generate (src/app/(dashboard)/invoices/recurring/page.tsx:224)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/recurring/page.tsx:224` calls `POST /api/v1/recurring-invoices/generate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/recurring-invoices/generate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4a0be4792902830f", "name": "Dangling fetch: PUT /api/v1/recurring-invoices/${id} (src/app/(dashboard)/invoices/recurring/page.tsx:259)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/recurring-invoices/${id} (src/app/(dashboard)/invoices/recurring/page.tsx:259)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/recurring/page.tsx:259` calls `PUT /api/v1/recurring-invoices/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/recurring-invoices/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ab6c568a36d19fbc", "name": "Dangling fetch: GET /api/v1/invoices/${invoiceId} (src/app/(dashboard)/invoices/[id]/page.tsx:391)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/invoices/${invoiceId} (src/app/(dashboard)/invoices/[id]/page.tsx:391)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/[id]/page.tsx:391` calls `GET /api/v1/invoices/${invoiceId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/invoices/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ef4e7ef25effc5c1", "name": "Dangling fetch: GET /api/v1/audit-log?entityType=invoice&entityId=${invoiceId} (src/app/(dashboard)/invoices/[id]/page.t", "shortDescription": {"text": "Dangling fetch: GET /api/v1/audit-log?entityType=invoice&entityId=${invoiceId} (src/app/(dashboard)/invoices/[id]/page.tsx:418)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/[id]/page.tsx:418` calls `GET /api/v1/audit-log?entityType=invoice&entityId=${invoiceId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/audit-log`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fa429beace4280f0", "name": "Dangling fetch: GET /api/v1/invoices/${invoiceId}/chain (src/app/(dashboard)/invoices/[id]/page.tsx:442)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/invoices/${invoiceId}/chain (src/app/(dashboard)/invoices/[id]/page.tsx:442)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/[id]/page.tsx:442` calls `GET /api/v1/invoices/${invoiceId}/chain` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/invoices/<p>/chain`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-98a3856cf3cc62e0", "name": "Dangling fetch: POST /api/v1/invoices/${invoiceId}/chain (src/app/(dashboard)/invoices/[id]/page.tsx:521)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/invoices/${invoiceId}/chain (src/app/(dashboard)/invoices/[id]/page.tsx:521)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/[id]/page.tsx:521` calls `POST /api/v1/invoices/${invoiceId}/chain` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/invoices/<p>/chain`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3c4a5d765bb7e0d4", "name": "Dangling fetch: PUT /api/v1/journeys/${chainData.journey.id} (src/app/(dashboard)/invoices/[id]/page.tsx:549)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/journeys/${chainData.journey.id} (src/app/(dashboard)/invoices/[id]/page.tsx:549)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/[id]/page.tsx:549` calls `PUT /api/v1/journeys/${chainData.journey.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/journeys/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-13b32489aec9f951", "name": "Dangling fetch: POST /api/v1/invoices/${invoiceId}/chain (src/app/(dashboard)/invoices/[id]/page.tsx:570)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/invoices/${invoiceId}/chain (src/app/(dashboard)/invoices/[id]/page.tsx:570)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/[id]/page.tsx:570` calls `POST /api/v1/invoices/${invoiceId}/chain` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/invoices/<p>/chain`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ebc86bc527cbeb5c", "name": "Dangling fetch: DELETE /api/v1/invoices/${invoiceId}/chain (src/app/(dashboard)/invoices/[id]/page.tsx:596)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/invoices/${invoiceId}/chain (src/app/(dashboard)/invoices/[id]/page.tsx:596)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/[id]/page.tsx:596` calls `DELETE /api/v1/invoices/${invoiceId}/chain` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/invoices/<p>/chain`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a01808bd86cedaba", "name": "Dangling fetch: DELETE /api/v1/invoices/${invoiceId} (src/app/(dashboard)/invoices/[id]/page.tsx:679)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/invoices/${invoiceId} (src/app/(dashboard)/invoices/[id]/page.tsx:679)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/[id]/page.tsx:679` calls `DELETE /api/v1/invoices/${invoiceId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/invoices/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e13b367d37f0973e", "name": "Dangling fetch: POST /api/v1/invoices/${invoiceId}/duplicate (src/app/(dashboard)/invoices/[id]/page.tsx:692)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/invoices/${invoiceId}/duplicate (src/app/(dashboard)/invoices/[id]/page.tsx:692)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/[id]/page.tsx:692` calls `POST /api/v1/invoices/${invoiceId}/duplicate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/invoices/<p>/duplicate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c475e21d6ad04ff3", "name": "Dangling fetch: PUT /api/v1/invoices/${invoiceId} (src/app/(dashboard)/invoices/[id]/page.tsx:722)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/invoices/${invoiceId} (src/app/(dashboard)/invoices/[id]/page.tsx:722)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/[id]/page.tsx:722` calls `PUT /api/v1/invoices/${invoiceId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/invoices/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bae0e54cb2d2f987", "name": "Dangling fetch: POST /api/v1/invoices/${invoiceId}/payments (src/app/(dashboard)/invoices/[id]/page.tsx:760)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/invoices/${invoiceId}/payments (src/app/(dashboard)/invoices/[id]/page.tsx:760)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/[id]/page.tsx:760` calls `POST /api/v1/invoices/${invoiceId}/payments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/invoices/<p>/payments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f62259f914774fb7", "name": "Dangling fetch: POST /api/v1/invoices/${invoiceId}/send (src/app/(dashboard)/invoices/[id]/page.tsx:795)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/invoices/${invoiceId}/send (src/app/(dashboard)/invoices/[id]/page.tsx:795)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/[id]/page.tsx:795` calls `POST /api/v1/invoices/${invoiceId}/send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/invoices/<p>/send`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ba4ae3540f42c185", "name": "Dangling fetch: GET /api/v1/invoices/${invoiceId} (src/app/(dashboard)/invoices/[id]/edit/page.tsx:93)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/invoices/${invoiceId} (src/app/(dashboard)/invoices/[id]/edit/page.tsx:93)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/[id]/edit/page.tsx:93` calls `GET /api/v1/invoices/${invoiceId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/invoices/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7625796a941e9124", "name": "Dangling fetch: GET /api/v1/companies?limit=500 (src/app/(dashboard)/invoices/[id]/edit/page.tsx:138)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/companies?limit=500 (src/app/(dashboard)/invoices/[id]/edit/page.tsx:138)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/[id]/edit/page.tsx:138` calls `GET /api/v1/companies?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/companies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-61cb64bdac7b1f90", "name": "Dangling fetch: GET /api/v1/deals?limit=500 (src/app/(dashboard)/invoices/[id]/edit/page.tsx:139)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/deals?limit=500 (src/app/(dashboard)/invoices/[id]/edit/page.tsx:139)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/[id]/edit/page.tsx:139` calls `GET /api/v1/deals?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d60ec6bc009a91bc", "name": "Dangling fetch: GET /api/v1/products?limit=500 (src/app/(dashboard)/invoices/[id]/edit/page.tsx:140)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/products?limit=500 (src/app/(dashboard)/invoices/[id]/edit/page.tsx:140)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/[id]/edit/page.tsx:140` calls `GET /api/v1/products?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-393859a6a9e7102e", "name": "Dangling fetch: GET /api/v1/contacts?companyId=${company} (src/app/(dashboard)/invoices/[id]/edit/page.tsx:146)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contacts?companyId=${company} (src/app/(dashboard)/invoices/[id]/edit/page.tsx:146)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/[id]/edit/page.tsx:146` calls `GET /api/v1/contacts?companyId=${company}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contacts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7a5df3d48c1d3c20", "name": "Dangling fetch: GET /api/v1/contracts?companyId=${company}&limit=100 (src/app/(dashboard)/invoices/[id]/edit/page.tsx:15", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contracts?companyId=${company}&limit=100 (src/app/(dashboard)/invoices/[id]/edit/page.tsx:152)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/[id]/edit/page.tsx:152` calls `GET /api/v1/contracts?companyId=${company}&limit=100` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7c69742b7024bdee", "name": "Dangling fetch: PUT /api/v1/invoices/${invoiceId} (src/app/(dashboard)/invoices/[id]/edit/page.tsx:227)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/invoices/${invoiceId} (src/app/(dashboard)/invoices/[id]/edit/page.tsx:227)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/[id]/edit/page.tsx:227` calls `PUT /api/v1/invoices/${invoiceId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/invoices/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0c97b18dcb9a162e", "name": "Dangling fetch: GET /api/v1/companies?limit=500 (src/app/(dashboard)/invoices/create/page.tsx:148)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/companies?limit=500 (src/app/(dashboard)/invoices/create/page.tsx:148)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/create/page.tsx:148` calls `GET /api/v1/companies?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/companies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-297e9bb6b670d096", "name": "Dangling fetch: GET /api/v1/deals?companyId=${company}&limit=100 (src/app/(dashboard)/invoices/create/page.tsx:161)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/deals?companyId=${company}&limit=100 (src/app/(dashboard)/invoices/create/page.tsx:161)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/create/page.tsx:161` calls `GET /api/v1/deals?companyId=${company}&limit=100` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/deals`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ca48ae598d394ff0", "name": "Dangling fetch: GET /api/v1/products?limit=500 (src/app/(dashboard)/invoices/create/page.tsx:170)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/products?limit=500 (src/app/(dashboard)/invoices/create/page.tsx:170)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/create/page.tsx:170` calls `GET /api/v1/products?limit=500` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-30ba52edc59cae71", "name": "Dangling fetch: GET /api/v1/invoices/next-number (src/app/(dashboard)/invoices/create/page.tsx:179)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/invoices/next-number (src/app/(dashboard)/invoices/create/page.tsx:179)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/create/page.tsx:179` calls `GET /api/v1/invoices/next-number` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/invoices/next-number`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f0189797210d61af", "name": "Dangling fetch: GET /api/v1/contacts?companyId=${company} (src/app/(dashboard)/invoices/create/page.tsx:194)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contacts?companyId=${company} (src/app/(dashboard)/invoices/create/page.tsx:194)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/create/page.tsx:194` calls `GET /api/v1/contacts?companyId=${company}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contacts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-53896ae309cd2dff", "name": "Dangling fetch: GET /api/v1/contracts?companyId=${company}&limit=100 (src/app/(dashboard)/invoices/create/page.tsx:207)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/contracts?companyId=${company}&limit=100 (src/app/(dashboard)/invoices/create/page.tsx:207)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/create/page.tsx:207` calls `GET /api/v1/contracts?companyId=${company}&limit=100` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/contracts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9e26a00940d97c53", "name": "Dangling fetch: POST /api/v1/invoices (src/app/(dashboard)/invoices/create/page.tsx:390)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/invoices (src/app/(dashboard)/invoices/create/page.tsx:390)"}, "fullDescription": {"text": "`src/app/(dashboard)/invoices/create/page.tsx:390` calls `POST /api/v1/invoices` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/invoices`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bfe2632d1c37d894", "name": "Dangling fetch: GET /api/v1/pitch/${token} (src/app/pitch/[token]/page.tsx:13)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/pitch/${token} (src/app/pitch/[token]/page.tsx:13)"}, "fullDescription": {"text": "`src/app/pitch/[token]/page.tsx:13` calls `GET /api/v1/pitch/${token}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pitch/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1df3cbfe61a67ab0", "name": "Dangling fetch: GET /api/v1/sign/${encodeURIComponent(rawToken)} (src/app/sign/[token]/page.tsx:236)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/sign/${encodeURIComponent(rawToken)} (src/app/sign/[token]/page.tsx:236)"}, "fullDescription": {"text": "`src/app/sign/[token]/page.tsx:236` calls `GET /api/v1/sign/${encodeURIComponent(rawToken)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/sign/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-acee95bafb80cc20", "name": "Dangling fetch: POST /api/v1/sign/${encodeURIComponent(rawToken)} (src/app/sign/[token]/page.tsx:285)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/sign/${encodeURIComponent(rawToken)} (src/app/sign/[token]/page.tsx:285)"}, "fullDescription": {"text": "`src/app/sign/[token]/page.tsx:285` calls `POST /api/v1/sign/${encodeURIComponent(rawToken)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/sign/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6590d08246a5bf16", "name": "Dangling fetch: POST /api/v1/sign/${encodeURIComponent(rawToken)}/decline (src/app/sign/[token]/page.tsx:307)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/sign/${encodeURIComponent(rawToken)}/decline (src/app/sign/[token]/page.tsx:307)"}, "fullDescription": {"text": "`src/app/sign/[token]/page.tsx:307` calls `POST /api/v1/sign/${encodeURIComponent(rawToken)}/decline` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/sign/<p>/decline`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a55a75a77fcee6f9", "name": "Dangling fetch: POST /api/v1/public/surveys/${slug} (src/app/s/[slug]/survey-form.tsx:73)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/public/surveys/${slug} (src/app/s/[slug]/survey-form.tsx:73)"}, "fullDescription": {"text": "`src/app/s/[slug]/survey-form.tsx:73` calls `POST /api/v1/public/surveys/${slug}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/surveys/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-45f5c263f3231eb6", "name": "Dangling fetch: GET /api/v1/public/web-chat/messages?sessionId=${parsed.sessionId}&after=0 (src/app/embed/chat/[key]/emb", "shortDescription": {"text": "Dangling fetch: GET /api/v1/public/web-chat/messages?sessionId=${parsed.sessionId}&after=0 (src/app/embed/chat/[key]/embed-chat-client.tsx:69)"}, "fullDescription": {"text": "`src/app/embed/chat/[key]/embed-chat-client.tsx:69` calls `GET /api/v1/public/web-chat/messages?sessionId=${parsed.sessionId}&after=0` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/web-chat/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b25cf911a3b91b11", "name": "Dangling fetch: POST /api/v1/public/web-chat/session (src/app/embed/chat/[key]/embed-chat-client.tsx:92)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/public/web-chat/session (src/app/embed/chat/[key]/embed-chat-client.tsx:92)"}, "fullDescription": {"text": "`src/app/embed/chat/[key]/embed-chat-client.tsx:92` calls `POST /api/v1/public/web-chat/session` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/web-chat/session`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4bfcb6eb6d0c7738", "name": "Dangling fetch: GET /api/v1/public/web-chat/typing?sessionId=${sessionId} (src/app/embed/chat/[key]/embed-chat-client.ts", "shortDescription": {"text": "Dangling fetch: GET /api/v1/public/web-chat/typing?sessionId=${sessionId} (src/app/embed/chat/[key]/embed-chat-client.tsx:125)"}, "fullDescription": {"text": "`src/app/embed/chat/[key]/embed-chat-client.tsx:125` calls `GET /api/v1/public/web-chat/typing?sessionId=${sessionId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/web-chat/typing`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-82354c5112805835", "name": "Dangling fetch: GET /api/v1/public/web-chat/messages?sessionId=${sessionId}&after=${lastTs} (src/app/embed/chat/[key]/em", "shortDescription": {"text": "Dangling fetch: GET /api/v1/public/web-chat/messages?sessionId=${sessionId}&after=${lastTs} (src/app/embed/chat/[key]/embed-chat-client.tsx:141)"}, "fullDescription": {"text": "`src/app/embed/chat/[key]/embed-chat-client.tsx:141` calls `GET /api/v1/public/web-chat/messages?sessionId=${sessionId}&after=${lastTs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/web-chat/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6c7abd557790e2d2", "name": "Dangling fetch: POST /api/v1/public/web-chat/upload (src/app/embed/chat/[key]/embed-chat-client.tsx:175)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/public/web-chat/upload (src/app/embed/chat/[key]/embed-chat-client.tsx:175)"}, "fullDescription": {"text": "`src/app/embed/chat/[key]/embed-chat-client.tsx:175` calls `POST /api/v1/public/web-chat/upload` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/web-chat/upload`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d18fbdfdda30bc1a", "name": "Dangling fetch: POST /api/v1/public/web-chat/message (src/app/embed/chat/[key]/embed-chat-client.tsx:202)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/public/web-chat/message (src/app/embed/chat/[key]/embed-chat-client.tsx:202)"}, "fullDescription": {"text": "`src/app/embed/chat/[key]/embed-chat-client.tsx:202` calls `POST /api/v1/public/web-chat/message` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/web-chat/message`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-379ee51dc68bc95c", "name": "Dangling fetch: POST /api/v1/public/web-chat/typing (src/app/embed/chat/[key]/embed-chat-client.tsx:356)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/public/web-chat/typing (src/app/embed/chat/[key]/embed-chat-client.tsx:356)"}, "fullDescription": {"text": "`src/app/embed/chat/[key]/embed-chat-client.tsx:356` calls `POST /api/v1/public/web-chat/typing` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/web-chat/typing`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ac2a29760532272f", "name": "Dangling fetch: GET /api/v1/admin/plans (src/app/admin/tenants/new/page.tsx:55)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/admin/plans (src/app/admin/tenants/new/page.tsx:55)"}, "fullDescription": {"text": "`src/app/admin/tenants/new/page.tsx:55` calls `GET /api/v1/admin/plans` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/admin/plans`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a502157687a4ef8e", "name": "Dangling fetch: POST /api/v1/admin/upload-logo (src/app/admin/tenants/new/page.tsx:76)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/upload-logo (src/app/admin/tenants/new/page.tsx:76)"}, "fullDescription": {"text": "`src/app/admin/tenants/new/page.tsx:76` calls `POST /api/v1/admin/upload-logo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/admin/upload-logo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-176bf602900766e9", "name": "Dangling fetch: POST /api/v1/admin/tenants (src/app/admin/tenants/new/page.tsx:137)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/tenants (src/app/admin/tenants/new/page.tsx:137)"}, "fullDescription": {"text": "`src/app/admin/tenants/new/page.tsx:137` calls `POST /api/v1/admin/tenants` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/admin/tenants`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0f721927565e18cd", "name": "Dangling fetch: PUT /api/v1/admin/tenants/${tenantId} (src/app/admin/tenants/[id]/tenant-actions.tsx:41)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/admin/tenants/${tenantId} (src/app/admin/tenants/[id]/tenant-actions.tsx:41)"}, "fullDescription": {"text": "`src/app/admin/tenants/[id]/tenant-actions.tsx:41` calls `PUT /api/v1/admin/tenants/${tenantId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/admin/tenants/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-09e5eadf2880827b", "name": "Dangling fetch: PUT /api/v1/admin/tenants/${tenantId} (src/app/admin/tenants/[id]/tenant-actions.tsx:47)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/admin/tenants/${tenantId} (src/app/admin/tenants/[id]/tenant-actions.tsx:47)"}, "fullDescription": {"text": "`src/app/admin/tenants/[id]/tenant-actions.tsx:47` calls `PUT /api/v1/admin/tenants/${tenantId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/admin/tenants/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2ba0ba20088032fb", "name": "Dangling fetch: DELETE /api/v1/admin/tenants/${tenantId} (src/app/admin/tenants/[id]/tenant-actions.tsx:65)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/admin/tenants/${tenantId} (src/app/admin/tenants/[id]/tenant-actions.tsx:65)"}, "fullDescription": {"text": "`src/app/admin/tenants/[id]/tenant-actions.tsx:65` calls `DELETE /api/v1/admin/tenants/${tenantId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/admin/tenants/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-89dde253a4a3cd39", "name": "Dangling fetch: POST /api/v1/admin/tenants/${tenantId}/cancel-deletion (src/app/admin/tenants/[id]/tenant-actions.tsx:83", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/tenants/${tenantId}/cancel-deletion (src/app/admin/tenants/[id]/tenant-actions.tsx:83)"}, "fullDescription": {"text": "`src/app/admin/tenants/[id]/tenant-actions.tsx:83` calls `POST /api/v1/admin/tenants/${tenantId}/cancel-deletion` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/admin/tenants/<p>/cancel-deletion`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-18f6b3eade711002", "name": "Dangling fetch: DELETE /api/v1/admin/tenants/${tenantId}?force=true&confirm=${encodeURIComponent(slugConfirm)} (src/app/", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/admin/tenants/${tenantId}?force=true&confirm=${encodeURIComponent(slugConfirm)} (src/app/admin/tenants/[id]/tenant-actions.tsx:100)"}, "fullDescription": {"text": "`src/app/admin/tenants/[id]/tenant-actions.tsx:100` calls `DELETE /api/v1/admin/tenants/${tenantId}?force=true&confirm=${encodeURIComponent(slugConfirm)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/admin/tenants/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9a6ac5d1e9524482", "name": "Dangling fetch: POST /api/v1/admin/tenants/${tenantId}/clear-demo (src/app/admin/tenants/[id]/tenant-actions.tsx:126)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/tenants/${tenantId}/clear-demo (src/app/admin/tenants/[id]/tenant-actions.tsx:126)"}, "fullDescription": {"text": "`src/app/admin/tenants/[id]/tenant-actions.tsx:126` calls `POST /api/v1/admin/tenants/${tenantId}/clear-demo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/admin/tenants/<p>/clear-demo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fb0b92c353d303ab", "name": "Dangling fetch: GET /api/v1/admin/tenants/${tenantId}/export (src/app/admin/tenants/[id]/tenant-actions.tsx:148)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/admin/tenants/${tenantId}/export (src/app/admin/tenants/[id]/tenant-actions.tsx:148)"}, "fullDescription": {"text": "`src/app/admin/tenants/[id]/tenant-actions.tsx:148` calls `GET /api/v1/admin/tenants/${tenantId}/export` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/admin/tenants/<p>/export`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d9c3a50205d98069", "name": "Dangling fetch: GET /api/v1/admin/tenants/${tenantId} (src/app/admin/tenants/[id]/edit/page.tsx:113)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/admin/tenants/${tenantId} (src/app/admin/tenants/[id]/edit/page.tsx:113)"}, "fullDescription": {"text": "`src/app/admin/tenants/[id]/edit/page.tsx:113` calls `GET /api/v1/admin/tenants/${tenantId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/admin/tenants/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fe35695ab501e0a2", "name": "Dangling fetch: POST /api/v1/admin/upload-logo (src/app/admin/tenants/[id]/edit/page.tsx:167)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/upload-logo (src/app/admin/tenants/[id]/edit/page.tsx:167)"}, "fullDescription": {"text": "`src/app/admin/tenants/[id]/edit/page.tsx:167` calls `POST /api/v1/admin/upload-logo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/admin/upload-logo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0dd2e220be3e6813", "name": "Dangling fetch: PUT /api/v1/admin/tenants/${tenantId} (src/app/admin/tenants/[id]/edit/page.tsx:204)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/admin/tenants/${tenantId} (src/app/admin/tenants/[id]/edit/page.tsx:204)"}, "fullDescription": {"text": "`src/app/admin/tenants/[id]/edit/page.tsx:204` calls `PUT /api/v1/admin/tenants/${tenantId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/admin/tenants/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2c20f65c56d2cd89", "name": "Dangling fetch: DELETE /api/v1/admin/plans/${p.id} (src/app/admin/plans/plans-client.tsx:61)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/admin/plans/${p.id} (src/app/admin/plans/plans-client.tsx:61)"}, "fullDescription": {"text": "`src/app/admin/plans/plans-client.tsx:61` calls `DELETE /api/v1/admin/plans/${p.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/admin/plans/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4577c2b12b14f4d3", "name": "Dangling fetch: DELETE /api/v1/public/portal-auth (src/app/portal/layout.tsx:37)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/public/portal-auth (src/app/portal/layout.tsx:37)"}, "fullDescription": {"text": "`src/app/portal/layout.tsx:37` calls `DELETE /api/v1/public/portal-auth` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/portal-auth`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-13cf9dec6ecda2fd", "name": "Dangling fetch: POST /api/v1/public/portal-auth (src/app/portal/login/page.tsx:27)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/public/portal-auth (src/app/portal/login/page.tsx:27)"}, "fullDescription": {"text": "`src/app/portal/login/page.tsx:27` calls `POST /api/v1/public/portal-auth` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/portal-auth`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-93c50444a1647415", "name": "Dangling fetch: GET /api/v1/public/portal-kb (src/app/portal/knowledge-base/page.tsx:31)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/public/portal-kb (src/app/portal/knowledge-base/page.tsx:31)"}, "fullDescription": {"text": "`src/app/portal/knowledge-base/page.tsx:31` calls `GET /api/v1/public/portal-kb` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/portal-kb`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f5ad018ffe82314e", "name": "Dangling fetch: GET /api/v1/public/portal-kb?id=${article.id} (src/app/portal/knowledge-base/page.tsx:39)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/public/portal-kb?id=${article.id} (src/app/portal/knowledge-base/page.tsx:39)"}, "fullDescription": {"text": "`src/app/portal/knowledge-base/page.tsx:39` calls `GET /api/v1/public/portal-kb?id=${article.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/portal-kb`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6eb8f985908bbeee", "name": "Dangling fetch: POST /api/v1/public/portal-unsubscribe (src/app/portal/unsubscribe/page.tsx:31)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/public/portal-unsubscribe (src/app/portal/unsubscribe/page.tsx:31)"}, "fullDescription": {"text": "`src/app/portal/unsubscribe/page.tsx:31` calls `POST /api/v1/public/portal-unsubscribe` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/portal-unsubscribe`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-caab10d4f7c32445", "name": "Dangling fetch: POST /api/v1/public/portal-chat (src/app/portal/chat/page.tsx:50)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/public/portal-chat (src/app/portal/chat/page.tsx:50)"}, "fullDescription": {"text": "`src/app/portal/chat/page.tsx:50` calls `POST /api/v1/public/portal-chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/portal-chat`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f4dd0203e3f09a91", "name": "Dangling fetch: GET /api/v1/public/portal-auth/set-password?token=${token} (src/app/portal/set-password/page.tsx:54)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/public/portal-auth/set-password?token=${token} (src/app/portal/set-password/page.tsx:54)"}, "fullDescription": {"text": "`src/app/portal/set-password/page.tsx:54` calls `GET /api/v1/public/portal-auth/set-password?token=${token}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/portal-auth/set-password`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-663e31aa1c55dca9", "name": "Dangling fetch: POST /api/v1/public/portal-auth/set-password (src/app/portal/set-password/page.tsx:77)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/public/portal-auth/set-password (src/app/portal/set-password/page.tsx:77)"}, "fullDescription": {"text": "`src/app/portal/set-password/page.tsx:77` calls `POST /api/v1/public/portal-auth/set-password` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/portal-auth/set-password`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3852fdb259bf6a41", "name": "Dangling fetch: GET /api/v1/public/portal-tickets (src/app/portal/tickets/page.tsx:64)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/public/portal-tickets (src/app/portal/tickets/page.tsx:64)"}, "fullDescription": {"text": "`src/app/portal/tickets/page.tsx:64` calls `GET /api/v1/public/portal-tickets` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/portal-tickets`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f2e09d449ccd03ae", "name": "Dangling fetch: GET /api/v1/public/portal-config (src/app/portal/tickets/page.tsx:74)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/public/portal-config (src/app/portal/tickets/page.tsx:74)"}, "fullDescription": {"text": "`src/app/portal/tickets/page.tsx:74` calls `GET /api/v1/public/portal-config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/portal-config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0d368ab9c4f26f0a", "name": "Dangling fetch: POST /api/v1/public/portal-tickets (src/app/portal/tickets/page.tsx:97)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/public/portal-tickets (src/app/portal/tickets/page.tsx:97)"}, "fullDescription": {"text": "`src/app/portal/tickets/page.tsx:97` calls `POST /api/v1/public/portal-tickets` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/portal-tickets`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b576337f3bfe3029", "name": "Dangling fetch: GET /api/v1/public/portal-tickets/${ticketId} (src/app/portal/tickets/[id]/page.tsx:75)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/public/portal-tickets/${ticketId} (src/app/portal/tickets/[id]/page.tsx:75)"}, "fullDescription": {"text": "`src/app/portal/tickets/[id]/page.tsx:75` calls `GET /api/v1/public/portal-tickets/${ticketId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/portal-tickets/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5ba647ddabc9ad68", "name": "Dangling fetch: POST /api/v1/public/portal-tickets/${ticketId} (src/app/portal/tickets/[id]/page.tsx:105)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/public/portal-tickets/${ticketId} (src/app/portal/tickets/[id]/page.tsx:105)"}, "fullDescription": {"text": "`src/app/portal/tickets/[id]/page.tsx:105` calls `POST /api/v1/public/portal-tickets/${ticketId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/portal-tickets/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b4e14139890b96b0", "name": "Dangling fetch: PATCH /api/v1/public/portal-tickets/${ticketId} (src/app/portal/tickets/[id]/page.tsx:122)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/public/portal-tickets/${ticketId} (src/app/portal/tickets/[id]/page.tsx:122)"}, "fullDescription": {"text": "`src/app/portal/tickets/[id]/page.tsx:122` calls `PATCH /api/v1/public/portal-tickets/${ticketId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/portal-tickets/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3c8ca1b61714f460", "name": "Dangling fetch: POST /api/v1/public/portal-auth/register (src/app/portal/register/page.tsx:24)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/public/portal-auth/register (src/app/portal/register/page.tsx:24)"}, "fullDescription": {"text": "`src/app/portal/register/page.tsx:24` calls `POST /api/v1/public/portal-auth/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/portal-auth/register`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ab3fad6b729ba3d9", "name": "Dangling fetch: POST /api/v1/auth/reset-password (src/app/(auth)/reset-password/page.tsx:76)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/auth/reset-password (src/app/(auth)/reset-password/page.tsx:76)"}, "fullDescription": {"text": "`src/app/(auth)/reset-password/page.tsx:76` calls `POST /api/v1/auth/reset-password` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/auth/reset-password`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-66bac20d896c1159", "name": "Dangling fetch: GET /api/v1/settings/auth-methods (src/app/(auth)/login/page.tsx:35)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/settings/auth-methods (src/app/(auth)/login/page.tsx:35)"}, "fullDescription": {"text": "`src/app/(auth)/login/page.tsx:35` calls `GET /api/v1/settings/auth-methods` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/auth-methods`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-20e15384b75637b9", "name": "Dangling fetch: GET /api/v1/public/tenant-branding?slug=${match[1]} (src/app/(auth)/login/page.tsx:46)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/public/tenant-branding?slug=${match[1]} (src/app/(auth)/login/page.tsx:46)"}, "fullDescription": {"text": "`src/app/(auth)/login/page.tsx:46` calls `GET /api/v1/public/tenant-branding?slug=${match[1]}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/tenant-branding`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a84eccb2cd9ddd80", "name": "Dangling fetch: POST /api/v1/auth/2fa (src/app/(auth)/login/setup-2fa/page.tsx:37)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/auth/2fa (src/app/(auth)/login/setup-2fa/page.tsx:37)"}, "fullDescription": {"text": "`src/app/(auth)/login/setup-2fa/page.tsx:37` calls `POST /api/v1/auth/2fa` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/auth/2fa`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b9a0ba141195ceb2", "name": "Dangling fetch: POST /api/v1/auth/2fa (src/app/(auth)/login/setup-2fa/page.tsx:62)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/auth/2fa (src/app/(auth)/login/setup-2fa/page.tsx:62)"}, "fullDescription": {"text": "`src/app/(auth)/login/setup-2fa/page.tsx:62` calls `POST /api/v1/auth/2fa` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/auth/2fa`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-55fb2cd9d57cee3c", "name": "Dangling fetch: POST /api/v1/auth/resend-sms-2fa (src/app/(auth)/login/verify-2fa/page.tsx:78)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/auth/resend-sms-2fa (src/app/(auth)/login/verify-2fa/page.tsx:78)"}, "fullDescription": {"text": "`src/app/(auth)/login/verify-2fa/page.tsx:78` calls `POST /api/v1/auth/resend-sms-2fa` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/auth/resend-sms-2fa`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f332b9f73e44525f", "name": "Dangling fetch: POST /api/v1/auth/forgot-password (src/app/(auth)/forgot-password/page.tsx:22)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/auth/forgot-password (src/app/(auth)/forgot-password/page.tsx:22)"}, "fullDescription": {"text": "`src/app/(auth)/forgot-password/page.tsx:22` calls `POST /api/v1/auth/forgot-password` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/auth/forgot-password`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-362eee9fc84b339e", "name": "Dangling fetch: POST /api/v1/demo-request (src/app/(marketing)/demo/page.tsx:43)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/demo-request (src/app/(marketing)/demo/page.tsx:43)"}, "fullDescription": {"text": "`src/app/(marketing)/demo/page.tsx:43` calls `POST /api/v1/demo-request` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/demo-request`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c728db1a3881b33a", "name": "Dangling fetch: POST /api/v1/demo-request (src/app/(marketing)/contact/page.tsx:117)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/demo-request (src/app/(marketing)/contact/page.tsx:117)"}, "fullDescription": {"text": "`src/app/(marketing)/contact/page.tsx:117` calls `POST /api/v1/demo-request` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/demo-request`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b48bf58d008c5d90", "name": "Dangling fetch: POST /api/v1/public/form-submit (src/app/(public)/_custom-domain/page.tsx:229)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/public/form-submit (src/app/(public)/_custom-domain/page.tsx:229)"}, "fullDescription": {"text": "`src/app/(public)/_custom-domain/page.tsx:229` calls `POST /api/v1/public/form-submit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/form-submit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-77b33f2c9b164bbe", "name": "Dangling fetch: POST /api/v1/public/form-submit (src/app/(public)/p/[slug]/page.tsx:117)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/public/form-submit (src/app/(public)/p/[slug]/page.tsx:117)"}, "fullDescription": {"text": "`src/app/(public)/p/[slug]/page.tsx:117` calls `POST /api/v1/public/form-submit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/form-submit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c3f4c1131f0aae37", "name": "Dangling fetch: GET /api/v1/public/events/${params.id}/register (src/app/(public)/events/[id]/register/page.tsx:27)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/public/events/${params.id}/register (src/app/(public)/events/[id]/register/page.tsx:27)"}, "fullDescription": {"text": "`src/app/(public)/events/[id]/register/page.tsx:27` calls `GET /api/v1/public/events/${params.id}/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/events/<p>/register`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7bd1c274146329e1", "name": "Dangling fetch: POST /api/v1/public/events/${params.id}/register (src/app/(public)/events/[id]/register/page.tsx:40)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/public/events/${params.id}/register (src/app/(public)/events/[id]/register/page.tsx:40)"}, "fullDescription": {"text": "`src/app/(public)/events/[id]/register/page.tsx:40` calls `POST /api/v1/public/events/${params.id}/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/public/events/<p>/register`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-72ed912509101346", "name": "Dangling fetch: POST https://api.resend.com/emails (src/lib/email.ts:90)", "shortDescription": {"text": "Dangling fetch: POST https://api.resend.com/emails (src/lib/email.ts:90)"}, "fullDescription": {"text": "`src/lib/email.ts:90` calls `POST https://api.resend.com/emails` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.resend.com/emails`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-468a1b29553aa322", "name": "Dangling fetch: POST https://api.postmarkapp.com/email (src/lib/email.ts:134)", "shortDescription": {"text": "Dangling fetch: POST https://api.postmarkapp.com/email (src/lib/email.ts:134)"}, "fullDescription": {"text": "`src/lib/email.ts:134` calls `POST https://api.postmarkapp.com/email` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.postmarkapp.com/email`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-beb7c020b912b4ba", "name": "Dangling fetch: POST https://graph.facebook.com/v20.0/me/messages?access_token=${pageAccessToken} (src/lib/facebook.ts:1", "shortDescription": {"text": "Dangling fetch: POST https://graph.facebook.com/v20.0/me/messages?access_token=${pageAccessToken} (src/lib/facebook.ts:10)"}, "fullDescription": {"text": "`src/lib/facebook.ts:10` calls `POST https://graph.facebook.com/v20.0/me/messages?access_token=${pageAccessToken}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.facebook.com/v20.0/me/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4747374aa21d2c3e", "name": "Dangling fetch: POST https://graph.facebook.com/v20.0/me/messages?access_token=${pageAccessToken} (src/lib/facebook.ts:3", "shortDescription": {"text": "Dangling fetch: POST https://graph.facebook.com/v20.0/me/messages?access_token=${pageAccessToken} (src/lib/facebook.ts:33)"}, "fullDescription": {"text": "`src/lib/facebook.ts:33` calls `POST https://graph.facebook.com/v20.0/me/messages?access_token=${pageAccessToken}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.facebook.com/v20.0/me/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-885d0d04046920ed", "name": "Dangling fetch: GET /api/v1/push/vapid-key (src/lib/push-client.ts:36)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/push/vapid-key (src/lib/push-client.ts:36)"}, "fullDescription": {"text": "`src/lib/push-client.ts:36` calls `GET /api/v1/push/vapid-key` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/push/vapid-key`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cab84be416bcae50", "name": "Dangling fetch: POST /api/v1/push/subscribe (src/lib/push-client.ts:58)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/push/subscribe (src/lib/push-client.ts:58)"}, "fullDescription": {"text": "`src/lib/push-client.ts:58` calls `POST /api/v1/push/subscribe` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/push/subscribe`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2ef9072201ab63ea", "name": "Dangling fetch: DELETE /api/v1/push/subscribe?endpoint=${encodeURIComponent(sub.endpoint)} (src/lib/push-client.ts:75)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/push/subscribe?endpoint=${encodeURIComponent(sub.endpoint)} (src/lib/push-client.ts:75)"}, "fullDescription": {"text": "`src/lib/push-client.ts:75` calls `DELETE /api/v1/push/subscribe?endpoint=${encodeURIComponent(sub.endpoint)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/push/subscribe`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-76b8fa4efd524e60", "name": "Dangling fetch: GET https://api.vk.com/method/messages.send?${params} (src/lib/vkontakte.ts:15)", "shortDescription": {"text": "Dangling fetch: GET https://api.vk.com/method/messages.send?${params} (src/lib/vkontakte.ts:15)"}, "fullDescription": {"text": "`src/lib/vkontakte.ts:15` calls `GET https://api.vk.com/method/messages.send?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.vk.com/method/messages.send`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5ccbc53c94665e8f", "name": "Dangling fetch: POST https://api.telegram.org/bot${ch.botToken}/sendMessage (src/lib/chatbot-autoreply.ts:78)", "shortDescription": {"text": "Dangling fetch: POST https://api.telegram.org/bot${ch.botToken}/sendMessage (src/lib/chatbot-autoreply.ts:78)"}, "fullDescription": {"text": "`src/lib/chatbot-autoreply.ts:78` calls `POST https://api.telegram.org/bot${ch.botToken}/sendMessage` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.telegram.org/bot/<p>/sendmessage`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-94b279ae8e2b5537", "name": "Dangling fetch: POST https://api.telegram.org/bot${tgChannel.botToken}/sendMessage (src/lib/journey-engine.ts:188)", "shortDescription": {"text": "Dangling fetch: POST https://api.telegram.org/bot${tgChannel.botToken}/sendMessage (src/lib/journey-engine.ts:188)"}, "fullDescription": {"text": "`src/lib/journey-engine.ts:188` calls `POST https://api.telegram.org/bot${tgChannel.botToken}/sendMessage` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.telegram.org/bot/<p>/sendmessage`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-82cae28aaaffa8ad", "name": "Dangling fetch: POST https://api.voyageai.com/v1/embeddings (src/lib/ai/embeddings.ts:15)", "shortDescription": {"text": "Dangling fetch: POST https://api.voyageai.com/v1/embeddings (src/lib/ai/embeddings.ts:15)"}, "fullDescription": {"text": "`src/lib/ai/embeddings.ts:15` calls `POST https://api.voyageai.com/v1/embeddings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.voyageai.com/v1/embeddings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-662d3e4494105374", "name": "Dangling fetch: POST https://api.telegram.org/bot${BOT_TOKEN}/sendMessage (src/lib/finance/telegram-notify.ts:127)", "shortDescription": {"text": "Dangling fetch: POST https://api.telegram.org/bot${BOT_TOKEN}/sendMessage (src/lib/finance/telegram-notify.ts:127)"}, "fullDescription": {"text": "`src/lib/finance/telegram-notify.ts:127` calls `POST https://api.telegram.org/bot${BOT_TOKEN}/sendMessage` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.telegram.org/bot/<p>/sendmessage`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c7c2494f91116290", "name": "Dangling fetch: POST https://api.twitter.com/2/oauth2/token (src/lib/social/twitter-poller.ts:47)", "shortDescription": {"text": "Dangling fetch: POST https://api.twitter.com/2/oauth2/token (src/lib/social/twitter-poller.ts:47)"}, "fullDescription": {"text": "`src/lib/social/twitter-poller.ts:47` calls `POST https://api.twitter.com/2/oauth2/token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.twitter.com/<p>/oauth2/token`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c66381db03f2e36a", "name": "Dangling fetch: POST https://open.tiktokapis.com/v2/oauth/token/ (src/lib/social/tiktok-poller.ts:25)", "shortDescription": {"text": "Dangling fetch: POST https://open.tiktokapis.com/v2/oauth/token/ (src/lib/social/tiktok-poller.ts:25)"}, "fullDescription": {"text": "`src/lib/social/tiktok-poller.ts:25` calls `POST https://open.tiktokapis.com/v2/oauth/token/` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/open.tiktokapis.com/v2/oauth/token`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d6c87d1f615fd053", "name": "Dangling fetch: POST https://open.tiktokapis.com/v2/video/list/?fields=id,title,create_time,view_count,like_count,commen", "shortDescription": {"text": "Dangling fetch: POST https://open.tiktokapis.com/v2/video/list/?fields=id,title,create_time,view_count,like_count,comment_count,share_count (src/lib/social/tiktok-poller.ts:60)"}, "fullDescription": {"text": "`src/lib/social/tiktok-poller.ts:60` calls `POST https://open.tiktokapis.com/v2/video/list/?fields=id,title,create_time,view_count,like_count,comment_count,share_count` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/open.tiktokapis.com/v2/video/list`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-467f5409d43693e7", "name": "Dangling fetch: POST https://oauth2.googleapis.com/token (src/lib/social/youtube-poller.ts:23)", "shortDescription": {"text": "Dangling fetch: POST https://oauth2.googleapis.com/token (src/lib/social/youtube-poller.ts:23)"}, "fullDescription": {"text": "`src/lib/social/youtube-poller.ts:23` calls `POST https://oauth2.googleapis.com/token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/oauth2.googleapis.com/token`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-54177c57534d1b7f", "name": "Dangling fetch: GET /api/budgeting/department-owners (src/lib/budgeting/hooks.ts:463)", "shortDescription": {"text": "Dangling fetch: GET /api/budgeting/department-owners (src/lib/budgeting/hooks.ts:463)"}, "fullDescription": {"text": "`src/lib/budgeting/hooks.ts:463` calls `GET /api/budgeting/department-owners` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/department-owners`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ea62ebbfdfbb24d3", "name": "Dangling fetch: POST /api/budgeting/department-owners (src/lib/budgeting/hooks.ts:479)", "shortDescription": {"text": "Dangling fetch: POST /api/budgeting/department-owners (src/lib/budgeting/hooks.ts:479)"}, "fullDescription": {"text": "`src/lib/budgeting/hooks.ts:479` calls `POST /api/budgeting/department-owners` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/department-owners`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4e1e88adca6222e9", "name": "Dangling fetch: DELETE /api/budgeting/department-owners?id=${id} (src/lib/budgeting/hooks.ts:499)", "shortDescription": {"text": "Dangling fetch: DELETE /api/budgeting/department-owners?id=${id} (src/lib/budgeting/hooks.ts:499)"}, "fullDescription": {"text": "`src/lib/budgeting/hooks.ts:499` calls `DELETE /api/budgeting/department-owners?id=${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/department-owners`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-96fcb64080fdf10b", "name": "Dangling fetch: GET /api/budgeting/plans/${planId}/comments (src/lib/budgeting/hooks.ts:528)", "shortDescription": {"text": "Dangling fetch: GET /api/budgeting/plans/${planId}/comments (src/lib/budgeting/hooks.ts:528)"}, "fullDescription": {"text": "`src/lib/budgeting/hooks.ts:528` calls `GET /api/budgeting/plans/${planId}/comments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/plans/<p>/comments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cd1b289379148f0f", "name": "Dangling fetch: POST /api/budgeting/plans/${data.planId}/comments (src/lib/budgeting/hooks.ts:544)", "shortDescription": {"text": "Dangling fetch: POST /api/budgeting/plans/${data.planId}/comments (src/lib/budgeting/hooks.ts:544)"}, "fullDescription": {"text": "`src/lib/budgeting/hooks.ts:544` calls `POST /api/budgeting/plans/${data.planId}/comments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/plans/<p>/comments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-033a92243145b557", "name": "Dangling fetch: GET /api/budgeting/plans/${planId}/versions (src/lib/budgeting/hooks.ts:566)", "shortDescription": {"text": "Dangling fetch: GET /api/budgeting/plans/${planId}/versions (src/lib/budgeting/hooks.ts:566)"}, "fullDescription": {"text": "`src/lib/budgeting/hooks.ts:566` calls `GET /api/budgeting/plans/${planId}/versions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/plans/<p>/versions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-41daa5e65967cc64", "name": "Dangling fetch: POST /api/budgeting/plans/${planId}/create-version (src/lib/budgeting/hooks.ts:592)", "shortDescription": {"text": "Dangling fetch: POST /api/budgeting/plans/${planId}/create-version (src/lib/budgeting/hooks.ts:592)"}, "fullDescription": {"text": "`src/lib/budgeting/hooks.ts:592` calls `POST /api/budgeting/plans/${planId}/create-version` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/plans/<p>/create-version`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-53a62176fbdcd0b0", "name": "Dangling fetch: GET /api/budgeting/plans/${planIdA}/diff?compareWith=${planIdB} (src/lib/budgeting/hooks.ts:612)", "shortDescription": {"text": "Dangling fetch: GET /api/budgeting/plans/${planIdA}/diff?compareWith=${planIdB} (src/lib/budgeting/hooks.ts:612)"}, "fullDescription": {"text": "`src/lib/budgeting/hooks.ts:612` calls `GET /api/budgeting/plans/${planIdA}/diff?compareWith=${planIdB}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/plans/<p>/diff`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-86012dc5c698921e", "name": "Dangling fetch: POST /api/budgeting/exchange-rates (src/lib/budgeting/hooks.ts:678)", "shortDescription": {"text": "Dangling fetch: POST /api/budgeting/exchange-rates (src/lib/budgeting/hooks.ts:678)"}, "fullDescription": {"text": "`src/lib/budgeting/hooks.ts:678` calls `POST /api/budgeting/exchange-rates` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/exchange-rates`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-20b9257cfd888956", "name": "Dangling fetch: GET /api/budgeting/integrations (src/lib/budgeting/hooks.ts:700)", "shortDescription": {"text": "Dangling fetch: GET /api/budgeting/integrations (src/lib/budgeting/hooks.ts:700)"}, "fullDescription": {"text": "`src/lib/budgeting/hooks.ts:700` calls `GET /api/budgeting/integrations` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/integrations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-495f304adf9b9c33", "name": "Dangling fetch: POST /api/budgeting/integrations (src/lib/budgeting/hooks.ts:716)", "shortDescription": {"text": "Dangling fetch: POST /api/budgeting/integrations (src/lib/budgeting/hooks.ts:716)"}, "fullDescription": {"text": "`src/lib/budgeting/hooks.ts:716` calls `POST /api/budgeting/integrations` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/integrations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2a7d12e097ace5a9", "name": "Dangling fetch: POST /api/budgeting/import-csv (src/lib/budgeting/hooks.ts:736)", "shortDescription": {"text": "Dangling fetch: POST /api/budgeting/import-csv (src/lib/budgeting/hooks.ts:736)"}, "fullDescription": {"text": "`src/lib/budgeting/hooks.ts:736` calls `POST /api/budgeting/import-csv` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/import-csv`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-713e49aecf8428e4", "name": "Dangling fetch: POST /api/budgeting/rolling (src/lib/budgeting/hooks.ts:777)", "shortDescription": {"text": "Dangling fetch: POST /api/budgeting/rolling (src/lib/budgeting/hooks.ts:777)"}, "fullDescription": {"text": "`src/lib/budgeting/hooks.ts:777` calls `POST /api/budgeting/rolling` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/rolling`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d1de572be10b5ea9", "name": "Dangling fetch: GET /api/budgeting/rolling?planId=${planId} (src/lib/budgeting/hooks.ts:798)", "shortDescription": {"text": "Dangling fetch: GET /api/budgeting/rolling?planId=${planId} (src/lib/budgeting/hooks.ts:798)"}, "fullDescription": {"text": "`src/lib/budgeting/hooks.ts:798` calls `GET /api/budgeting/rolling?planId=${planId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/rolling`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b83dbfe454d5ac10", "name": "Dangling fetch: POST /api/budgeting/rolling/auto-forecast (src/lib/budgeting/hooks.ts:833)", "shortDescription": {"text": "Dangling fetch: POST /api/budgeting/rolling/auto-forecast (src/lib/budgeting/hooks.ts:833)"}, "fullDescription": {"text": "`src/lib/budgeting/hooks.ts:833` calls `POST /api/budgeting/rolling/auto-forecast` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/rolling/auto-forecast`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-24d8a45f699d557b", "name": "Dangling fetch: PATCH /api/budgeting/rolling (src/lib/budgeting/hooks.ts:853)", "shortDescription": {"text": "Dangling fetch: PATCH /api/budgeting/rolling (src/lib/budgeting/hooks.ts:853)"}, "fullDescription": {"text": "`src/lib/budgeting/hooks.ts:853` calls `PATCH /api/budgeting/rolling` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/rolling`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-57eafdc05491e4b1", "name": "Dangling fetch: PATCH /api/budgeting/rolling (src/lib/budgeting/hooks.ts:873)", "shortDescription": {"text": "Dangling fetch: PATCH /api/budgeting/rolling (src/lib/budgeting/hooks.ts:873)"}, "fullDescription": {"text": "`src/lib/budgeting/hooks.ts:873` calls `PATCH /api/budgeting/rolling` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/rolling`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-35c42c1b255d9ba2", "name": "Dangling fetch: GET /api/budgeting/cash-flow?year=${year} (src/lib/budgeting/hooks.ts:895)", "shortDescription": {"text": "Dangling fetch: GET /api/budgeting/cash-flow?year=${year} (src/lib/budgeting/hooks.ts:895)"}, "fullDescription": {"text": "`src/lib/budgeting/hooks.ts:895` calls `GET /api/budgeting/cash-flow?year=${year}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/cash-flow`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9af2a49e4c0f6c35", "name": "Dangling fetch: POST /api/budgeting/cash-flow (src/lib/budgeting/hooks.ts:927)", "shortDescription": {"text": "Dangling fetch: POST /api/budgeting/cash-flow (src/lib/budgeting/hooks.ts:927)"}, "fullDescription": {"text": "`src/lib/budgeting/hooks.ts:927` calls `POST /api/budgeting/cash-flow` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/cash-flow`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aa9b05efe98ef044", "name": "Dangling fetch: GET /api/budgeting/cash-flow/alerts?year=${year} (src/lib/budgeting/hooks.ts:947)", "shortDescription": {"text": "Dangling fetch: GET /api/budgeting/cash-flow/alerts?year=${year} (src/lib/budgeting/hooks.ts:947)"}, "fullDescription": {"text": "`src/lib/budgeting/hooks.ts:947` calls `GET /api/budgeting/cash-flow/alerts?year=${year}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/cash-flow/alerts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a751c1eff9d4d9ee", "name": "Dangling fetch: POST /api/budgeting/cash-flow/alerts (src/lib/budgeting/hooks.ts:967)", "shortDescription": {"text": "Dangling fetch: POST /api/budgeting/cash-flow/alerts (src/lib/budgeting/hooks.ts:967)"}, "fullDescription": {"text": "`src/lib/budgeting/hooks.ts:967` calls `POST /api/budgeting/cash-flow/alerts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/cash-flow/alerts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d1d040759cabe997", "name": "Dangling fetch: GET /api/budgeting/cash-flow/plan-fact?year=${year} (src/lib/budgeting/hooks.ts:1006)", "shortDescription": {"text": "Dangling fetch: GET /api/budgeting/cash-flow/plan-fact?year=${year} (src/lib/budgeting/hooks.ts:1006)"}, "fullDescription": {"text": "`src/lib/budgeting/hooks.ts:1006` calls `GET /api/budgeting/cash-flow/plan-fact?year=${year}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/cash-flow/plan-fact`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-76984275c759330f", "name": "Dangling fetch: POST /api/budgeting/cash-flow/generate (src/lib/budgeting/hooks.ts:1022)", "shortDescription": {"text": "Dangling fetch: POST /api/budgeting/cash-flow/generate (src/lib/budgeting/hooks.ts:1022)"}, "fullDescription": {"text": "`src/lib/budgeting/hooks.ts:1022` calls `POST /api/budgeting/cash-flow/generate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/budgeting/cash-flow/generate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c29dff2df2ddbd32", "name": "Dangling fetch: POST https://rest.nexmo.com/sms/json (src/lib/sms/providers/vonage.ts:46)", "shortDescription": {"text": "Dangling fetch: POST https://rest.nexmo.com/sms/json (src/lib/sms/providers/vonage.ts:46)"}, "fullDescription": {"text": "`src/lib/sms/providers/vonage.ts:46` calls `POST https://rest.nexmo.com/sms/json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/rest.nexmo.com/sms/json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-31e384f8995a56fe", "name": "Dangling fetch: GET /api/v1/settings/field-permissions?entityType=${entityType} (src/hooks/use-field-permissions.ts:14)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/settings/field-permissions?entityType=${entityType} (src/hooks/use-field-permissions.ts:14)"}, "fullDescription": {"text": "`src/hooks/use-field-permissions.ts:14` calls `GET /api/v1/settings/field-permissions?entityType=${entityType}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/settings/field-permissions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dc2e2be410046e67", "name": "Unused endpoint: POST /analytics", "shortDescription": {"text": "Unused endpoint: POST /analytics"}, "fullDescription": {"text": "`services/compute/routes/cost_model.py` declares `POST /analytics` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0bb400842435764a", "name": "Unused endpoint: POST /score-lead", "shortDescription": {"text": "Unused endpoint: POST /score-lead"}, "fullDescription": {"text": "`services/compute/routes/ai.py` declares `POST /score-lead` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-df42ea338ee415f8", "name": "Unused endpoint: POST /suggest-reply", "shortDescription": {"text": "Unused endpoint: POST /suggest-reply"}, "fullDescription": {"text": "`services/compute/routes/ai.py` declares `POST /suggest-reply` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fca11d494725d7c3", "name": "Unused endpoint: POST /analyze", "shortDescription": {"text": "Unused endpoint: POST /analyze"}, "fullDescription": {"text": "`services/compute/routes/ai.py` declares `POST /analyze` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cff8da5fbc19c76d", "name": "Unused endpoint: POST /chat", "shortDescription": {"text": "Unused endpoint: POST /chat"}, "fullDescription": {"text": "`services/compute/routes/ai.py` declares `POST /chat` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/17875"}, "properties": {"repository": "rashadrahimov/leaddrive-v2", "repoUrl": "https://github.com/rashadrahimov/leaddrive-v2", "branch": "main"}, "results": [{"ruleId": "scanner-0788a4c1752587ab", "level": "note", "message": {"text": "Possibly dead Python function: generate_title_slide"}, "properties": {"repobilityId": "439a1d40b9214f59", "scanner": "scanner-primary", "fingerprint": "0788a4c1752587ab", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/design-system/scripts/generate-slide.py:411"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c7e9acd90beb5f20", "level": "note", "message": {"text": "Possibly dead Python function: generate_problem_slide"}, "properties": {"repobilityId": "a877bda0bfc222bb", "scanner": "scanner-primary", "fingerprint": "c7e9acd90beb5f20", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/design-system/scripts/generate-slide.py:430"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-757f65175217bbd4", "level": "note", "message": {"text": "Possibly dead Python function: generate_solution_slide"}, "properties": {"repobilityId": "fe81965771dbe20b", "scanner": "scanner-primary", "fingerprint": "757f65175217bbd4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/design-system/scripts/generate-slide.py:461"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-eee8242c9a3e670d", "level": "note", "message": {"text": "Possibly dead Python function: generate_metrics_slide"}, "properties": {"repobilityId": "e88ea02a6e9933f3", "scanner": "scanner-primary", "fingerprint": "eee8242c9a3e670d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/design-system/scripts/generate-slide.py:506"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7e13f3797d1c93de", "level": "note", "message": {"text": "Possibly dead Python function: generate_chart_slide"}, "properties": {"repobilityId": "86ef10594147f39c", "scanner": "scanner-primary", "fingerprint": "7e13f3797d1c93de", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/design-system/scripts/generate-slide.py:537"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2be8c868587a8cd1", "level": "note", "message": {"text": "Possibly dead Python function: generate_testimonial_slide"}, "properties": {"repobilityId": "08c17cff08d7fe52", "scanner": "scanner-primary", "fingerprint": "2be8c868587a8cd1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/design-system/scripts/generate-slide.py:571"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0985f566c6f93168", "level": "note", "message": {"text": "Possibly dead Python function: generate_cta_slide"}, "properties": {"repobilityId": "665644074a26bc47", "scanner": "scanner-primary", "fingerprint": "0985f566c6f93168", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/design-system/scripts/generate-slide.py:589"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8b920d353e2c3133", "level": "note", "message": {"text": "Possibly dead Python function: call"}, "properties": {"repobilityId": "cf6e1a33b1245f9d", "scanner": "scanner-primary", "fingerprint": "8b920d353e2c3133", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/compute/ai/base.py:12"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a586a43df491f725", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-agents.ts:72"}, "properties": {"repobilityId": "2b4a2788af030e6c", "scanner": "scanner-primary", "fingerprint": "a586a43df491f725", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6534ada632c0bb7b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/farid-day.ts:105"}, "properties": {"repobilityId": "f86d7c081039e7f2", "scanner": "scanner-primary", "fingerprint": "6534ada632c0bb7b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a71656d851e25016", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-cost-model.ts:18"}, "properties": {"repobilityId": "feb090c9771311a4", "scanner": "scanner-primary", "fingerprint": "a71656d851e25016", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3d05083db662f1e2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-mtm.ts:63"}, "properties": {"repobilityId": "cea5711572e91f6e", "scanner": "scanner-primary", "fingerprint": "3d05083db662f1e2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f0754ca25ed9731a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-invoices-from-pricing.ts:32"}, "properties": {"repobilityId": "d66dbb623c09e105", "scanner": "scanner-primary", "fingerprint": "f0754ca25ed9731a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8916868f874093a5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-planned-amounts.ts:22"}, "properties": {"repobilityId": "27918505512d34a4", "scanner": "scanner-primary", "fingerprint": "8916868f874093a5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ed0592bb4de5dce4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-events.ts:14"}, "properties": {"repobilityId": "14e4f86161af12b5", "scanner": "scanner-primary", "fingerprint": "ed0592bb4de5dce4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2a82d1ba54fd8231", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-sales-actuals.ts:30"}, "properties": {"repobilityId": "d9891dfaf4a8881e", "scanner": "scanner-primary", "fingerprint": "2a82d1ba54fd8231", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-83189ba7c007b083", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-payment-registry.ts:19"}, "properties": {"repobilityId": "dced4a127409643f", "scanner": "scanner-primary", "fingerprint": "83189ba7c007b083", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-698b28a524fe063a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-budget-q2-2026.ts:56"}, "properties": {"repobilityId": "2d0b48c7e254c28c", "scanner": "scanner-primary", "fingerprint": "698b28a524fe063a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f313b5aaa3f210a8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/convert-heic-uploads.ts:59"}, "properties": {"repobilityId": "3733709fbc0518df", "scanner": "scanner-primary", "fingerprint": "f313b5aaa3f210a8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5a4926b182b23e52", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-v1.ts:34"}, "properties": {"repobilityId": "14f5bbcb36497f05", "scanner": "scanner-primary", "fingerprint": "5a4926b182b23e52", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dbc81b4e2a6fc992", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-matrix.ts:98"}, "properties": {"repobilityId": "41f47aa866e0d5fe", "scanner": "scanner-primary", "fingerprint": "dbc81b4e2a6fc992", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9c0d6291408b3bf0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-pipeline.ts:18"}, "properties": {"repobilityId": "41ac6afe5a047f77", "scanner": "scanner-primary", "fingerprint": "9c0d6291408b3bf0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c2ef5537698c355e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-sales-forecast-2026.ts:58"}, "properties": {"repobilityId": "733f7ac50bbc5c87", "scanner": "scanner-primary", "fingerprint": "c2ef5537698c355e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b32ac9e426b75fa0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/populate-plan.ts:91"}, "properties": {"repobilityId": "d70e2c2058133b5b", "scanner": "scanner-primary", "fingerprint": "b32ac9e426b75fa0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de95c022d1967531", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-expense-structure.ts:69"}, "properties": {"repobilityId": "515e533ee4730d99", "scanner": "scanner-primary", "fingerprint": "de95c022d1967531", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-76fb69031e17885f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-renewal-alerts.ts:20"}, "properties": {"repobilityId": "9b1f68caacc3f88a", "scanner": "scanner-primary", "fingerprint": "76fb69031e17885f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-485939fad826d2e4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reseed-budget-q2-2026.ts:23"}, "properties": {"repobilityId": "fcecfeafb53f5875", "scanner": "scanner-primary", "fingerprint": "485939fad826d2e4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e389aaf7c327fa48", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-revenue-plan.ts:47"}, "properties": {"repobilityId": "56a30cf4a94e53a5", "scanner": "scanner-primary", "fingerprint": "e389aaf7c327fa48", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4d440c6c8aac4c22", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-plan-to-quarterly.ts:58"}, "properties": {"repobilityId": "e5be913e738e6646", "scanner": "scanner-primary", "fingerprint": "4d440c6c8aac4c22", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-df2a243822feeea5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-superadmin.ts:31"}, "properties": {"repobilityId": "a52fd06ea9ae2728", "scanner": "scanner-primary", "fingerprint": "df2a243822feeea5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-39a5fe4575355e34", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/add-hints.js:1354"}, "properties": {"repobilityId": "195ae497bf4706d7", "scanner": "scanner-primary", "fingerprint": "39a5fe4575355e34", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-472a7e2f8cc7cc6f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-stale-mtm-agents.ts:55"}, "properties": {"repobilityId": "0023e05968cb1df3", "scanner": "scanner-primary", "fingerprint": "472a7e2f8cc7cc6f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d38d31ca4c26e7a2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/farid-edge-cases.ts:59"}, "properties": {"repobilityId": "e6e47f0941824179", "scanner": "scanner-primary", "fingerprint": "d38d31ca4c26e7a2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-15ef59d8efb96f77", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-expense-actuals.ts:112"}, "properties": {"repobilityId": "579bfccef3345dc6", "scanner": "scanner-primary", "fingerprint": "15ef59d8efb96f77", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-db32485227bdfc5e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-recurring-from-invoices.ts:33"}, "properties": {"repobilityId": "90341bd793ac232d", "scanner": "scanner-primary", "fingerprint": "db32485227bdfc5e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ea1c9fff2edbfe4a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-invoices-remaining.ts:77"}, "properties": {"repobilityId": "1ab84ae9a2e31624", "scanner": "scanner-primary", "fingerprint": "ea1c9fff2edbfe4a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1b17dae5245fd111", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-email-templates.ts:765"}, "properties": {"repobilityId": "013bf9ca36f3bf31", "scanner": "scanner-primary", "fingerprint": "1b17dae5245fd111", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1c535480bb34db3a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-event-template.ts:172"}, "properties": {"repobilityId": "8af242e6546ee539", "scanner": "scanner-primary", "fingerprint": "1c535480bb34db3a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-16b3f017458da752", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-service-totals.ts:13"}, "properties": {"repobilityId": "676cbbe196d00a4c", "scanner": "scanner-primary", "fingerprint": "16b3f017458da752", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-445e8e700a0670d7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-admin.ts:19"}, "properties": {"repobilityId": "42bf929609ac2fd4", "scanner": "scanner-primary", "fingerprint": "445e8e700a0670d7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3b6fddcbc94f55ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/xss-exploit-test.js:11"}, "properties": {"repobilityId": "f8180cfaed1d1e7d", "scanner": "scanner-primary", "fingerprint": "3b6fddcbc94f55ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-13bdb9fe30e00e17", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 scripts/xss-exploit-test.js:4"}, "properties": {"repobilityId": "6b3f9e02c795cff8", "scanner": "scanner-primary", "fingerprint": "13bdb9fe30e00e17", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-76fef13458f44f04", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-v1.ts:32"}, "properties": {"repobilityId": "8660e42a1bb670de", "scanner": "scanner-primary", "fingerprint": "76fef13458f44f04", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f60de19ba4c8a775", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-pricing-to-db.ts:42"}, "properties": {"repobilityId": "ae9c433ba387ab8b", "scanner": "scanner-primary", "fingerprint": "f60de19ba4c8a775", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b20d7dac7691c49f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed.ts:8"}, "properties": {"repobilityId": "f77d7e0fb34b08e2", "scanner": "scanner-primary", "fingerprint": "b20d7dac7691c49f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3eb7e5a8d07637a9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed/kanban-demo.ts:30"}, "properties": {"repobilityId": "35192c3589bbb7b3", "scanner": "scanner-primary", "fingerprint": "3eb7e5a8d07637a9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2c9a0eb3b54d317a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 prisma/seed/complaints-demo.ts:137"}, "properties": {"repobilityId": "4a792046a7cf857f", "scanner": "scanner-primary", "fingerprint": "2c9a0eb3b54d317a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a7e22e39423b84f8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 telegram-bridge/bot.js:23"}, "properties": {"repobilityId": "6c8196e2c613b506", "scanner": "scanner-primary", "fingerprint": "a7e22e39423b84f8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-feb242dbd6e0e098", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 public/widget.js:11"}, "properties": {"repobilityId": "cb78617263e3ae7b", "scanner": "scanner-primary", "fingerprint": "feb242dbd6e0e098", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-17a4b65071395686", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/instrumentation.ts:25"}, "properties": {"repobilityId": "1791378cdc59d011", "scanner": "scanner-primary", "fingerprint": "17a4b65071395686", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2bd043c29f5d4087", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/__tests__/board-flow.test.ts:59"}, "properties": {"repobilityId": "79f51de9dba42591", "scanner": "scanner-primary", "fingerprint": "2bd043c29f5d4087", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-d0f57349c5d60f85", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/__tests__/api-mtm-photos.test.ts:135"}, "properties": {"repobilityId": "48e3fc8f3206fc89", "scanner": "scanner-primary", "fingerprint": "d0f57349c5d60f85", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-1dbc9597a0a0abda", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/__tests__/board-columns.test.ts:56"}, "properties": {"repobilityId": "9f5cec070e5b7c5e", "scanner": "scanner-primary", "fingerprint": "1dbc9597a0a0abda", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-242279b431db5ad1", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/__tests__/lib-webhook-url-guard.test.ts:104"}, "properties": {"repobilityId": "0b29da33738ea78e", "scanner": "scanner-primary", "fingerprint": "242279b431db5ad1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-624a9e982daa0869", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/__tests__/lib-tenant-pii-encryption.test.ts:228"}, "properties": {"repobilityId": "d182ab61d85aeb05", "scanner": "scanner-primary", "fingerprint": "624a9e982daa0869", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4c8168876d2218ae", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/__tests__/ai-pii-masker.test.ts:249"}, "properties": {"repobilityId": "4a2cab7cd5b13186", "scanner": "scanner-primary", "fingerprint": "4c8168876d2218ae", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-bc88422bf26a2769", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/__tests__/lib-apex.test.ts:197"}, "properties": {"repobilityId": "a39bb807fb7c736e", "scanner": "scanner-primary", "fingerprint": "bc88422bf26a2769", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2a3fe3a045ed791c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/color-stat-card.tsx:106"}, "properties": {"repobilityId": "7f5148c8949eee1e", "scanner": "scanner-primary", "fingerprint": "2a3fe3a045ed791c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dcc13f1cce8df4c0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/csv-import-dialog.tsx:183"}, "properties": {"repobilityId": "54b7e07827d5f179", "scanner": "scanner-primary", "fingerprint": "dcc13f1cce8df4c0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-88b67ebafe5c2c1e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/expense-forecast-tab.tsx:291"}, "properties": {"repobilityId": "c5d9e9c76a140e9a", "scanner": "scanner-primary", "fingerprint": "88b67ebafe5c2c1e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-74529812207ee3c1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/lead-detail-modal.tsx:310"}, "properties": {"repobilityId": "87500afa292b6340", "scanner": "scanner-primary", "fingerprint": "74529812207ee3c1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-20016ce280a38163", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/sidebar.tsx:389"}, "properties": {"repobilityId": "b6d9ddc60e182673", "scanner": "scanner-primary", "fingerprint": "20016ce280a38163", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3ef6160d29481c32", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/campaign-form.tsx:700"}, "properties": {"repobilityId": "0734d762cbff80b7", "scanner": "scanner-primary", "fingerprint": "3ef6160d29481c32", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5e58016ab7488f77", "level": "note", "message": {"text": "React Flow <Controls> without dark theming \u2014 src/components/campaign-flow-editor.tsx:236"}, "properties": {"repobilityId": "9638aa468a563936", "scanner": "scanner-primary", "fingerprint": "5e58016ab7488f77", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.controls.no-bg"]}}, {"ruleId": "scanner-e1f5d3cbf21b082e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/campaign-flow-editor.tsx:80"}, "properties": {"repobilityId": "21a69f5c0184abe6", "scanner": "scanner-primary", "fingerprint": "e1f5d3cbf21b082e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e20e95351771a893", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/header.tsx:147"}, "properties": {"repobilityId": "8e01264946f75338", "scanner": "scanner-primary", "fingerprint": "e20e95351771a893", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-97419a82378dd09b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/file-preview.tsx:45"}, "properties": {"repobilityId": "5baf2771f41498c0", "scanner": "scanner-primary", "fingerprint": "97419a82378dd09b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d50e5c26bc085fb9", "level": "note", "message": {"text": "React Flow <Controls> without dark theming \u2014 src/components/journey-flow-editor.tsx:484"}, "properties": {"repobilityId": "e54486b99a0ff7d7", "scanner": "scanner-primary", "fingerprint": "d50e5c26bc085fb9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.controls.no-bg"]}}, {"ruleId": "scanner-cc39442252287325", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/journey-flow-editor.tsx:82"}, "properties": {"repobilityId": "2b89196c930d1ee6", "scanner": "scanner-primary", "fingerprint": "cc39442252287325", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a0d3d3dc57abec68", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/email-template-form.tsx:725"}, "properties": {"repobilityId": "414e36debfb5c13e", "scanner": "scanner-primary", "fingerprint": "a0d3d3dc57abec68", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-b25cea6c488be8c6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/lead-item-modal.tsx:564"}, "properties": {"repobilityId": "e329396cc9cc3cde", "scanner": "scanner-primary", "fingerprint": "b25cea6c488be8c6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1573d1fe5d131837", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/incoming-call-popup.tsx:46"}, "properties": {"repobilityId": "37bf2f651de26bf1", "scanner": "scanner-primary", "fingerprint": "1573d1fe5d131837", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2ffda0c61a51a72e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/saved-view-bar.tsx:208"}, "properties": {"repobilityId": "12fff4474cf6c585", "scanner": "scanner-primary", "fingerprint": "2ffda0c61a51a72e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f6c353f7350788d2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/grapes-editor.tsx:474"}, "properties": {"repobilityId": "dc2d1947418d13ab", "scanner": "scanner-primary", "fingerprint": "f6c353f7350788d2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-123eb83b1a67387b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/interaction-timeline.tsx:109"}, "properties": {"repobilityId": "9be3c7ed1afd3a81", "scanner": "scanner-primary", "fingerprint": "123eb83b1a67387b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9fc13c329d3e6b94", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/user-picker.tsx:183"}, "properties": {"repobilityId": "8d26e7c46bce39d6", "scanner": "scanner-primary", "fingerprint": "9fc13c329d3e6b94", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-407bd069df45332d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/notification-bell.tsx:206"}, "properties": {"repobilityId": "a04981867e40f69b", "scanner": "scanner-primary", "fingerprint": "407bd069df45332d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a9fc88fd88945914", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/offer-form.tsx:379"}, "properties": {"repobilityId": "8dd5760781714690", "scanner": "scanner-primary", "fingerprint": "a9fc88fd88945914", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-64a63db62ab7cbf6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/mtm/shelf-annotator.tsx:375"}, "properties": {"repobilityId": "d662dfba238cdb11", "scanner": "scanner-primary", "fingerprint": "64a63db62ab7cbf6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8118a168f5fb7db7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/mtm/shelf-builder.tsx:235"}, "properties": {"repobilityId": "c2ad5bcb72017dd9", "scanner": "scanner-primary", "fingerprint": "8118a168f5fb7db7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7e18baa92dfa2771", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/leads/leads-analytics.tsx:197"}, "properties": {"repobilityId": "e2a5b5ba6f161449", "scanner": "scanner-primary", "fingerprint": "7e18baa92dfa2771", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b4837b42693fb265", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/projects/project-overview-tab.tsx:104"}, "properties": {"repobilityId": "16e5e3acf2b1dd57", "scanner": "scanner-primary", "fingerprint": "b4837b42693fb265", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-de042b723be3bb2d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/projects/project-crm-activity-tab.tsx:183"}, "properties": {"repobilityId": "f776b4fc0576b458", "scanner": "scanner-primary", "fingerprint": "de042b723be3bb2d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a572528e032f3b08", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/components/projects/project-crm-activity-tab.tsx:218"}, "properties": {"repobilityId": "8dd9a724c21c5c0a", "scanner": "scanner-primary", "fingerprint": "a572528e032f3b08", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-fae92f6258e98e58", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/events/events-analytics.tsx:277"}, "properties": {"repobilityId": "7e6c9bb0667ec696", "scanner": "scanner-primary", "fingerprint": "fae92f6258e98e58", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-da0ebf21ee3ccba2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/ui/searchable-select.tsx:176"}, "properties": {"repobilityId": "fda1ba2bd277e868", "scanner": "scanner-primary", "fingerprint": "da0ebf21ee3ccba2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-89fb65e00d32f897", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/lead-sources-donut.tsx:58"}, "properties": {"repobilityId": "713d15f4e5d6ef12", "scanner": "scanner-primary", "fingerprint": "89fb65e00d32f897", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-632a3de64d0cfa71", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/segments-widget.tsx:106"}, "properties": {"repobilityId": "9c22555b3c6516f0", "scanner": "scanner-primary", "fingerprint": "632a3de64d0cfa71", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fd7091ec047132c4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/risks-banner.tsx:23"}, "properties": {"repobilityId": "42e0c9503f5c33d3", "scanner": "scanner-primary", "fingerprint": "fd7091ec047132c4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-921d2082f158165c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/sales-pipeline.tsx:39"}, "properties": {"repobilityId": "4b37f3a531b19c05", "scanner": "scanner-primary", "fingerprint": "921d2082f158165c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7e32beb3a0a0a249", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/recent-deals.tsx:31"}, "properties": {"repobilityId": "3bf981509a375a1b", "scanner": "scanner-primary", "fingerprint": "7e32beb3a0a0a249", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bfd7636e98d8502f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/ai-value-widget.tsx:135"}, "properties": {"repobilityId": "9dd9afd6818f85b5", "scanner": "scanner-primary", "fingerprint": "bfd7636e98d8502f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a2a25a449490ec1f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/campaign-stats.tsx:23"}, "properties": {"repobilityId": "dfd796e582eb24d3", "scanner": "scanner-primary", "fingerprint": "a2a25a449490ec1f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7cf62152dd999274", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/churn-risk-widget.tsx:82"}, "properties": {"repobilityId": "d9885513e6581a0f", "scanner": "scanner-primary", "fingerprint": "7cf62152dd999274", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e0180bcb6fce8641", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/activity-feed.tsx:36"}, "properties": {"repobilityId": "94edba72fe46300a", "scanner": "scanner-primary", "fingerprint": "e0180bcb6fce8641", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0bcb648bafce063a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/kpi-card.tsx:20"}, "properties": {"repobilityId": "d8fa969ab1e4d933", "scanner": "scanner-primary", "fingerprint": "0bcb648bafce063a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b4c282b6e38cbf53", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/recommended-actions.tsx:126"}, "properties": {"repobilityId": "0d88b013aaf95559", "scanner": "scanner-primary", "fingerprint": "b4c282b6e38cbf53", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dc1f5ab8c178c2bc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/ai-lead-scoring.tsx:44"}, "properties": {"repobilityId": "2c254e27b3571960", "scanner": "scanner-primary", "fingerprint": "dc1f5ab8c178c2bc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-51ddab81e8a1bb2d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/upcoming-events.tsx:41"}, "properties": {"repobilityId": "e7d3bd45c4ea8c60", "scanner": "scanner-primary", "fingerprint": "51ddab81e8a1bb2d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1036e2a7613bcedc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/cpq/deal-combobox.tsx:77"}, "properties": {"repobilityId": "1457c6b3d84df617", "scanner": "scanner-primary", "fingerprint": "1036e2a7613bcedc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7058ae48c3b8d3e7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/cpq/product-combobox.tsx:80"}, "properties": {"repobilityId": "be0fe28159e5462b", "scanner": "scanner-primary", "fingerprint": "7058ae48c3b8d3e7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-662d7d8ea2619baf", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/finance/finance-dashboard.tsx:236"}, "properties": {"repobilityId": "bf289a4f006113b9", "scanner": "scanner-primary", "fingerprint": "662d7d8ea2619baf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b302d0f79237a0dc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/finance/payments-dashboard.tsx:168"}, "properties": {"repobilityId": "83710539686bf232", "scanner": "scanner-primary", "fingerprint": "b302d0f79237a0dc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-85bdb65f01944d1b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/tasks/task-detail-view.tsx:224"}, "properties": {"repobilityId": "b4c81ce15262ace0", "scanner": "scanner-primary", "fingerprint": "85bdb65f01944d1b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d2c2da9f282499d0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/tasks/inline-tasks-table.tsx:748"}, "properties": {"repobilityId": "7d692839d377a9ed", "scanner": "scanner-primary", "fingerprint": "d2c2da9f282499d0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1a3b63ad7cdcdbef", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/marketing/module-showcase.tsx:97"}, "properties": {"repobilityId": "540a4eec3eb76679", "scanner": "scanner-primary", "fingerprint": "1a3b63ad7cdcdbef", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-842b1c042aa78431", "level": "note", "message": {"text": "\"active\" state uses light bg in a dark theme \u2014 src/components/marketing/module-showcase.tsx:95"}, "properties": {"repobilityId": "b70eb46f3b925fff", "scanner": "scanner-primary", "fingerprint": "842b1c042aa78431", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.active-light-bg"]}}, {"ruleId": "scanner-7b2fbb2ab08fd651", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/marketing/invoice-preview.tsx:182"}, "properties": {"repobilityId": "c39696a9cce85003", "scanner": "scanner-primary", "fingerprint": "7b2fbb2ab08fd651", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7b2bbc68afcf0857", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/marketing/dashboard-preview.tsx:170"}, "properties": {"repobilityId": "ac8d5487a68fc44a", "scanner": "scanner-primary", "fingerprint": "7b2bbc68afcf0857", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8f962c71707aacea", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/marketing/campaigns-preview.tsx:88"}, "properties": {"repobilityId": "8dadf764108e916b", "scanner": "scanner-primary", "fingerprint": "8f962c71707aacea", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a9c733b8b895ffe7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/marketing/deal-preview.tsx:162"}, "properties": {"repobilityId": "efc286a524120358", "scanner": "scanner-primary", "fingerprint": "a9c733b8b895ffe7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a11cc700d9ccee80", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/marketing/module-previews.tsx:62"}, "properties": {"repobilityId": "e7d63015cf09850f", "scanner": "scanner-primary", "fingerprint": "a11cc700d9ccee80", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d9cacc3b6c7feae6", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/profitability/ai-observations.tsx:170"}, "properties": {"repobilityId": "6372d194634a0a47", "scanner": "scanner-primary", "fingerprint": "d9cacc3b6c7feae6", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-f7045afb0a19c260", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/social/analytics-panel.tsx:165"}, "properties": {"repobilityId": "d621f78e2caa0fa0", "scanner": "scanner-primary", "fingerprint": "f7045afb0a19c260", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-489003b086f07db2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/email-log/email-analytics.tsx:124"}, "properties": {"repobilityId": "770687ee85b4b11c", "scanner": "scanner-primary", "fingerprint": "489003b086f07db2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-40e8ca2661fb891c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/campaigns/campaigns-analytics.tsx:77"}, "properties": {"repobilityId": "a1e317f30a4f73b8", "scanner": "scanner-primary", "fingerprint": "40e8ca2661fb891c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b94dfaae863e8d8c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/deals/stage-progress.tsx:61"}, "properties": {"repobilityId": "1fbe51fc193d4cf0", "scanner": "scanner-primary", "fingerprint": "b94dfaae863e8d8c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e98847c4109a92c9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/deals/deals-analytics.tsx:447"}, "properties": {"repobilityId": "92d1c289f59d80fa", "scanner": "scanner-primary", "fingerprint": "e98847c4109a92c9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4af0a14c6d763b68", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/deals/deal-card.tsx:129"}, "properties": {"repobilityId": "2993fba79a51986a", "scanner": "scanner-primary", "fingerprint": "4af0a14c6d763b68", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9aae4aa4658362c2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/deals/deal-sidebar.tsx:136"}, "properties": {"repobilityId": "b06f63a971ae908e", "scanner": "scanner-primary", "fingerprint": "9aae4aa4658362c2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-91cad6d2d6f54a38", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/deals/kanban-board.tsx:101"}, "properties": {"repobilityId": "7b3736f947e2a674", "scanner": "scanner-primary", "fingerprint": "91cad6d2d6f54a38", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0978d4ff76891ac5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/deals/quick-action-bar.tsx:234"}, "properties": {"repobilityId": "320a84a9696370ba", "scanner": "scanner-primary", "fingerprint": "0978d4ff76891ac5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-843b716dee12c12e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/deals/next-best-offers.tsx:123"}, "properties": {"repobilityId": "734f3a62d131ada5", "scanner": "scanner-primary", "fingerprint": "843b716dee12c12e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b3b658169fb55cd9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/boards/board-reports.tsx:378"}, "properties": {"repobilityId": "cd79c7fc2d2ad35d", "scanner": "scanner-primary", "fingerprint": "b3b658169fb55cd9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c761920be0a8dbe3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/invoices/invoices-analytics.tsx:405"}, "properties": {"repobilityId": "53bc0d2449a45acb", "scanner": "scanner-primary", "fingerprint": "c761920be0a8dbe3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-386d7fe0e3afb379", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/buyer-accounts/route.ts:110"}, "properties": {"repobilityId": "c49215f4d6081f75", "scanner": "scanner-primary", "fingerprint": "386d7fe0e3afb379", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-0a2eef566676feb4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/subscription-plans/route.ts:103"}, "properties": {"repobilityId": "e7dc8a005c45b2de", "scanner": "scanner-primary", "fingerprint": "0a2eef566676feb4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-ac141a11246f07fe", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/order-shipments/route.ts:156"}, "properties": {"repobilityId": "e1c86b0b8dbb52a4", "scanner": "scanner-primary", "fingerprint": "ac141a11246f07fe", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-7c31a41834e0c574", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/mtm/promotions/route.ts:80"}, "properties": {"repobilityId": "a8c04a2df0ead3f3", "scanner": "scanner-primary", "fingerprint": "7c31a41834e0c574", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-a89f846defb4a401", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/mtm/promotions/[id]/route.ts:62"}, "properties": {"repobilityId": "0217426263c5f262", "scanner": "scanner-primary", "fingerprint": "a89f846defb4a401", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-c38cb64a12543eab", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/mtm/mobile/sync/push/route.ts:186"}, "properties": {"repobilityId": "0ce69a7eec19b0cc", "scanner": "scanner-primary", "fingerprint": "c38cb64a12543eab", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-442e802cec2f5f0e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/mtm/skus/route.ts:40"}, "properties": {"repobilityId": "bc265626f1aaf5a7", "scanner": "scanner-primary", "fingerprint": "442e802cec2f5f0e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-3db08cd54d227c06", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/mtm/skus/import/route.ts:90"}, "properties": {"repobilityId": "4724b622eb3bba34", "scanner": "scanner-primary", "fingerprint": "3db08cd54d227c06", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-1eb04c1ca3913de7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/tracking/open/route.ts:100"}, "properties": {"repobilityId": "514093560113c847", "scanner": "scanner-primary", "fingerprint": "1eb04c1ca3913de7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-26041770ff2f9f48", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/events/[id]/participants/route.ts:232"}, "properties": {"repobilityId": "e886454f092b5450", "scanner": "scanner-primary", "fingerprint": "26041770ff2f9f48", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ed09c6be8ca9a199", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/events/[id]/confirm-all/route.ts:138"}, "properties": {"repobilityId": "bb68db11837c2858", "scanner": "scanner-primary", "fingerprint": "ed09c6be8ca9a199", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b3ee506e297fabc0", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/apps/[id]/install/route.ts:223"}, "properties": {"repobilityId": "f5dbfc71151dc15b", "scanner": "scanner-primary", "fingerprint": "b3ee506e297fabc0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-082b60da5b3823ed", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/trade-promotions/route.ts:129"}, "properties": {"repobilityId": "eec8ab436a5edd97", "scanner": "scanner-primary", "fingerprint": "082b60da5b3823ed", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-16fb186260ebf59b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/platform-events/definitions/route.ts:121"}, "properties": {"repobilityId": "11ac90f657a358aa", "scanner": "scanner-primary", "fingerprint": "16fb186260ebf59b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-646396f582e57989", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/admin/tenants/route.ts:176"}, "properties": {"repobilityId": "1a5ae0d2cc779775", "scanner": "scanner-primary", "fingerprint": "646396f582e57989", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0360ca2458e44850", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/admin/tenants/[id]/route.ts:173"}, "properties": {"repobilityId": "2f0568808cee1e18", "scanner": "scanner-primary", "fingerprint": "0360ca2458e44850", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-27750ef5c60b1e8e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/admin/tenants/[id]/clear-demo/route.ts:42"}, "properties": {"repobilityId": "a817e1a3124354ea", "scanner": "scanner-primary", "fingerprint": "27750ef5c60b1e8e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c5553992cafdae05", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/programs/route.ts:117"}, "properties": {"repobilityId": "36d04cda8834c1ff", "scanner": "scanner-primary", "fingerprint": "c5553992cafdae05", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-cf21d2991198f7c4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/tickets/[id]/route.ts:322"}, "properties": {"repobilityId": "f87ebb4bd3ea19b2", "scanner": "scanner-primary", "fingerprint": "cf21d2991198f7c4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e0e7c60493153d13", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/tickets/[id]/comments/route.ts:104"}, "properties": {"repobilityId": "0c3fd4d5bf6e2930", "scanner": "scanner-primary", "fingerprint": "e0e7c60493153d13", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ae6dbd1ad582b2a4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/zapier/subscribe/route.ts:105"}, "properties": {"repobilityId": "42270336ef7ef588", "scanner": "scanner-primary", "fingerprint": "ae6dbd1ad582b2a4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-4013a88eed2c02b5", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/zapier/samples/[trigger]/route.ts:194"}, "properties": {"repobilityId": "af4769b6e34a0793", "scanner": "scanner-primary", "fingerprint": "4013a88eed2c02b5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-6b8321ec3a85cf43", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/calls/webhook/threecx/route.ts:59"}, "properties": {"repobilityId": "3fd2d95b47923cc7", "scanner": "scanner-primary", "fingerprint": "6b8321ec3a85cf43", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7caaf250205a66e4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/donors/route.ts:126"}, "properties": {"repobilityId": "ce67bb14fc8a378b", "scanner": "scanner-primary", "fingerprint": "7caaf250205a66e4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-0659c70398197225", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/storefronts/route.ts:110"}, "properties": {"repobilityId": "e102805c8d0cb07a", "scanner": "scanner-primary", "fingerprint": "0659c70398197225", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-41e03cf11c3cb791", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/named-credentials/route.ts:68"}, "properties": {"repobilityId": "eece5fae0540176f", "scanner": "scanner-primary", "fingerprint": "41e03cf11c3cb791", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-ed3f940c723b8ddf", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/dunning-attempts/route.ts:58"}, "properties": {"repobilityId": "8cdf19a5670eb249", "scanner": "scanner-primary", "fingerprint": "ed3f940c723b8ddf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-318c13e003def068", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/public/events/[id]/register/route.ts:143"}, "properties": {"repobilityId": "361f82ac904ac838", "scanner": "scanner-primary", "fingerprint": "318c13e003def068", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6aefaca17c5c9d60", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/donations/route.ts:141"}, "properties": {"repobilityId": "8a2037f5bdeb7838", "scanner": "scanner-primary", "fingerprint": "6aefaca17c5c9d60", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-01bc5fb0446ea9a9", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/subscriptions/route.ts:181"}, "properties": {"repobilityId": "6d3a4b04dac788fd", "scanner": "scanner-primary", "fingerprint": "01bc5fb0446ea9a9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-6aed01a94d351a38", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/demo-request/route.ts:17"}, "properties": {"repobilityId": "89e50f373c1b018e", "scanner": "scanner-primary", "fingerprint": "6aed01a94d351a38", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-550b040f458dacb0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/webhooks/sms-inbound/route.ts:77"}, "properties": {"repobilityId": "44b7725d2755932e", "scanner": "scanner-primary", "fingerprint": "550b040f458dacb0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e611288eca44e765", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/webhooks/telegram/route.ts:77"}, "properties": {"repobilityId": "0914f19afcaf1ee7", "scanner": "scanner-primary", "fingerprint": "e611288eca44e765", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2240cffb4ef7f4d2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/webhooks/whatsapp/route.ts:73"}, "properties": {"repobilityId": "2e8db891472cbdd8", "scanner": "scanner-primary", "fingerprint": "2240cffb4ef7f4d2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8500831b35ea9049", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/inbox/route.ts:573"}, "properties": {"repobilityId": "202b0b63f0040c55", "scanner": "scanner-primary", "fingerprint": "8500831b35ea9049", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-47ecb28698660605", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/v1/forms/[id]/publish/route.ts:40"}, "properties": {"repobilityId": "d2cc580ad6efb9ee", "scanner": "scanner-primary", "fingerprint": "47ecb28698660605", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9a40cd4f5ed90c2c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/v1/order-returns/route.ts:295"}, "properties": {"repobilityId": "7cceedb985922ff8", "scanner": "scanner-primary", "fingerprint": "9a40cd4f5ed90c2c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-530066112696a3e0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/cron/purge-tenants/route.ts:29"}, "properties": {"repobilityId": "969c812dc7e26c29", "scanner": "scanner-primary", "fingerprint": "530066112696a3e0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7ec6bc3c02179bd5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/integrations/page.tsx:416"}, "properties": {"repobilityId": "e5c869abb4ae5ff8", "scanner": "scanner-primary", "fingerprint": "7ec6bc3c02179bd5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-416a9620b32d3f72", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/task-templates/page.tsx:261"}, "properties": {"repobilityId": "f5fe079fd9a03130", "scanner": "scanner-primary", "fingerprint": "416a9620b32d3f72", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-be26a1c40c5ae09d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/macros/page.tsx:686"}, "properties": {"repobilityId": "401827e57b96466c", "scanner": "scanner-primary", "fingerprint": "be26a1c40c5ae09d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ee0d2afc4d54c3c7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/intake-forms/page.tsx:250"}, "properties": {"repobilityId": "1ac8725a409f74ef", "scanner": "scanner-primary", "fingerprint": "ee0d2afc4d54c3c7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5d414f87fae34527", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/pitch-links/page.tsx:112"}, "properties": {"repobilityId": "d8cf729157a91818", "scanner": "scanner-primary", "fingerprint": "5d414f87fae34527", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-639a6c2085040e98", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/approval-rules/page.tsx:319"}, "properties": {"repobilityId": "89bd1ae48fee72f1", "scanner": "scanner-primary", "fingerprint": "639a6c2085040e98", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fbfad9018f7d7e6b", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/(dashboard)/settings/territories/page.tsx:94"}, "properties": {"repobilityId": "ef0facafd3a9e5ab", "scanner": "scanner-primary", "fingerprint": "fbfad9018f7d7e6b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-77e7498f2d59641f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/territories/page.tsx:396"}, "properties": {"repobilityId": "462fc3ac1cb9353c", "scanner": "scanner-primary", "fingerprint": "77e7498f2d59641f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-717163a378aa9acd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/workflows/page.tsx:333"}, "properties": {"repobilityId": "6fa5edb5556c6e40", "scanner": "scanner-primary", "fingerprint": "717163a378aa9acd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e19abdf8cab76775", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/channels/page.tsx:207"}, "properties": {"repobilityId": "e4c2cf0233494ef3", "scanner": "scanner-primary", "fingerprint": "e19abdf8cab76775", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bc2d4f83518bd335", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/settings/approval-delegates/page.tsx:209"}, "properties": {"repobilityId": "cf3ff5a952c2f49a", "scanner": "scanner-primary", "fingerprint": "bc2d4f83518bd335", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e3c32e3cb2af8a8c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/journeys/page.tsx:473"}, "properties": {"repobilityId": "a199d684a62134f5", "scanner": "scanner-primary", "fingerprint": "e3c32e3cb2af8a8c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f6b2ce0cf37f869d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/marketplace/page.tsx:214"}, "properties": {"repobilityId": "a768aa98e6d118f7", "scanner": "scanner-primary", "fingerprint": "f6b2ce0cf37f869d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3f42d039216c1605", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/mtm/planogram-checks/page.tsx:196"}, "properties": {"repobilityId": "c9ef42bf5781edee", "scanner": "scanner-primary", "fingerprint": "3f42d039216c1605", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1d8c42ccd159ad74", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/mtm/shelf-analytics/page.tsx:239"}, "properties": {"repobilityId": "dc0e1da173107714", "scanner": "scanner-primary", "fingerprint": "1d8c42ccd159ad74", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d75cbe4a71a17c01", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/mtm/shelf-analytics/[id]/page.tsx:261"}, "properties": {"repobilityId": "716788063f8db597", "scanner": "scanner-primary", "fingerprint": "d75cbe4a71a17c01", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-07c57c00d21e6792", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/mtm/activity/page.tsx:155"}, "properties": {"repobilityId": "b36394a1fc54929d", "scanner": "scanner-primary", "fingerprint": "07c57c00d21e6792", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3dc79b84b6bb0836", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/mtm/customers/page.tsx:174"}, "properties": {"repobilityId": "c2d0180ea64cb9fb", "scanner": "scanner-primary", "fingerprint": "3dc79b84b6bb0836", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a386ce1b369d6e67", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/mtm/photos/page.tsx:188"}, "properties": {"repobilityId": "7cc0050ceed2d480", "scanner": "scanner-primary", "fingerprint": "a386ce1b369d6e67", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6defc677642c0ce5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/mtm/reports/page.tsx:170"}, "properties": {"repobilityId": "6f419747d5efc8ca", "scanner": "scanner-primary", "fingerprint": "6defc677642c0ce5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4ac1484a2070d982", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/mtm/planograms/page.tsx:215"}, "properties": {"repobilityId": "613a805b6609d28d", "scanner": "scanner-primary", "fingerprint": "4ac1484a2070d982", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-402f709e98d2833d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/mtm/map/page.tsx:334"}, "properties": {"repobilityId": "c6c6c6b132ca2a04", "scanner": "scanner-primary", "fingerprint": "402f709e98d2833d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4d51c79a45a2acfb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/leads/page.tsx:617"}, "properties": {"repobilityId": "da08fc5a99493a79", "scanner": "scanner-primary", "fingerprint": "4d51c79a45a2acfb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6d347917dbacabdb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/events/[id]/page.tsx:332"}, "properties": {"repobilityId": "e3cbcdd060f4fd7e", "scanner": "scanner-primary", "fingerprint": "6d347917dbacabdb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4a3856c340ff78f6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/(dashboard)/events/[id]/page.tsx:173"}, "properties": {"repobilityId": "5663c9d8700c5bd2", "scanner": "scanner-primary", "fingerprint": "4a3856c340ff78f6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9d08a9915603b7f6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/health/[id]/page.tsx:221"}, "properties": {"repobilityId": "39e79ef55e692ccb", "scanner": "scanner-primary", "fingerprint": "9d08a9915603b7f6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0c6b3058b0a6fe11", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/media/[id]/page.tsx:135"}, "properties": {"repobilityId": "855617b7fa89fc2e", "scanner": "scanner-primary", "fingerprint": "0c6b3058b0a6fe11", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e694c188330a2d04", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/knowledge-base/page.tsx:392"}, "properties": {"repobilityId": "309058f82d3fa0ea", "scanner": "scanner-primary", "fingerprint": "e694c188330a2d04", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4f4293c3787b5722", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(dashboard)/knowledge-base/[id]/page.tsx:136"}, "properties": {"repobilityId": "2376f781c1fe9200", "scanner": "scanner-primary", "fingerprint": "4f4293c3787b5722", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-9d446426850ad7cb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/design-check/page.tsx:216"}, "properties": {"repobilityId": "b5339563b767f2b4", "scanner": "scanner-primary", "fingerprint": "9d446426850ad7cb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b6d915ed5fc340d8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/loyalty/earn-rules/page.tsx:585"}, "properties": {"repobilityId": "6c3f40d77b19a7dc", "scanner": "scanner-primary", "fingerprint": "b6d915ed5fc340d8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-34126ff07c7680fa", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/loyalty/dashboard/page.tsx:309"}, "properties": {"repobilityId": "979de5b33645b526", "scanner": "scanner-primary", "fingerprint": "34126ff07c7680fa", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4e6119075342303d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/loyalty/tiers/page.tsx:436"}, "properties": {"repobilityId": "57c680ebf3a453e6", "scanner": "scanner-primary", "fingerprint": "4e6119075342303d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-398a823607b9067b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/loyalty/accounts/[id]/page.tsx:459"}, "properties": {"repobilityId": "86c0875f5bfbe8da", "scanner": "scanner-primary", "fingerprint": "398a823607b9067b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-af94cb1fc941b751", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/(dashboard)/sequences/page.tsx:157"}, "properties": {"repobilityId": "3d8affd9bdd1df75", "scanner": "scanner-primary", "fingerprint": "af94cb1fc941b751", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-84d6980c7cf8b99c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/sequences/page.tsx:413"}, "properties": {"repobilityId": "1b6d2d7cef25e133", "scanner": "scanner-primary", "fingerprint": "84d6980c7cf8b99c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7f3234caceeb8c00", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/insurance/[id]/page.tsx:199"}, "properties": {"repobilityId": "6356aa0458c778d8", "scanner": "scanner-primary", "fingerprint": "7f3234caceeb8c00", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-60f387ea507fbd0f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/surveys/page.tsx:227"}, "properties": {"repobilityId": "267ca0826e819386", "scanner": "scanner-primary", "fingerprint": "60f387ea507fbd0f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fe398bcc5f3d3b82", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/tasks/page.tsx:209"}, "properties": {"repobilityId": "82317e4b6b287882", "scanner": "scanner-primary", "fingerprint": "fe398bcc5f3d3b82", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-df1ebf0a1164fe54", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/accounts/engagement/page.tsx:232"}, "properties": {"repobilityId": "c0b1c96fe26493e0", "scanner": "scanner-primary", "fingerprint": "df1ebf0a1164fe54", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-29bd0126469bf388", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/billing/subscriptions/page.tsx:272"}, "properties": {"repobilityId": "83d3b05a4fa5985d", "scanner": "scanner-primary", "fingerprint": "29bd0126469bf388", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0e8f3cf8759f246c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/tickets/[id]/page.tsx:511"}, "properties": {"repobilityId": "3062a981bb831f13", "scanner": "scanner-primary", "fingerprint": "0e8f3cf8759f246c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-629019f1cd0ceb6e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/cdp/insights/page.tsx:555"}, "properties": {"repobilityId": "c54b74f4d8385018", "scanner": "scanner-primary", "fingerprint": "629019f1cd0ceb6e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cd02c1adca151b94", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/cdp/merge-queue/page.tsx:121"}, "properties": {"repobilityId": "64b43f9a0cb0131f", "scanner": "scanner-primary", "fingerprint": "cd02c1adca151b94", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dfd29981b10696fd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/pages/page.tsx:301"}, "properties": {"repobilityId": "7fe024f5f7f47b1c", "scanner": "scanner-primary", "fingerprint": "dfd29981b10696fd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1386426e0e2d2f2d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/forecast/page.tsx:207"}, "properties": {"repobilityId": "65c95c3baae40e32", "scanner": "scanner-primary", "fingerprint": "1386426e0e2d2f2d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f2c533a5fd4bd92f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/email-log/page.tsx:292"}, "properties": {"repobilityId": "cf481418d087cdcb", "scanner": "scanner-primary", "fingerprint": "f2c533a5fd4bd92f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-52b48cb57fb9bb34", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(dashboard)/email-log/page.tsx:331"}, "properties": {"repobilityId": "3ae7150ec997112a", "scanner": "scanner-primary", "fingerprint": "52b48cb57fb9bb34", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-6f828e42a8689522", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/energy/[id]/page.tsx:204"}, "properties": {"repobilityId": "d163517adeb19cb8", "scanner": "scanner-primary", "fingerprint": "6f828e42a8689522", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-590949ed06e23951", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/campaigns/[id]/page.tsx:123"}, "properties": {"repobilityId": "fe125f02ce313f59", "scanner": "scanner-primary", "fingerprint": "590949ed06e23951", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c5593f99a4aacfaf", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/contacts/list/page.tsx:578"}, "properties": {"repobilityId": "2e780a2d2ab37c7d", "scanner": "scanner-primary", "fingerprint": "c5593f99a4aacfaf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-947ed0a445196bdc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/ai-command-center/page.tsx:608"}, "properties": {"repobilityId": "7a903048396be270", "scanner": "scanner-primary", "fingerprint": "947ed0a445196bdc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-85c6851b75423a27", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/contracts/page.tsx:1121"}, "properties": {"repobilityId": "555a2be2221b325a", "scanner": "scanner-primary", "fingerprint": "85c6851b75423a27", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8345d5d7fb05306d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/contracts/[id]/page.tsx:2438"}, "properties": {"repobilityId": "fcbc7346de7f87f1", "scanner": "scanner-primary", "fingerprint": "8345d5d7fb05306d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-15f9f00fb3f27066", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/contracts/[id]/editor/page.tsx:504"}, "properties": {"repobilityId": "1cb371d306867a7a", "scanner": "scanner-primary", "fingerprint": "15f9f00fb3f27066", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-31d55f39cbf1df0e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/contracts/milestones/page.tsx:288"}, "properties": {"repobilityId": "74befeb5086912c4", "scanner": "scanner-primary", "fingerprint": "31d55f39cbf1df0e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e73c0e7d8283d636", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/contracts/templates/page.tsx:1092"}, "properties": {"repobilityId": "005442e787888f47", "scanner": "scanner-primary", "fingerprint": "e73c0e7d8283d636", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-18cc1d8f1b283142", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/contracts/lifecycle/page.tsx:310"}, "properties": {"repobilityId": "39c3a4ee0ce191fd", "scanner": "scanner-primary", "fingerprint": "18cc1d8f1b283142", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0f61f365ada31f46", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/contracts/request/page.tsx:129"}, "properties": {"repobilityId": "080c9dba3134263c", "scanner": "scanner-primary", "fingerprint": "0f61f365ada31f46", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-38e058bb57414e39", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/reports/page.tsx:210"}, "properties": {"repobilityId": "ab433c04bfdd1c2f", "scanner": "scanner-primary", "fingerprint": "38e058bb57414e39", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-15beab81d37cf025", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/reports/builder/page.tsx:928"}, "properties": {"repobilityId": "7c11a4b31528910b", "scanner": "scanner-primary", "fingerprint": "15beab81d37cf025", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b6d211f032a73f0e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/support/entitlements/page.tsx:226"}, "properties": {"repobilityId": "d6de5d1d183d360a", "scanner": "scanner-primary", "fingerprint": "b6d211f032a73f0e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-04edc8eaee928af3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/support/calendar/page.tsx:347"}, "properties": {"repobilityId": "972a9ccb0e5eeeba", "scanner": "scanner-primary", "fingerprint": "04edc8eaee928af3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-572e0bd4c346371f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/voip/insights/page.tsx:348"}, "properties": {"repobilityId": "95c8bc165630d03a", "scanner": "scanner-primary", "fingerprint": "572e0bd4c346371f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b8aa7e8c2aaddeb0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/attribution/models/page.tsx:809"}, "properties": {"repobilityId": "e34b4053a3db2c26", "scanner": "scanner-primary", "fingerprint": "b8aa7e8c2aaddeb0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f40fb16b39af7311", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/segments/page.tsx:262"}, "properties": {"repobilityId": "73d877768b00515d", "scanner": "scanner-primary", "fingerprint": "f40fb16b39af7311", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-af94faca0169d592", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/inbox/page.tsx:800"}, "properties": {"repobilityId": "c40a11f1f01ddf07", "scanner": "scanner-primary", "fingerprint": "af94faca0169d592", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4b1c022448ee1ee0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/inbox/analytics/page.tsx:387"}, "properties": {"repobilityId": "a3feb85ece932a0b", "scanner": "scanner-primary", "fingerprint": "4b1c022448ee1ee0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d092503692830a99", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/inbox/legacy/page.tsx:466"}, "properties": {"repobilityId": "0dafd9074860b669", "scanner": "scanner-primary", "fingerprint": "d092503692830a99", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-352a0cf35f33a8d7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/inbox/web-chat/page.tsx:295"}, "properties": {"repobilityId": "64cd32c3edce1325", "scanner": "scanner-primary", "fingerprint": "352a0cf35f33a8d7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1e2dc71d47afb888", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/social-monitoring/page.tsx:557"}, "properties": {"repobilityId": "88c2da325fb93612", "scanner": "scanner-primary", "fingerprint": "1e2dc71d47afb888", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-40a2648ec848e1a2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/deals/[id]/page.tsx:322"}, "properties": {"repobilityId": "313706e06a8ac052", "scanner": "scanner-primary", "fingerprint": "40a2648ec848e1a2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-709a48b55856497a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/forms/page.tsx:107"}, "properties": {"repobilityId": "8c6337fe1e2501c5", "scanner": "scanner-primary", "fingerprint": "709a48b55856497a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dfd1ba664ae80bd4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/boards/page.tsx:74"}, "properties": {"repobilityId": "4140114445fc0f5f", "scanner": "scanner-primary", "fingerprint": "dfd1ba664ae80bd4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9cd55bd73060b2a3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/companies/page.tsx:398"}, "properties": {"repobilityId": "c7a815cade4ade1e", "scanner": "scanner-primary", "fingerprint": "9cd55bd73060b2a3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-57d38cb5a951ba89", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/companies/[id]/page.tsx:184"}, "properties": {"repobilityId": "1471e4366aa6df11", "scanner": "scanner-primary", "fingerprint": "57d38cb5a951ba89", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fa0b5fc07c8a1594", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/invoices/recurring/page.tsx:476"}, "properties": {"repobilityId": "4b002e6bef858daa", "scanner": "scanner-primary", "fingerprint": "fa0b5fc07c8a1594", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0bd37b336daa113f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/invoices/[id]/page.tsx:205"}, "properties": {"repobilityId": "ecc3ce7241a142c0", "scanner": "scanner-primary", "fingerprint": "0bd37b336daa113f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-168ddc0076aebfa7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/invoices/[id]/edit/page.tsx:341"}, "properties": {"repobilityId": "7b8b49777299d6e0", "scanner": "scanner-primary", "fingerprint": "168ddc0076aebfa7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ad9383006e2f34c2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(dashboard)/invoices/create/page.tsx:571"}, "properties": {"repobilityId": "a30a3f0b9dade03f", "scanner": "scanner-primary", "fingerprint": "ad9383006e2f34c2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-64e6984e6b6d39ac", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/embed/chat/[key]/embed-chat-client.tsx:314"}, "properties": {"repobilityId": "376fd6778b265d40", "scanner": "scanner-primary", "fingerprint": "64e6984e6b6d39ac", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e751ca188701e0db", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/portal/knowledge-base/page.tsx:83"}, "properties": {"repobilityId": "8cf7f63c724cae55", "scanner": "scanner-primary", "fingerprint": "e751ca188701e0db", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-a1e13b72c5499566", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/about/page.tsx:41"}, "properties": {"repobilityId": "8969ebdd2e4a844e", "scanner": "scanner-primary", "fingerprint": "a1e13b72c5499566", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-304a72b624853e9f", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/home/page.tsx:91"}, "properties": {"repobilityId": "ea2df9560a7ca8b2", "scanner": "scanner-primary", "fingerprint": "304a72b624853e9f", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-76e0f5a6b28757eb", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(public)/_custom-domain/page.tsx:199"}, "properties": {"repobilityId": "d2adcd0957d35473", "scanner": "scanner-primary", "fingerprint": "76e0f5a6b28757eb", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-9d9e34005411d5a2", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(public)/p/[slug]/page.tsx:87"}, "properties": {"repobilityId": "cecf051a9a0182df", "scanner": "scanner-primary", "fingerprint": "9d9e34005411d5a2", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-e87a77e74ee85889", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/email.ts:232"}, "properties": {"repobilityId": "bdf73540c4990d36", "scanner": "scanner-primary", "fingerprint": "e87a77e74ee85889", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3980998db620a1ed", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/lib/ticket-reopen.ts:187"}, "properties": {"repobilityId": "8709cc9827df8e58", "scanner": "scanner-primary", "fingerprint": "3980998db620a1ed", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-8cc0802ca13688a2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/journey-engine.ts:200"}, "properties": {"repobilityId": "886b21aa0d417675", "scanner": "scanner-primary", "fingerprint": "8cc0802ca13688a2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6729fb6867e56d1b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/cloudflare-dns.ts:70"}, "properties": {"repobilityId": "2ed8e1b8978d139c", "scanner": "scanner-primary", "fingerprint": "6729fb6867e56d1b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b66849b17f8c8932", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/lib/report-engine.ts:216"}, "properties": {"repobilityId": "3cdd806dc01a8fe3", "scanner": "scanner-primary", "fingerprint": "b66849b17f8c8932", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-f27719fcb2a60d4f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/tenant-provisioning.ts:297"}, "properties": {"repobilityId": "306f5e5642c56a71", "scanner": "scanner-primary", "fingerprint": "f27719fcb2a60d4f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7bd67a1987107a06", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/lib/tax/providers/local.ts:135"}, "properties": {"repobilityId": "3b15d71d799c3ed3", "scanner": "scanner-primary", "fingerprint": "7bd67a1987107a06", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-7e93d7bd504961ce", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/lib/ai/prompt-safety.ts:187"}, "properties": {"repobilityId": "b29d386d04fb701b", "scanner": "scanner-primary", "fingerprint": "7e93d7bd504961ce", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-764a68cc74c0a85d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/crypto/tenant-pii-encryption.ts:86"}, "properties": {"repobilityId": "cb88a435b1dcf63a", "scanner": "scanner-primary", "fingerprint": "764a68cc74c0a85d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c74c75e71c1d6b9e", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/lib/unified-profile/identity-keys.ts:22"}, "properties": {"repobilityId": "0e45fefa1762b501", "scanner": "scanner-primary", "fingerprint": "c74c75e71c1d6b9e", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-6b0794ae6de46e0b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/lib/agent/atlas/prompt-builder.ts:161"}, "properties": {"repobilityId": "5b1ae0be46e2da03", "scanner": "scanner-primary", "fingerprint": "6b0794ae6de46e0b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-58975e3c525fa131", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/finance/telegram-notify.ts:123"}, "properties": {"repobilityId": "53b064f69f9de831", "scanner": "scanner-primary", "fingerprint": "58975e3c525fa131", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-733496372953af71", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/lib/queue/worker.ts:240"}, "properties": {"repobilityId": "fd7edd9c62dcb1af", "scanner": "scanner-primary", "fingerprint": "733496372953af71", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-e0e5304522c7db9e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/queue/worker.ts:263"}, "properties": {"repobilityId": "6b23fcaf27ba7e2f", "scanner": "scanner-primary", "fingerprint": "e0e5304522c7db9e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-80839cda6adb11cd", "level": "note", "message": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 src/lib/schema-builder/registry.ts:546"}, "properties": {"repobilityId": "3d6670662c9f3591", "scanner": "scanner-primary", "fingerprint": "80839cda6adb11cd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.edge-label.no-bg"]}}, {"ruleId": "scanner-dc8211b27e31d6d5", "level": "warning", "message": {"text": "Privileged port 15 in use"}, "properties": {"repobilityId": "3340f9a170f285cd", "scanner": "scanner-primary", "fingerprint": "dc8211b27e31d6d5", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/cron-customer-insights-snapshot.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f2927c32bcee6a40", "level": "warning", "message": {"text": "Privileged port 465 in use"}, "properties": {"repobilityId": "bcd1f06b60a2b6bc", "scanner": "scanner-primary", "fingerprint": "f2927c32bcee6a40", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/settings/smtp-settings/page.tsx"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8987d6d1c30c7202", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "068fbf45727eac17", "scanner": "scanner-primary", "fingerprint": "8987d6d1c30c7202", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e118961fa98bcfb9", "level": "warning", "message": {"text": "Dockerfile runs as root: services/compute/Dockerfile"}, "properties": {"repobilityId": "84d83f4776f9d9a7", "scanner": "scanner-primary", "fingerprint": "e118961fa98bcfb9", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-945e062a277ecc00", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "properties": {"repobilityId": "eb5db08e37408e34", "scanner": "scanner-primary", "fingerprint": "945e062a277ecc00", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/compute/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-8bbdd5df11393ac6", "level": "error", "message": {"text": "Possible secret in scripts/seed-mtm.ts"}, "properties": {"repobilityId": "27808e3d4711f00d", "scanner": "scanner-primary", "fingerprint": "8bbdd5df11393ac6", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/seed-mtm.ts"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-e1ff86edfc141d67", "level": "error", "message": {"text": "Possible secret in scripts/xss-test-02-07-08.mjs"}, "properties": {"repobilityId": "cc2d1167f2c2e26d", "scanner": "scanner-primary", "fingerprint": "e1ff86edfc141d67", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/xss-test-02-07-08.mjs"}, "region": {"startLine": 115}}}]}, {"ruleId": "scanner-e1ff86edfc141d67", "level": "error", "message": {"text": "Possible secret in scripts/xss-test-02-07-08.mjs"}, "properties": {"repobilityId": "cc2d1167f2c2e26d", "scanner": "scanner-primary", "fingerprint": "e1ff86edfc141d67", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/xss-test-02-07-08.mjs"}, "region": {"startLine": 194}}}]}, {"ruleId": "scanner-e1ff86edfc141d67", "level": "error", "message": {"text": "Possible secret in scripts/xss-test-02-07-08.mjs"}, "properties": {"repobilityId": "cc2d1167f2c2e26d", "scanner": "scanner-primary", "fingerprint": "e1ff86edfc141d67", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/xss-test-02-07-08.mjs"}, "region": {"startLine": 273}}}]}, {"ruleId": "scanner-8fb8acc672bc4c13", "level": "error", "message": {"text": "Possible secret in scripts/xss-exploit.mjs"}, "properties": {"repobilityId": "f0734857440becd9", "scanner": "scanner-primary", "fingerprint": "8fb8acc672bc4c13", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/xss-exploit.mjs"}, "region": {"startLine": 70}}}]}, {"ruleId": "scanner-5aa2355fb06cdec8", "level": "error", "message": {"text": "Possible secret in scripts/capture-ai-email.mjs"}, "properties": {"repobilityId": "a1beba014655178d", "scanner": "scanner-primary", "fingerprint": "5aa2355fb06cdec8", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/capture-ai-email.mjs"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-502302550594812a", "level": "error", "message": {"text": "Possible secret in scripts/capture-fixes.mjs"}, "properties": {"repobilityId": "418d91a2d294f870", "scanner": "scanner-primary", "fingerprint": "502302550594812a", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/capture-fixes.mjs"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-e52a616ee982b1df", "level": "error", "message": {"text": "Possible secret in scripts/capture-email-portal.mjs"}, "properties": {"repobilityId": "ab37e928f9cf52f5", "scanner": "scanner-primary", "fingerprint": "e52a616ee982b1df", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/capture-email-portal.mjs"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-9168a4fd956e98b4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/lint-encrypted-columns.mjs:33"}, "properties": {"repobilityId": "8e8d8957c79a7aa8", "scanner": "scanner-primary", "fingerprint": "9168a4fd956e98b4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/lint-encrypted-columns.mjs"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-e715d0c0caa72867", "level": "error", "message": {"text": "Possible secret in scripts/farid-edge-cases.ts"}, "properties": {"repobilityId": "785f533b20b58e80", "scanner": "scanner-primary", "fingerprint": "e715d0c0caa72867", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/farid-edge-cases.ts"}, "region": {"startLine": 140}}}]}, {"ruleId": "scanner-4e32350a5a66ac82", "level": "error", "message": {"text": "Possible secret in scripts/take-screenshots.mjs"}, "properties": {"repobilityId": "34ece2758fc70443", "scanner": "scanner-primary", "fingerprint": "4e32350a5a66ac82", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/take-screenshots.mjs"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-9bec3984868bab2b", "level": "error", "message": {"text": "Possible secret in scripts/xss-exploit-test.js"}, "properties": {"repobilityId": "0f520a7162db08b0", "scanner": "scanner-primary", "fingerprint": "9bec3984868bab2b", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/xss-exploit-test.js"}, "region": {"startLine": 111}}}]}, {"ruleId": "scanner-ca9815076aae1295", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in telegram-bridge/bot.js:2"}, "properties": {"repobilityId": "31163a710f8db1ac", "scanner": "scanner-primary", "fingerprint": "ca9815076aae1295", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "telegram-bridge/bot.js"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-a6e0ccde47b7c0cb", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in deliverables/xss_exploitation_queue.json:9"}, "properties": {"repobilityId": "2398e2a8beba12b2", "scanner": "scanner-primary", "fingerprint": "a6e0ccde47b7c0cb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "deliverables/xss_exploitation_queue.json"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-f107f25d5b1ebf5d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in deliverables/xss_exploitation_queue.json:57"}, "properties": {"repobilityId": "0ffce8c802367de8", "scanner": "scanner-primary", "fingerprint": "f107f25d5b1ebf5d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "deliverables/xss_exploitation_queue.json"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-bb98eee61b83e01e", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in deliverables/xss_exploitation_queue_temp.json:9"}, "properties": {"repobilityId": "0fe882c9c0e86807", "scanner": "scanner-primary", "fingerprint": "bb98eee61b83e01e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "deliverables/xss_exploitation_queue_temp.json"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-67587d7efb1e874c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in deliverables/xss_exploitation_queue_temp.json:57"}, "properties": {"repobilityId": "a2d9e1124241ac69", "scanner": "scanner-primary", "fingerprint": "67587d7efb1e874c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "deliverables/xss_exploitation_queue_temp.json"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-6f91e38326d94f18", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/skills/brand/scripts/sync-brand-to-tokens.cjs:14"}, "properties": {"repobilityId": "cb789514f1208f11", "scanner": "scanner-primary", "fingerprint": "6f91e38326d94f18", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/brand/scripts/sync-brand-to-tokens.cjs"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-c2e85a43f4e6bb36", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/widget.js:71"}, "properties": {"repobilityId": "478de7554c3cd586", "scanner": "scanner-primary", "fingerprint": "c2e85a43f4e6bb36", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "public/widget.js"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-09a8e72b247de7b7", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in src/__tests__/lib-apex.test.ts:348"}, "properties": {"repobilityId": "5f5a4f194918578b", "scanner": "scanner-primary", "fingerprint": "09a8e72b247de7b7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/__tests__/lib-apex.test.ts"}, "region": {"startLine": 348}}}]}, {"ruleId": "scanner-05b1e91fe52d5f42", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in src/components/marketing/live-chat.tsx:34"}, "properties": {"repobilityId": "449fc56f882f7649", "scanner": "scanner-primary", "fingerprint": "05b1e91fe52d5f42", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/marketing/live-chat.tsx"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-6a86ac2e66eca1c4", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/profitability/ai-observations.tsx:170"}, "properties": {"repobilityId": "72e360664ed038ca", "scanner": "scanner-primary", "fingerprint": "6a86ac2e66eca1c4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/profitability/ai-observations.tsx"}, "region": {"startLine": 170}}}]}, {"ruleId": "scanner-6e18db277d362d51", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in src/app/api/v1/mtm/mobile/shelf-analytics/[id]/route.ts:68"}, "properties": {"repobilityId": "fe213c77d29c2a6a", "scanner": "scanner-primary", "fingerprint": "6e18db277d362d51", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/api/v1/mtm/mobile/shelf-analytics/[id]/route.ts"}, "region": {"startLine": 68}}}]}, {"ruleId": "scanner-cfb21a107aba687e", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in src/app/api/v1/mtm/mobile/shelf-analytics/analyze/route.ts:548"}, "properties": {"repobilityId": "cfb4d9857cf88c5d", "scanner": "scanner-primary", "fingerprint": "cfb21a107aba687e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/api/v1/mtm/mobile/shelf-analytics/analyze/route.ts"}, "region": {"startLine": 548}}}]}, {"ruleId": "scanner-4e2481a844274cab", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in src/app/api/v1/admin/tenants/route.ts:171"}, "properties": {"repobilityId": "550d985523a10947", "scanner": "scanner-primary", "fingerprint": "4e2481a844274cab", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/api/v1/admin/tenants/route.ts"}, "region": {"startLine": 171}}}]}, {"ruleId": "scanner-38c8c8a1acf29911", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/app/api/v1/admin/tenants/route.ts:12"}, "properties": {"repobilityId": "223b8424091c6bad", "scanner": "scanner-primary", "fingerprint": "38c8c8a1acf29911", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/api/v1/admin/tenants/route.ts"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-281e6d7adf8dd572", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in src/app/api/v1/public/leads/route.ts:58"}, "properties": {"repobilityId": "ed0143fa526b76f9", "scanner": "scanner-primary", "fingerprint": "281e6d7adf8dd572", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/api/v1/public/leads/route.ts"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-54f7a3478c404694", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in src/app/api/v1/public/form-submit/route.ts:8"}, "properties": {"repobilityId": "4fd38780b7c85e49", "scanner": "scanner-primary", "fingerprint": "54f7a3478c404694", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/api/v1/public/form-submit/route.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-b781a1628cfbe45a", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(dashboard)/knowledge-base/[id]/page.tsx:136"}, "properties": {"repobilityId": "47639b8ab6ac05b9", "scanner": "scanner-primary", "fingerprint": "b781a1628cfbe45a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/knowledge-base/[id]/page.tsx"}, "region": {"startLine": 136}}}]}, {"ruleId": "scanner-a28b76670804c618", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(dashboard)/email-log/page.tsx:331"}, "properties": {"repobilityId": "8bfcb654f8717db1", "scanner": "scanner-primary", "fingerprint": "a28b76670804c618", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/email-log/page.tsx"}, "region": {"startLine": 331}}}]}, {"ruleId": "scanner-e4940a06f6c0c0df", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/portal/knowledge-base/page.tsx:83"}, "properties": {"repobilityId": "5aa8f47e6f1ed358", "scanner": "scanner-primary", "fingerprint": "e4940a06f6c0c0df", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/portal/knowledge-base/page.tsx"}, "region": {"startLine": 83}}}]}, {"ruleId": "scanner-6b6dee4d92c40aa1", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/about/page.tsx:41"}, "properties": {"repobilityId": "bab2751a8d20e01b", "scanner": "scanner-primary", "fingerprint": "6b6dee4d92c40aa1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(marketing)/about/page.tsx"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-a992780642aa13e1", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/home/page.tsx:91"}, "properties": {"repobilityId": "860ec8b0a84180b5", "scanner": "scanner-primary", "fingerprint": "a992780642aa13e1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(marketing)/home/page.tsx"}, "region": {"startLine": 91}}}]}, {"ruleId": "scanner-6e21a7f48ecd5343", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(public)/_custom-domain/page.tsx:199"}, "properties": {"repobilityId": "1e490b4b01987d34", "scanner": "scanner-primary", "fingerprint": "6e21a7f48ecd5343", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(public)/_custom-domain/page.tsx"}, "region": {"startLine": 199}}}]}, {"ruleId": "scanner-b93a6bee6cd2edad", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/app/(public)/_custom-domain/page.tsx:241"}, "properties": {"repobilityId": "d1304692d42c0309", "scanner": "scanner-primary", "fingerprint": "b93a6bee6cd2edad", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(public)/_custom-domain/page.tsx"}, "region": {"startLine": 241}}}]}, {"ruleId": "scanner-e3bfcde47663c8ff", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(public)/p/[slug]/page.tsx:87"}, "properties": {"repobilityId": "4e1898b49f9821a0", "scanner": "scanner-primary", "fingerprint": "e3bfcde47663c8ff", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(public)/p/[slug]/page.tsx"}, "region": {"startLine": 87}}}]}, {"ruleId": "scanner-aa47801cf61f15f9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/app/(public)/p/[slug]/page.tsx:129"}, "properties": {"repobilityId": "ebb5032e118372c9", "scanner": "scanner-primary", "fingerprint": "aa47801cf61f15f9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(public)/p/[slug]/page.tsx"}, "region": {"startLine": 129}}}]}, {"ruleId": "scanner-0f6271f1018698ed", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in src/lib/mtm/shelf-scan-response.ts:18"}, "properties": {"repobilityId": "f0ca00beba70d6bf", "scanner": "scanner-primary", "fingerprint": "0f6271f1018698ed", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/mtm/shelf-scan-response.ts"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-e74f294b720edd78", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0696e5e65da713e8", "scanner": "scanner-primary", "fingerprint": "e74f294b720edd78", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr-checks.yml"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-e74f294b720edd78", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0c706db25b09fc15", "scanner": "scanner-primary", "fingerprint": "e74f294b720edd78", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr-checks.yml"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-e74f294b720edd78", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "abf27deef9ee6bd1", "scanner": "scanner-primary", "fingerprint": "e74f294b720edd78", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr-checks.yml"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "722ab4643920a278", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c266bde81c839bdc", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "dc9dd28b53b3cc0d", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "dc9dd28b53b3cc0d", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-b3107cf04f90de94", "level": "note", "message": {"text": "Very large file: scripts/seed-tenant-demo.mjs (4363 lines)"}, "properties": {"repobilityId": "5a71ea1f21876c90", "scanner": "scanner-primary", "fingerprint": "b3107cf04f90de94", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d5263ff5866a9f54", "level": "note", "message": {"text": "Very large file: scripts/add-hints.js (1357 lines)"}, "properties": {"repobilityId": "9c46531a0670c44c", "scanner": "scanner-primary", "fingerprint": "d5263ff5866a9f54", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7ea3a94d0b3c375d", "level": "note", "message": {"text": "Very large file: scripts/seeds/afigroup.mjs (1331 lines)"}, "properties": {"repobilityId": "b603fe2e07630658", "scanner": "scanner-primary", "fingerprint": "7ea3a94d0b3c375d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bcccbba53270667b", "level": "note", "message": {"text": "Very large file: src/__tests__/api-tasks.test.ts (1636 lines)"}, "properties": {"repobilityId": "38c228be9a14d659", "scanner": "scanner-primary", "fingerprint": "bcccbba53270667b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-074a0680392f517a", "level": "note", "message": {"text": "Very large file: src/__tests__/api-sign-portal.test.ts (1673 lines)"}, "properties": {"repobilityId": "5f9acdde8a308635", "scanner": "scanner-primary", "fingerprint": "074a0680392f517a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2eb6244dd1a05cdd", "level": "note", "message": {"text": "Very large file: src/components/tasks/task-detail-view.tsx (1589 lines)"}, "properties": {"repobilityId": "c4540eb6cf669d0c", "scanner": "scanner-primary", "fingerprint": "2eb6244dd1a05cdd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-62690a93b9c6e6f2", "level": "note", "message": {"text": "Very large file: src/components/tasks/inline-tasks-table.tsx (1993 lines)"}, "properties": {"repobilityId": "84d03c9aee26e3a0", "scanner": "scanner-primary", "fingerprint": "62690a93b9c6e6f2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3f12194848fc46df", "level": "note", "message": {"text": "Very large file: src/components/marketing/module-showcase.tsx (2330 lines)"}, "properties": {"repobilityId": "3254f4a9530ba9ad", "scanner": "scanner-primary", "fingerprint": "3f12194848fc46df", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6f7a8fdd72b20e37", "level": "note", "message": {"text": "Very large file: src/components/marketing/module-previews.tsx (1316 lines)"}, "properties": {"repobilityId": "b2aa6cf8e0cd6eca", "scanner": "scanner-primary", "fingerprint": "6f7a8fdd72b20e37", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea82de6794e0523a", "level": "note", "message": {"text": "Very large file: src/app/api/v1/webhooks/whatsapp/route.ts (1036 lines)"}, "properties": {"repobilityId": "b834062078ea9028", "scanner": "scanner-primary", "fingerprint": "ea82de6794e0523a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0e87183883d7acff", "level": "note", "message": {"text": "Very large file: src/app/(dashboard)/journeys/page.tsx (1056 lines)"}, "properties": {"repobilityId": "3f13e4196bb7a600", "scanner": "scanner-primary", "fingerprint": "0e87183883d7acff", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-41b67f1da555fc15", "level": "note", "message": {"text": "Very large file: src/app/(dashboard)/leads/page.tsx (1207 lines)"}, "properties": {"repobilityId": "b9c3192cf5219e96", "scanner": "scanner-primary", "fingerprint": "41b67f1da555fc15", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c1a4ad9b2f381f2a", "level": "note", "message": {"text": "Very large file: src/app/(dashboard)/leads/[id]/page.tsx (1397 lines)"}, "properties": {"repobilityId": "ea5541a7cad5744d", "scanner": "scanner-primary", "fingerprint": "c1a4ad9b2f381f2a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d010e451c8d1dfa9", "level": "note", "message": {"text": "Very large file: src/app/(dashboard)/tasks/page.tsx (1475 lines)"}, "properties": {"repobilityId": "7a578688a3b0f62a", "scanner": "scanner-primary", "fingerprint": "d010e451c8d1dfa9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e08b269049779665", "level": "note", "message": {"text": "Very large file: src/app/(dashboard)/tickets/[id]/page.tsx (1237 lines)"}, "properties": {"repobilityId": "dcfbf14f12dd426b", "scanner": "scanner-primary", "fingerprint": "e08b269049779665", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea667f299ae4c8ad", "level": "note", "message": {"text": "Very large file: src/app/(dashboard)/budgeting/page.tsx (4225 lines)"}, "properties": {"repobilityId": "7a504d8fc6f68e6a", "scanner": "scanner-primary", "fingerprint": "ea667f299ae4c8ad", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4eb7802618a0cc05", "level": "note", "message": {"text": "Very large file: src/app/(dashboard)/ai-command-center/page.tsx (1161 lines)"}, "properties": {"repobilityId": "c62712146d46f472", "scanner": "scanner-primary", "fingerprint": "4eb7802618a0cc05", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9e0420aec7bacc5f", "level": "note", "message": {"text": "Very large file: src/app/(dashboard)/contracts/page.tsx (1596 lines)"}, "properties": {"repobilityId": "48c57a10e504f3e6", "scanner": "scanner-primary", "fingerprint": "9e0420aec7bacc5f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e0e1c7c090ada38e", "level": "note", "message": {"text": "Very large file: src/app/(dashboard)/contracts/[id]/page.tsx (3694 lines)"}, "properties": {"repobilityId": "61432e911dc55379", "scanner": "scanner-primary", "fingerprint": "e0e1c7c090ada38e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0646381d551a4057", "level": "note", "message": {"text": "Very large file: src/app/(dashboard)/contracts/templates/page.tsx (1311 lines)"}, "properties": {"repobilityId": "77e525398dddd43b", "scanner": "scanner-primary", "fingerprint": "0646381d551a4057", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-372382bf26375a63", "level": "note", "message": {"text": "Very large file: src/app/(dashboard)/inbox/page.tsx (1617 lines)"}, "properties": {"repobilityId": "044dabb921d83b1c", "scanner": "scanner-primary", "fingerprint": "372382bf26375a63", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-899e79636ee18570", "level": "note", "message": {"text": "Very large file: src/app/(dashboard)/boards/[divisionId]/page.tsx (1062 lines)"}, "properties": {"repobilityId": "83e3393a7f8cb275", "scanner": "scanner-primary", "fingerprint": "899e79636ee18570", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4d31e7661606ec3c", "level": "note", "message": {"text": "Very large file: src/app/(dashboard)/pricing/page.tsx (1556 lines)"}, "properties": {"repobilityId": "4378edad471bb962", "scanner": "scanner-primary", "fingerprint": "4d31e7661606ec3c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-86e25b1768a54dfa", "level": "note", "message": {"text": "Very large file: src/app/(dashboard)/invoices/[id]/page.tsx (2070 lines)"}, "properties": {"repobilityId": "7aa2d284c7a914dd", "scanner": "scanner-primary", "fingerprint": "86e25b1768a54dfa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fc443a907f5fe132", "level": "note", "message": {"text": "Very large file: src/content/help/registry.ts (1186 lines)"}, "properties": {"repobilityId": "a5ae6c71909d0a66", "scanner": "scanner-primary", "fingerprint": "fc443a907f5fe132", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea3b5e389d8c9c0f", "level": "note", "message": {"text": "Low test-to-source ratio"}, "properties": {"repobilityId": "ef7b2552cc00a375", "scanner": "scanner-primary", "fingerprint": "ea3b5e389d8c9c0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["tests"]}}, {"ruleId": "scanner-44a7cf0cfc2b6b0b", "level": "note", "message": {"text": "72 TODO/FIXME markers"}, "properties": {"repobilityId": "4b38c118003e07d2", "scanner": "scanner-primary", "fingerprint": "44a7cf0cfc2b6b0b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["maintenance"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "565819d12ab55dbc", "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": "90bb401870f8ac6c", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "3c930c0f7e9d9ddc", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "29fd6a7fd8ab8afe", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "207b44d31049b460", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "87d7dbc3d652b177", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-122f91b7f2906dc4", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/settings.json"}, "properties": {"repobilityId": "a2967269048b6a9d", "scanner": "scanner-primary", "fingerprint": "122f91b7f2906dc4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/settings.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-646ebf94ee5f0daf", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/agents/architect.md"}, "properties": {"repobilityId": "6b392900284cd61d", "scanner": "scanner-primary", "fingerprint": "646ebf94ee5f0daf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/architect.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fe4826c8fe2e64d5", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/brand/references/asset-organization.md"}, "properties": {"repobilityId": "a3ba7cd7932d1b8c", "scanner": "scanner-primary", "fingerprint": "fe4826c8fe2e64d5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/brand/references/asset-organization.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4f1adf71fa42c354", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/brand/templates/brand-guidelines-starter.md"}, "properties": {"repobilityId": "b9489cf003051881", "scanner": "scanner-primary", "fingerprint": "4f1adf71fa42c354", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/brand/templates/brand-guidelines-starter.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9aacdde86114e962", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/ui-styling/references/shadcn-accessibility.md"}, "properties": {"repobilityId": "ba987a3718652311", "scanner": "scanner-primary", "fingerprint": "9aacdde86114e962", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/ui-styling/references/shadcn-accessibility.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-174e2536d1171d35", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/ui-styling/references/shadcn-components.md"}, "properties": {"repobilityId": "dddda59c0751e768", "scanner": "scanner-primary", "fingerprint": "174e2536d1171d35", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/ui-styling/references/shadcn-components.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-297a89e3aaefd34f", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/banner-design/SKILL.md"}, "properties": {"repobilityId": "cd18ee13c514a43d", "scanner": "scanner-primary", "fingerprint": "297a89e3aaefd34f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/banner-design/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7fa5686d97d8e5e8", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/banner-design/references/banner-sizes-and-styles.md"}, "properties": {"repobilityId": "6990b7dad03aeeb0", "scanner": "scanner-primary", "fingerprint": "7fa5686d97d8e5e8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/banner-design/references/banner-sizes-and-styles.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-efd944ff0e1991f3", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/design/references/slides-layout-patterns.md"}, "properties": {"repobilityId": "4a0cf968f56c557c", "scanner": "scanner-primary", "fingerprint": "efd944ff0e1991f3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/design/references/slides-layout-patterns.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5f1d43b3de4e0dcd", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/design/references/cip-design.md"}, "properties": {"repobilityId": "3dbf32d07b2a4ddf", "scanner": "scanner-primary", "fingerprint": "5f1d43b3de4e0dcd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/design/references/cip-design.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bc31d2bbc9c2d406", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/design/references/banner-sizes-and-styles.md"}, "properties": {"repobilityId": "e39d675aeb4642dd", "scanner": "scanner-primary", "fingerprint": "bc31d2bbc9c2d406", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/design/references/banner-sizes-and-styles.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-db0739837029be5e", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/design/references/slides-strategies.md"}, "properties": {"repobilityId": "42032ed57672ab10", "scanner": "scanner-primary", "fingerprint": "db0739837029be5e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/design/references/slides-strategies.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ec269b993ce6613a", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/design/references/logo-design.md"}, "properties": {"repobilityId": "de41e62b274f9edb", "scanner": "scanner-primary", "fingerprint": "ec269b993ce6613a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/design/references/logo-design.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-287d4cf2d33f58ff", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/design/references/slides.md"}, "properties": {"repobilityId": "c0c6a85ec0c49011", "scanner": "scanner-primary", "fingerprint": "287d4cf2d33f58ff", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/design/references/slides.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a9efd6148b14c4dd", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/design-system/SKILL.md"}, "properties": {"repobilityId": "bf378b1477697d22", "scanner": "scanner-primary", "fingerprint": "a9efd6148b14c4dd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/design-system/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d60e06b48b7fa56d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/design-system/references/tailwind-integration.md"}, "properties": {"repobilityId": "de09068c62608a74", "scanner": "scanner-primary", "fingerprint": "d60e06b48b7fa56d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/design-system/references/tailwind-integration.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-08f8f3764ea9cbf2", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/slides/SKILL.md"}, "properties": {"repobilityId": "71c07c438b374cda", "scanner": "scanner-primary", "fingerprint": "08f8f3764ea9cbf2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/slides/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5df68c6f99043d0b", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/slides/references/layout-patterns.md"}, "properties": {"repobilityId": "4312123c3cf7ee8b", "scanner": "scanner-primary", "fingerprint": "5df68c6f99043d0b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/slides/references/layout-patterns.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-44315c6caebd5a6a", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/slides/references/slide-strategies.md"}, "properties": {"repobilityId": "f946a1d7b07b6ea9", "scanner": "scanner-primary", "fingerprint": "44315c6caebd5a6a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/slides/references/slide-strategies.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-62acb21c7af162dc", "level": "none", "message": {"text": "Commented-code block (7 lines) in ecosystem.config.cjs:26"}, "properties": {"repobilityId": "a7756449a2fee2a1", "scanner": "scanner-primary", "fingerprint": "62acb21c7af162dc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a16b5cf73d1c1b1a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 ecosystem.config.cjs:30"}, "properties": {"repobilityId": "b347e49ffebddac6", "scanner": "scanner-primary", "fingerprint": "a16b5cf73d1c1b1a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-792e09f75d2d46cc", "level": "none", "message": {"text": "Commented-code block (5 lines) in next.config.ts:12"}, "properties": {"repobilityId": "db2543a857a96553", "scanner": "scanner-primary", "fingerprint": "792e09f75d2d46cc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a981d084f319c911", "level": "none", "message": {"text": "Commented-code block (13 lines) in generated/logos/master-d-notch.mjs:14"}, "properties": {"repobilityId": "7a2c26d13061652c", "scanner": "scanner-primary", "fingerprint": "a981d084f319c911", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b824dc9e1093615f", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/seed-mtm.ts:65"}, "properties": {"repobilityId": "14b4b4865c094e6f", "scanner": "scanner-primary", "fingerprint": "b824dc9e1093615f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-de28de727d2b9886", "level": "note", "message": {"text": "Legacy-named symbol `sha256_demo_hash_not_real_key_deprecated_old` in scripts/seed-tenant-demo.mjs:2975"}, "properties": {"repobilityId": "f82644563b60b9e2", "scanner": "scanner-primary", "fingerprint": "de28de727d2b9886", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9ccfdcdfcf62a224", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/seed-tenant-demo.mjs:82"}, "properties": {"repobilityId": "9653cb03d6c69983", "scanner": "scanner-primary", "fingerprint": "9ccfdcdfcf62a224", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d0eb4641ce189058", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/xss-exploit.mjs:52"}, "properties": {"repobilityId": "9ae3ac0fb8830b4b", "scanner": "scanner-primary", "fingerprint": "d0eb4641ce189058", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-abbd6663dccd4a2f", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/_rls.mjs:1"}, "properties": {"repobilityId": "c147bfeaf08313e1", "scanner": "scanner-primary", "fingerprint": "abbd6663dccd4a2f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8f3e8606962b6c15", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/seed-plan-templates.mjs:9"}, "properties": {"repobilityId": "df1df4c04de8a3f9", "scanner": "scanner-primary", "fingerprint": "8f3e8606962b6c15", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e520af54b55efed3", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/backfill-group-modules.mjs:1"}, "properties": {"repobilityId": "ba98f3cfe2167da6", "scanner": "scanner-primary", "fingerprint": "e520af54b55efed3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f16fdab102106f47", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/capture-ai-email.mjs:29"}, "properties": {"repobilityId": "638b2a7f27c7ba94", "scanner": "scanner-primary", "fingerprint": "f16fdab102106f47", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-13fd2821777a5cea", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/capture-fixes.mjs:13"}, "properties": {"repobilityId": "93084871b98d6fa4", "scanner": "scanner-primary", "fingerprint": "13fd2821777a5cea", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-024903d0dd49980e", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/backfill-sales-module.mjs:1"}, "properties": {"repobilityId": "85ad4cfb2f3b4582", "scanner": "scanner-primary", "fingerprint": "024903d0dd49980e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-09376c8fed9d0756", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/migrate-v1.ts:24"}, "properties": {"repobilityId": "889f359c228dd259", "scanner": "scanner-primary", "fingerprint": "09376c8fed9d0756", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3214bb03bad130cb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/capture-email-portal.mjs:13"}, "properties": {"repobilityId": "e7cfdae3c158519a", "scanner": "scanner-primary", "fingerprint": "3214bb03bad130cb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-07dad327b8ba6f1c", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lint-encrypted-columns.mjs:155"}, "properties": {"repobilityId": "eb49ccf67416b6b2", "scanner": "scanner-primary", "fingerprint": "07dad327b8ba6f1c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-74d0cf631ab8c9bd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/check-fb-token.mjs:27"}, "properties": {"repobilityId": "5b200b5c3f10b128", "scanner": "scanner-primary", "fingerprint": "74d0cf631ab8c9bd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-005e5ac1d75e1cd9", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/farid-edge-cases.ts:308"}, "properties": {"repobilityId": "ccdd4f307aed073f", "scanner": "scanner-primary", "fingerprint": "005e5ac1d75e1cd9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3254d041117bb583", "level": "none", "message": {"text": "Commented-code block (9 lines) in scripts/backfill-plan-features.mjs:4"}, "properties": {"repobilityId": "19c63fef21b05d52", "scanner": "scanner-primary", "fingerprint": "3254d041117bb583", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b141e12dbd55846", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/migrate-mtm-orders-items.mjs:1"}, "properties": {"repobilityId": "ab1cc037dbdbbfcc", "scanner": "scanner-primary", "fingerprint": "6b141e12dbd55846", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e7e54435c0ec9578", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/backfill-attribution-touchpoints.mjs:4"}, "properties": {"repobilityId": "7eb82b28b6dbed38", "scanner": "scanner-primary", "fingerprint": "e7e54435c0ec9578", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-38938e17a00024c7", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/backfill-base-modules.mjs:1"}, "properties": {"repobilityId": "1b210f39a23e48c5", "scanner": "scanner-primary", "fingerprint": "38938e17a00024c7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b708dfdda986f84e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/xss-exploit-test.js:31"}, "properties": {"repobilityId": "8ebf830d1ad543c1", "scanner": "scanner-primary", "fingerprint": "b708dfdda986f84e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a0a987b89759ea90", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/capture-marketing-screenshots.mjs:63"}, "properties": {"repobilityId": "3c86327bf1d3b9db", "scanner": "scanner-primary", "fingerprint": "a0a987b89759ea90", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0290f6033b1384ae", "level": "note", "message": {"text": "Legacy-named symbol `n_copy` in scripts/graphify-fix-collapsed-handlers.py:89"}, "properties": {"repobilityId": "9b92bb1c00be16d1", "scanner": "scanner-primary", "fingerprint": "0290f6033b1384ae", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-195148076e60d4a0", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/graphify-fix-collapsed-handlers.py:110"}, "properties": {"repobilityId": "b53aa4ef99c588db", "scanner": "scanner-primary", "fingerprint": "195148076e60d4a0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ca835d1c26453f5b", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/seeds/mars.mjs:3"}, "properties": {"repobilityId": "e52db022def5e3b5", "scanner": "scanner-primary", "fingerprint": "ca835d1c26453f5b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-563df3980300926a", "level": "none", "message": {"text": "Commented-code block (9 lines) in scripts/seeds/mars-planogram-test.mjs:3"}, "properties": {"repobilityId": "26f4f2a88a0c5760", "scanner": "scanner-primary", "fingerprint": "563df3980300926a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3c70b6fe22b34610", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/rls/spike-extension-mechanics.mjs:82"}, "properties": {"repobilityId": "2f8b95482a3fda6b", "scanner": "scanner-primary", "fingerprint": "3c70b6fe22b34610", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-457fd7ebe9387c6d", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/rls/generate-rls-policies.mjs:1"}, "properties": {"repobilityId": "195213c56b95d620", "scanner": "scanner-primary", "fingerprint": "457fd7ebe9387c6d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a9b318eb3310b1ca", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 .claude/skills/design-system/scripts/slide-token-validator.py:30"}, "properties": {"repobilityId": "cef1d5a436156148", "scanner": "scanner-primary", "fingerprint": "a9b318eb3310b1ca", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c9b0916cddc3953a", "level": "note", "message": {"text": "Legacy-named symbol `item_copy` in services/compute/cost_model.py:89"}, "properties": {"repobilityId": "2fcf76fdddae129d", "scanner": "scanner-primary", "fingerprint": "c9b0916cddc3953a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1320de959133474a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 public/sw.js:1"}, "properties": {"repobilityId": "473e97034615020a", "scanner": "scanner-primary", "fingerprint": "1320de959133474a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3ed4b218950de679", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/middleware.ts:18"}, "properties": {"repobilityId": "de3c1c9006c4fa9e", "scanner": "scanner-primary", "fingerprint": "3ed4b218950de679", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-af8d8015290a6ee5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/__tests__/email-providers.test.ts:34"}, "properties": {"repobilityId": "f741839e95b6db21", "scanner": "scanner-primary", "fingerprint": "af8d8015290a6ee5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-56e3ad56519ceb5c", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/__tests__/lib-segment-activation.test.ts:450"}, "properties": {"repobilityId": "04510fc0913286d0", "scanner": "scanner-primary", "fingerprint": "56e3ad56519ceb5c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-835046dad66c209a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/lib-board-permission.test.ts:118"}, "properties": {"repobilityId": "3ac2fe0e997711f2", "scanner": "scanner-primary", "fingerprint": "835046dad66c209a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-438fc765e0ffb751", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/__tests__/shelf-analysis-metrics.test.ts:112"}, "properties": {"repobilityId": "cb0dcb911d0c5c45", "scanner": "scanner-primary", "fingerprint": "438fc765e0ffb751", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1dd44cd02bb62d36", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/api-contacts-bulk.test.ts:130"}, "properties": {"repobilityId": "35dbf847556f958d", "scanner": "scanner-primary", "fingerprint": "1dd44cd02bb62d36", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e089671d79762cc6", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/api-oms-routes.test.ts:449"}, "properties": {"repobilityId": "0febd91828164773", "scanner": "scanner-primary", "fingerprint": "e089671d79762cc6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cd112d200463683c", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/__tests__/no-bare-anthropic-constructor.test.ts:7"}, "properties": {"repobilityId": "395aa9bec3a1078f", "scanner": "scanner-primary", "fingerprint": "cd112d200463683c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4cea9ba2c75fff38", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/__tests__/mobile-auth-scope.test.ts:392"}, "properties": {"repobilityId": "7c74e618446ac584", "scanner": "scanner-primary", "fingerprint": "4cea9ba2c75fff38", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8f84f7437e40e6c7", "level": "note", "message": {"text": "Legacy-named symbol `usedOld` in src/__tests__/lib-queue-otp-cleanup.test.ts:9"}, "properties": {"repobilityId": "a2c4514e2d9777b1", "scanner": "scanner-primary", "fingerprint": "8f84f7437e40e6c7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-30e413b47f1df935", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/lib-unified-profile.test.ts:90"}, "properties": {"repobilityId": "921534606dd4a30e", "scanner": "scanner-primary", "fingerprint": "30e413b47f1df935", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cc0380d4fe850554", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/__tests__/lib-cpq-totals.test.ts:178"}, "properties": {"repobilityId": "7daaa693cd16883b", "scanner": "scanner-primary", "fingerprint": "cc0380d4fe850554", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0e94ebb2e2aceee8", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/lib-schema-builder-registry.test.ts:71"}, "properties": {"repobilityId": "76b963f7906871f6", "scanner": "scanner-primary", "fingerprint": "0e94ebb2e2aceee8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-18a4ff8d7d227939", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/__tests__/lib-transcription-types.test.ts:105"}, "properties": {"repobilityId": "098581bd73fe04b3", "scanner": "scanner-primary", "fingerprint": "18a4ff8d7d227939", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6dc16519542ccc8b", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/__tests__/lib-contract-lifecycle.test.ts:729"}, "properties": {"repobilityId": "38d237b40a55be98", "scanner": "scanner-primary", "fingerprint": "6dc16519542ccc8b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9d5d66eb1780b279", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/__tests__/api-deals-bulk.test.ts:52"}, "properties": {"repobilityId": "ed9be9fe5174ade7", "scanner": "scanner-primary", "fingerprint": "9d5d66eb1780b279", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8e11940502389f41", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/lib-api-auth.test.ts:411"}, "properties": {"repobilityId": "a94e9fe2257dcf51", "scanner": "scanner-primary", "fingerprint": "8e11940502389f41", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb031ed8678ca469", "level": "note", "message": {"text": "Legacy-named symbol `r_old` in src/__tests__/lib-loyalty.test.ts:950"}, "properties": {"repobilityId": "7fc816de26704d33", "scanner": "scanner-primary", "fingerprint": "eb031ed8678ca469", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-65a503b7d82a4bc6", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/lib-health.test.ts:513"}, "properties": {"repobilityId": "547e50347c72bfb9", "scanner": "scanner-primary", "fingerprint": "65a503b7d82a4bc6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb50363bc1fd4388", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/__tests__/lib-cpq-spawn-contract.test.ts:74"}, "properties": {"repobilityId": "094000cf8b030f98", "scanner": "scanner-primary", "fingerprint": "cb50363bc1fd4388", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3ac0c3c67a548bb9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/lib-notifications-taxonomy.test.ts:36"}, "properties": {"repobilityId": "fad9b9b6ab839056", "scanner": "scanner-primary", "fingerprint": "3ac0c3c67a548bb9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9564d252bbd13482", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/api-revenue-recalculate.test.ts:285"}, "properties": {"repobilityId": "050ff33d3ac9a737", "scanner": "scanner-primary", "fingerprint": "9564d252bbd13482", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3540e9a1ce5974f2", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/__tests__/rls-withrls-no-reresolve.test.ts:1"}, "properties": {"repobilityId": "009d7c2ce7cb21aa", "scanner": "scanner-primary", "fingerprint": "3540e9a1ce5974f2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f66d1e05272bebe", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/__tests__/lib-mtm-photo-watermark-validate-exif.test.ts:4"}, "properties": {"repobilityId": "1bf06525b9b4d624", "scanner": "scanner-primary", "fingerprint": "2f66d1e05272bebe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5eaa8f4255fdec99", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/api-contract-body.test.ts:289"}, "properties": {"repobilityId": "ac9289fbe8f33ecf", "scanner": "scanner-primary", "fingerprint": "5eaa8f4255fdec99", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a40c1c70660c72d7", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/lib-notifications-access.test.ts:114"}, "properties": {"repobilityId": "83de9b0262930373", "scanner": "scanner-primary", "fingerprint": "a40c1c70660c72d7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9cdb78ae461219df", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/api-deals-ai-analysis-timeout.test.ts:6"}, "properties": {"repobilityId": "4e7fe16828b64600", "scanner": "scanner-primary", "fingerprint": "9cdb78ae461219df", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb8b4e7954467790", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/api-submit-for-approval.test.ts:117"}, "properties": {"repobilityId": "f26b5a2c5c083aff", "scanner": "scanner-primary", "fingerprint": "fb8b4e7954467790", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a24bdba03e07422e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/api-mtm-routes.test.ts:79"}, "properties": {"repobilityId": "7eaf174c5b56c328", "scanner": "scanner-primary", "fingerprint": "a24bdba03e07422e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-275f3a802751bbf7", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/__tests__/nav-items.test.ts:69"}, "properties": {"repobilityId": "6b1233b55a82e724", "scanner": "scanner-primary", "fingerprint": "275f3a802751bbf7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-23665a9643cee93e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/api-tasks-bulk.test.ts:4"}, "properties": {"repobilityId": "3845a84f7a96b829", "scanner": "scanner-primary", "fingerprint": "23665a9643cee93e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7ce0c761919c0f88", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/shelf-metrics-m3-3c.test.ts:46"}, "properties": {"repobilityId": "20f6fd5d74ff7b71", "scanner": "scanner-primary", "fingerprint": "7ce0c761919c0f88", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-340cdf4bc1764bc3", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/lib-headless-commerce.test.ts:478"}, "properties": {"repobilityId": "0dcf07ac8a6ce33d", "scanner": "scanner-primary", "fingerprint": "340cdf4bc1764bc3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ffca669d9d262125", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/__tests__/api-subscriptions-routes.test.ts:559"}, "properties": {"repobilityId": "6bb10eb5aebf0353", "scanner": "scanner-primary", "fingerprint": "ffca669d9d262125", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2d07fc1f6ba82d59", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/__tests__/lib-prisma-soft-delete.test.ts:4"}, "properties": {"repobilityId": "8940235c71d90086", "scanner": "scanner-primary", "fingerprint": "2d07fc1f6ba82d59", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-570b6b69d9b9b1c7", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/api-webhooks-mgmt.test.ts:59"}, "properties": {"repobilityId": "62abc48e407494a9", "scanner": "scanner-primary", "fingerprint": "570b6b69d9b9b1c7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-572d62afe0f834c9", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/__tests__/api-blind-index-backfill-audit.test.ts:290"}, "properties": {"repobilityId": "dde772736c5917f0", "scanner": "scanner-primary", "fingerprint": "572d62afe0f834c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d7db2ba4aafb37a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/lib-module-catalog.test.ts:146"}, "properties": {"repobilityId": "37b8f4f2579977cd", "scanner": "scanner-primary", "fingerprint": "5d7db2ba4aafb37a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-abd372e5e2649c4c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/lib-auth-tenant-scope.test.ts:149"}, "properties": {"repobilityId": "d274ecd0d1cf7b1e", "scanner": "scanner-primary", "fingerprint": "abd372e5e2649c4c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1450382ba5968b10", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/__tests__/api-webhooks-rls-scope.test.ts:11"}, "properties": {"repobilityId": "178493362fff90e0", "scanner": "scanner-primary", "fingerprint": "1450382ba5968b10", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-72fdc4c625a4dd69", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/shelf-analysis-roboflow.test.ts:133"}, "properties": {"repobilityId": "1617facda76dee07", "scanner": "scanner-primary", "fingerprint": "72fdc4c625a4dd69", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-72b1de40a52ff409", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/__tests__/analytics-cache.test.ts:195"}, "properties": {"repobilityId": "fca4e8d92b1dd03f", "scanner": "scanner-primary", "fingerprint": "72b1de40a52ff409", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e0103292607eb9e8", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/lib-approval-rules.test.ts:220"}, "properties": {"repobilityId": "cce91da7073013ae", "scanner": "scanner-primary", "fingerprint": "e0103292607eb9e8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-88f9de4d9c5a5eba", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/shelf-analysis-m3-3b.test.ts:226"}, "properties": {"repobilityId": "494af22ab8f68f02", "scanner": "scanner-primary", "fingerprint": "88f9de4d9c5a5eba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-088305ebcaa64243", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/api-contract-score-risk.test.ts:752"}, "properties": {"repobilityId": "b27e5032c1700e36", "scanner": "scanner-primary", "fingerprint": "088305ebcaa64243", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa689e126af3800c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/lib-task-list-query.test.ts:125"}, "properties": {"repobilityId": "76ef638106a22a55", "scanner": "scanner-primary", "fingerprint": "fa689e126af3800c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-98dae8506e916cf3", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/lib-mtm-equipment-derive-event.test.ts:37"}, "properties": {"repobilityId": "4f496d2ed0910dc0", "scanner": "scanner-primary", "fingerprint": "98dae8506e916cf3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b149f8d5d64a24be", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/lib-seed-body-html.test.ts:119"}, "properties": {"repobilityId": "cf34717551251a02", "scanner": "scanner-primary", "fingerprint": "b149f8d5d64a24be", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-86e71ca3652ea9b4", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/__tests__/lib-media.test.ts:554"}, "properties": {"repobilityId": "0b765b68d35a6bd1", "scanner": "scanner-primary", "fingerprint": "86e71ca3652ea9b4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a10dcc7fd5f98cc5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/lib-tenant-pii-encryption.test.ts:218"}, "properties": {"repobilityId": "658e8606713e8b0b", "scanner": "scanner-primary", "fingerprint": "a10dcc7fd5f98cc5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c4cfc2a0125ebfe", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/__tests__/api-board-analytics-route.test.ts:86"}, "properties": {"repobilityId": "cfe0fe57cb58bc4d", "scanner": "scanner-primary", "fingerprint": "7c4cfc2a0125ebfe", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cf9a76b8f637a8ef", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/lib-workflow-permissions.test.ts:164"}, "properties": {"repobilityId": "01e73191381f7ad8", "scanner": "scanner-primary", "fingerprint": "cf9a76b8f637a8ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-00080d2265d982ee", "level": "note", "message": {"text": "Legacy-named symbol `sk_test_old` in src/__tests__/api-payment-providers.test.ts:252"}, "properties": {"repobilityId": "241e81cd8f2a6a21", "scanner": "scanner-primary", "fingerprint": "00080d2265d982ee", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f1c7cdd0ed7c4ac7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/__tests__/shelf-analysis-roboflow-uploader.test.ts:4"}, "properties": {"repobilityId": "16e6307a59be8dfb", "scanner": "scanner-primary", "fingerprint": "f1c7cdd0ed7c4ac7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d12cd762469f8590", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/__tests__/anthropic-client-factory.test.ts:5"}, "properties": {"repobilityId": "eae8ab8494d572a4", "scanner": "scanner-primary", "fingerprint": "d12cd762469f8590", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dee1d28583b77641", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/__tests__/api-sign-portal.test.ts:931"}, "properties": {"repobilityId": "9e4d2b5616cbd6ab", "scanner": "scanner-primary", "fingerprint": "dee1d28583b77641", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3ddcf3ce5d86b4f6", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/__tests__/lib-marketing-attribution.test.ts:916"}, "properties": {"repobilityId": "2e7d689bad12825a", "scanner": "scanner-primary", "fingerprint": "3ddcf3ce5d86b4f6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3db66aeebdc977d8", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/api-pii-column-wrap.test.ts:168"}, "properties": {"repobilityId": "e2667fd068fe3745", "scanner": "scanner-primary", "fingerprint": "3db66aeebdc977d8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cce9ca6de16041a4", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/__tests__/lib-mtm-photo-watermark-compose.test.ts:73"}, "properties": {"repobilityId": "731b12fc3343af84", "scanner": "scanner-primary", "fingerprint": "cce9ca6de16041a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5cd71bc5e8c0fd84", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/shelf-analysis-worker-m3-1c.test.ts:220"}, "properties": {"repobilityId": "df7ae326740b0525", "scanner": "scanner-primary", "fingerprint": "5cd71bc5e8c0fd84", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8eb9089ce9636e5f", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/__tests__/api-mtm-orders.test.ts:308"}, "properties": {"repobilityId": "ac180b7164aa2c5c", "scanner": "scanner-primary", "fingerprint": "8eb9089ce9636e5f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-89e46db416c342be", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/api-calls.test.ts:381"}, "properties": {"repobilityId": "51be1f06782528db", "scanner": "scanner-primary", "fingerprint": "89e46db416c342be", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-943abfa3594bb6c1", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/__tests__/public-pages-rls-scope.test.ts:13"}, "properties": {"repobilityId": "9d022306e41aeba4", "scanner": "scanner-primary", "fingerprint": "943abfa3594bb6c1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0ae52058161f9332", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/api-uploads-proxy.test.ts:19"}, "properties": {"repobilityId": "4c1ce19630ffa093", "scanner": "scanner-primary", "fingerprint": "0ae52058161f9332", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4c8e4162342224ff", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/__tests__/lib-oms.test.ts:511"}, "properties": {"repobilityId": "15bdb57a5042596d", "scanner": "scanner-primary", "fingerprint": "4c8e4162342224ff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1227bc946712b581", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/__tests__/shelf-golden-match.test.ts:92"}, "properties": {"repobilityId": "8552a3f9a1d5bcb4", "scanner": "scanner-primary", "fingerprint": "1227bc946712b581", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9e8f3f6b188c293c", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/__tests__/admin-pages-rls-scope.test.ts:8"}, "properties": {"repobilityId": "055cef84025aa55c", "scanner": "scanner-primary", "fingerprint": "9e8f3f6b188c293c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8c21f63803cbaeb3", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/api-deals.test.ts:522"}, "properties": {"repobilityId": "020913f93efefd6f", "scanner": "scanner-primary", "fingerprint": "8c21f63803cbaeb3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e1bfb382f69eded7", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/lib-esign.test.ts:210"}, "properties": {"repobilityId": "e93eaec671341c50", "scanner": "scanner-primary", "fingerprint": "e1bfb382f69eded7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-434e19bdb1044e8f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/lib-omnistudio.test.ts:724"}, "properties": {"repobilityId": "208c22905d213309", "scanner": "scanner-primary", "fingerprint": "434e19bdb1044e8f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fca40769ee722dca", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/api-users-assignable.test.ts:4"}, "properties": {"repobilityId": "c6622e81e05de0b9", "scanner": "scanner-primary", "fingerprint": "fca40769ee722dca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d9963024ceca20e", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/__tests__/rls-modelop-repro.test.ts:1"}, "properties": {"repobilityId": "c33525640ac530ee", "scanner": "scanner-primary", "fingerprint": "4d9963024ceca20e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-19dcb226d765ebbe", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/lib-project-rollup.test.ts:147"}, "properties": {"repobilityId": "3f0dab30327327b2", "scanner": "scanner-primary", "fingerprint": "19dcb226d765ebbe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2bf3ab626177c760", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/__tests__/lib-recurrence-parse.test.ts:148"}, "properties": {"repobilityId": "aaf6362eb6bc9d5f", "scanner": "scanner-primary", "fingerprint": "2bf3ab626177c760", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-60d2b57414b58021", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/lib-mtm-repair-request-form-helpers.test.ts:133"}, "properties": {"repobilityId": "c088808afe4864be", "scanner": "scanner-primary", "fingerprint": "60d2b57414b58021", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c2b8f20775059987", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/lib-content-perf-score-compute.test.ts:234"}, "properties": {"repobilityId": "ca65254b569a30e0", "scanner": "scanner-primary", "fingerprint": "c2b8f20775059987", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a2828efabe23f461", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/__tests__/helpers/bulk-auth.ts:41"}, "properties": {"repobilityId": "2694756f0ac6972f", "scanner": "scanner-primary", "fingerprint": "a2828efabe23f461", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-45672b4c577b9ebf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/expense-forecast-tab.tsx:187"}, "properties": {"repobilityId": "2e26b8ba275ea4d3", "scanner": "scanner-primary", "fingerprint": "45672b4c577b9ebf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bb35130c2d71d0a8", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/email-visual-editor.tsx:124"}, "properties": {"repobilityId": "352d79e70e50d44a", "scanner": "scanner-primary", "fingerprint": "bb35130c2d71d0a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eddae1a1324b2711", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/lead-detail-modal.tsx:129"}, "properties": {"repobilityId": "d585492379806005", "scanner": "scanner-primary", "fingerprint": "eddae1a1324b2711", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2f1b8e10053cbbad", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/lead-form.tsx:80"}, "properties": {"repobilityId": "c8c9838b836359fd", "scanner": "scanner-primary", "fingerprint": "2f1b8e10053cbbad", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8fee3206c8d91a28", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/sidebar.tsx:221"}, "properties": {"repobilityId": "7cc55eb7f61554cd", "scanner": "scanner-primary", "fingerprint": "8fee3206c8d91a28", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8783eef908487e17", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/sidebar.tsx:108"}, "properties": {"repobilityId": "d49ab12c930c8caa", "scanner": "scanner-primary", "fingerprint": "8783eef908487e17", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3c0e734a9c575c0a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/campaign-form.tsx:191"}, "properties": {"repobilityId": "40c6f230b8684915", "scanner": "scanner-primary", "fingerprint": "3c0e734a9c575c0a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7cea9764ee7009a4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/ticket-form.tsx:163"}, "properties": {"repobilityId": "4d4d9f23fcdcbd66", "scanner": "scanner-primary", "fingerprint": "7cea9764ee7009a4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-15a55afdb12f4f51", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/digest-subscriptions-panel.tsx:80"}, "properties": {"repobilityId": "bb4661fee4066ac2", "scanner": "scanner-primary", "fingerprint": "15a55afdb12f4f51", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2dc01269a74a0b82", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/channel-config-form.tsx:233"}, "properties": {"repobilityId": "2394146210f102b8", "scanner": "scanner-primary", "fingerprint": "2dc01269a74a0b82", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-11b9a2f970a3d702", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/budget-plan-fact-dashboard.tsx:65"}, "properties": {"repobilityId": "c4753d63a95247ba", "scanner": "scanner-primary", "fingerprint": "11b9a2f970a3d702", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-757eb5bc9c8fcfc0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/portal-chat-widget.tsx:103"}, "properties": {"repobilityId": "4766a62515e68ac5", "scanner": "scanner-primary", "fingerprint": "757eb5bc9c8fcfc0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f0541ac55ddee615", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/sales-forecast-tab.tsx:131"}, "properties": {"repobilityId": "777daa23c50ea609", "scanner": "scanner-primary", "fingerprint": "f0541ac55ddee615", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-38e64c9e45fe7322", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/segment-form.tsx:237"}, "properties": {"repobilityId": "743f151a44371092", "scanner": "scanner-primary", "fingerprint": "38e64c9e45fe7322", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-74b6119fd713ee0d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/email-template-form.tsx:68"}, "properties": {"repobilityId": "221260a18e460e17", "scanner": "scanner-primary", "fingerprint": "74b6119fd713ee0d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e39672ca37be032", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/email-template-form.tsx:275"}, "properties": {"repobilityId": "3531ef09719c0a32", "scanner": "scanner-primary", "fingerprint": "3e39672ca37be032", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-30e664a75d5ae839", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/lead-item-modal.tsx:653"}, "properties": {"repobilityId": "b8402784f8c73981", "scanner": "scanner-primary", "fingerprint": "30e664a75d5ae839", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f2f9298e7f571506", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/delete-confirm-dialog.tsx:9"}, "properties": {"repobilityId": "d8277979ae44952c", "scanner": "scanner-primary", "fingerprint": "f2f9298e7f571506", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-542fd581965a92b7", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/task-form.tsx:269"}, "properties": {"repobilityId": "8c70d5a03c154d31", "scanner": "scanner-primary", "fingerprint": "542fd581965a92b7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-96e015bfb4c7e2ff", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/task-form.tsx:154"}, "properties": {"repobilityId": "4eb0f8053f50281f", "scanner": "scanner-primary", "fingerprint": "96e015bfb4c7e2ff", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b6f293b551e703de", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/company-form.tsx:109"}, "properties": {"repobilityId": "104ae1a95741dade", "scanner": "scanner-primary", "fingerprint": "b6f293b551e703de", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9eb0df0251b1771e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/user-picker.tsx:61"}, "properties": {"repobilityId": "8e96c392d7df6fe4", "scanner": "scanner-primary", "fingerprint": "9eb0df0251b1771e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cafcfde326ec99c2", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/notification-bell.tsx:95"}, "properties": {"repobilityId": "65a45fac2378f19f", "scanner": "scanner-primary", "fingerprint": "cafcfde326ec99c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8375354f552b73ed", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/lead-convert-dialog.tsx:62"}, "properties": {"repobilityId": "85bc04c1a8ace204", "scanner": "scanner-primary", "fingerprint": "8375354f552b73ed", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-488dfdbb6667e998", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/budget-config-tab.tsx:98"}, "properties": {"repobilityId": "312588fb8d33f223", "scanner": "scanner-primary", "fingerprint": "488dfdbb6667e998", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-27750e3dd43b906a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/journey-form.tsx:224"}, "properties": {"repobilityId": "a930fa996e7803d8", "scanner": "scanner-primary", "fingerprint": "27750e3dd43b906a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-21ce314d00cbd861", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/offer-form.tsx:252"}, "properties": {"repobilityId": "a2b693b8882b7727", "scanner": "scanner-primary", "fingerprint": "21ce314d00cbd861", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c5c128c6dba8b497", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/budget-odds-report.tsx:53"}, "properties": {"repobilityId": "99be9dbf7ebd5c87", "scanner": "scanner-primary", "fingerprint": "c5c128c6dba8b497", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1d7cb17d093961a0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/deal-form.tsx:101"}, "properties": {"repobilityId": "cf9c2393ffb772ce", "scanner": "scanner-primary", "fingerprint": "1d7cb17d093961a0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-def4a2aff0aafdb7", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/content-perf/content-score-badge.tsx:98"}, "properties": {"repobilityId": "316b983371ac2a66", "scanner": "scanner-primary", "fingerprint": "def4a2aff0aafdb7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-44cca08427b29182", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/mtm/sku-form.tsx:121"}, "properties": {"repobilityId": "3a6874cdf2ba861b", "scanner": "scanner-primary", "fingerprint": "44cca08427b29182", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a4b2aa354fffbe57", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/mtm/repair-request-edit-dialog.tsx:167"}, "properties": {"repobilityId": "b9e433becbc036dc", "scanner": "scanner-primary", "fingerprint": "a4b2aa354fffbe57", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-894eb9ef70626d1b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/mtm/sku-import-modal.tsx:55"}, "properties": {"repobilityId": "1e82b77397ddda9c", "scanner": "scanner-primary", "fingerprint": "894eb9ef70626d1b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c2076073fdd40ad1", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/components/mtm/route-form.tsx:56"}, "properties": {"repobilityId": "75bc65cd3b99703e", "scanner": "scanner-primary", "fingerprint": "c2076073fdd40ad1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4687ba3bc0a08e2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/mtm/equipment-form.tsx:106"}, "properties": {"repobilityId": "2bf064617eff3c3c", "scanner": "scanner-primary", "fingerprint": "d4687ba3bc0a08e2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-678d6005f2287569", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/projects/project-form.tsx:121"}, "properties": {"repobilityId": "fd4f2477f3cb2393", "scanner": "scanner-primary", "fingerprint": "678d6005f2287569", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5e43fda4827dc3dd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/projects/project-members-tab.tsx:55"}, "properties": {"repobilityId": "d20b2da59188dfab", "scanner": "scanner-primary", "fingerprint": "5e43fda4827dc3dd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4465be81f4da64ef", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/projects/project-milestones-tab.tsx:38"}, "properties": {"repobilityId": "83505e09fcfac7dd", "scanner": "scanner-primary", "fingerprint": "4465be81f4da64ef", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-792e3ad182b45da6", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/projects/project-crm-activity-tab.tsx:99"}, "properties": {"repobilityId": "1e7cd6a06d3cea47", "scanner": "scanner-primary", "fingerprint": "792e3ad182b45da6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-812b4125f4227643", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/projects/project-crm-activity-tab.tsx:43"}, "properties": {"repobilityId": "eee59b51ee5ea600", "scanner": "scanner-primary", "fingerprint": "812b4125f4227643", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3b0cad6703bd67a3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/projects/project-tasks-tab.tsx:100"}, "properties": {"repobilityId": "053552088562a9c4", "scanner": "scanner-primary", "fingerprint": "3b0cad6703bd67a3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1853077ff79fa5df", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/events/events-analytics.tsx:233"}, "properties": {"repobilityId": "7e6047fd41c3c43f", "scanner": "scanner-primary", "fingerprint": "1853077ff79fa5df", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ea0d0be3fb571091", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/segments-widget.tsx:36"}, "properties": {"repobilityId": "e25ecdd002b14a47", "scanner": "scanner-primary", "fingerprint": "ea0d0be3fb571091", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5dfbe6f3875d66f2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/recommended-actions.tsx:75"}, "properties": {"repobilityId": "65fc16865c7027d7", "scanner": "scanner-primary", "fingerprint": "5dfbe6f3875d66f2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-80d9ec13e9fbb1f2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/cpq/quote-create-dialog.tsx:126"}, "properties": {"repobilityId": "58f17e459174505d", "scanner": "scanner-primary", "fingerprint": "80d9ec13e9fbb1f2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-331ed519531ca23e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/surveys/analytics-dashboard.tsx:42"}, "properties": {"repobilityId": "7cf93990ec9927a9", "scanner": "scanner-primary", "fingerprint": "331ed519531ca23e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9c0edb52f6d7c04a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/surveys/unsubscribes-panel.tsx:67"}, "properties": {"repobilityId": "683ff1c03ad612ab", "scanner": "scanner-primary", "fingerprint": "9c0edb52f6d7c04a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-864d2caa7ff83a86", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/tasks/task-detail-view.tsx:150"}, "properties": {"repobilityId": "7a7196f2dac94a9c", "scanner": "scanner-primary", "fingerprint": "864d2caa7ff83a86", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c67d8c1e23850cbf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/tasks/task-detail-view.tsx:419"}, "properties": {"repobilityId": "7e50bb004a8eb99d", "scanner": "scanner-primary", "fingerprint": "c67d8c1e23850cbf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9a9d3290c3b53326", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/tasks/inline-tasks-table.tsx:121"}, "properties": {"repobilityId": "d2191a83ea6aca0f", "scanner": "scanner-primary", "fingerprint": "9a9d3290c3b53326", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-821211937715557b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/tasks/inline-tasks-table.tsx:308"}, "properties": {"repobilityId": "2fb2960d7491417c", "scanner": "scanner-primary", "fingerprint": "821211937715557b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8de2a080ac459f38", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/cobrowse/customer-widget.tsx:93"}, "properties": {"repobilityId": "90c751f1d10e652f", "scanner": "scanner-primary", "fingerprint": "8de2a080ac459f38", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-80c4bbae733849ad", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/social/analytics-panel.tsx:54"}, "properties": {"repobilityId": "6449f289cea7fd76", "scanner": "scanner-primary", "fingerprint": "80c4bbae733849ad", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-81c47a44364876a8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/deals/invoices-tab.tsx:45"}, "properties": {"repobilityId": "50d33ebd932fa3f9", "scanner": "scanner-primary", "fingerprint": "81c47a44364876a8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9213e84e342d1aae", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/deals/deal-sidebar.tsx:535"}, "properties": {"repobilityId": "cd02cac0d4d80166", "scanner": "scanner-primary", "fingerprint": "9213e84e342d1aae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2ce953d132845618", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/deals/offers-tab.tsx:90"}, "properties": {"repobilityId": "fbc429322ab52e7a", "scanner": "scanner-primary", "fingerprint": "2ce953d132845618", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6b8582cd1b57b8fe", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/deals/quick-action-bar.tsx:111"}, "properties": {"repobilityId": "82ec7f3ca902df02", "scanner": "scanner-primary", "fingerprint": "6b8582cd1b57b8fe", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0239cfe777683f8a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/deals/next-best-offers.tsx:40"}, "properties": {"repobilityId": "8fde3d2a357f28c7", "scanner": "scanner-primary", "fingerprint": "0239cfe777683f8a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0016a2735f1c9454", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/deals/engagement-tab.tsx:33"}, "properties": {"repobilityId": "2ee71c2b7db2e87c", "scanner": "scanner-primary", "fingerprint": "0016a2735f1c9454", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7c10a3dcec48e034", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/deals/activity-timeline.tsx:50"}, "properties": {"repobilityId": "83df271efa9fd227", "scanner": "scanner-primary", "fingerprint": "7c10a3dcec48e034", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b1de2272c69d1051", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/boards/config-table-sections.tsx:54"}, "properties": {"repobilityId": "44dc8adbaf79cc5c", "scanner": "scanner-primary", "fingerprint": "b1de2272c69d1051", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3bc4a4a1b479c916", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/boards/board-reports.tsx:519"}, "properties": {"repobilityId": "ebf2498a42f94343", "scanner": "scanner-primary", "fingerprint": "3bc4a4a1b479c916", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9c2c791abffb884a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/contexts/wallpaper-context.tsx:82"}, "properties": {"repobilityId": "345eda756a0ac73b", "scanner": "scanner-primary", "fingerprint": "9c2c791abffb884a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac0bf3585af3dcc2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/contexts/launcher-prefs-context.tsx:64"}, "properties": {"repobilityId": "04180587f631e3df", "scanner": "scanner-primary", "fingerprint": "ac0bf3585af3dcc2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-22bb9823c8bb82b0", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/utility-customers/route.ts:30"}, "properties": {"repobilityId": "b2da569db6d67200", "scanner": "scanner-primary", "fingerprint": "22bb9823c8bb82b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-de968d99fed0aa8f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/order-shipments/[id]/transition/route.ts:76"}, "properties": {"repobilityId": "ad9fa713ac187b91", "scanner": "scanner-primary", "fingerprint": "de968d99fed0aa8f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-18a68d47cb8c282e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/public-sector-licenses/[id]/route.ts:38"}, "properties": {"repobilityId": "67161ab2b6b82467", "scanner": "scanner-primary", "fingerprint": "18a68d47cb8c282e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c4af5c83fe34778", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/sales-quotas/[id]/attainment/route.ts:31"}, "properties": {"repobilityId": "305d01de6d16a00b", "scanner": "scanner-primary", "fingerprint": "1c4af5c83fe34778", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-851ff6e6d570b7f5", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/sales-quotas/leaderboard/route.ts:70"}, "properties": {"repobilityId": "f8935d93841790cd", "scanner": "scanner-primary", "fingerprint": "851ff6e6d570b7f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f4c15ed72c012abc", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/ai/route.ts:251"}, "properties": {"repobilityId": "05b7f91f8901a8c6", "scanner": "scanner-primary", "fingerprint": "f4c15ed72c012abc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a8bdcac06c70890f", "level": "none", "message": {"text": "Commented-code block (14 lines) in src/app/api/v1/mtm/orders/route.ts:44"}, "properties": {"repobilityId": "a79f2604ecc4e529", "scanner": "scanner-primary", "fingerprint": "a8bdcac06c70890f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-215f7d8f207cb66f", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/mtm/dashboard/route.ts:11"}, "properties": {"repobilityId": "7a06bc0edee88f8d", "scanner": "scanner-primary", "fingerprint": "215f7d8f207cb66f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b8ebd9871f1a3e3", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/mtm/equipment/[id]/route.ts:94"}, "properties": {"repobilityId": "656fc6b1de4ec9d5", "scanner": "scanner-primary", "fingerprint": "0b8ebd9871f1a3e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-36da715a3e9a0068", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/v1/mtm/mobile/sync/push/route.ts:185"}, "properties": {"repobilityId": "7b73868bb1125c12", "scanner": "scanner-primary", "fingerprint": "36da715a3e9a0068", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-17df2c16ec55bea8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/mtm/mobile/sync/pull/route.ts:30"}, "properties": {"repobilityId": "0153d05f8348e853", "scanner": "scanner-primary", "fingerprint": "17df2c16ec55bea8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3e7b488c5fdc95a8", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/mtm/mobile/auth/route.ts:74"}, "properties": {"repobilityId": "48c1f7c81155baa8", "scanner": "scanner-primary", "fingerprint": "3e7b488c5fdc95a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f155fa798fd60ef8", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/mtm/mobile/shelf-analytics/analyze/route.ts:218"}, "properties": {"repobilityId": "7f425fa4016e7dc6", "scanner": "scanner-primary", "fingerprint": "f155fa798fd60ef8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1f25aa1481f15f74", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/mtm/routes/route.ts:27"}, "properties": {"repobilityId": "ea33dbdacf4e8a01", "scanner": "scanner-primary", "fingerprint": "1f25aa1481f15f74", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cc57b2d5f79af1ca", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/mtm/erp-health/route.ts:58"}, "properties": {"repobilityId": "5a9e68b79c0517c0", "scanner": "scanner-primary", "fingerprint": "cc57b2d5f79af1ca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76f81dc8367332ac", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/mtm/photos/route.ts:21"}, "properties": {"repobilityId": "7a7d2f7597807747", "scanner": "scanner-primary", "fingerprint": "76f81dc8367332ac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cabf6aec8b764f31", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/mtm/photos/[id]/golden-analyze/route.ts:45"}, "properties": {"repobilityId": "2c85179a5d13ee4e", "scanner": "scanner-primary", "fingerprint": "cabf6aec8b764f31", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5e5021e4171fec9c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/mtm/skus/route.ts:66"}, "properties": {"repobilityId": "94a73f9d10fbb408", "scanner": "scanner-primary", "fingerprint": "5e5021e4171fec9c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e9bbe5ed451a879d", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/mtm/credit-limits/[customerId]/route.ts:40"}, "properties": {"repobilityId": "0c2b8514e4b40f63", "scanner": "scanner-primary", "fingerprint": "e9bbe5ed451a879d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f3f02704763e2376", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/mtm/visits/route.ts:223"}, "properties": {"repobilityId": "031dc43326508402", "scanner": "scanner-primary", "fingerprint": "f3f02704763e2376", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e5f7a6006ef36a2", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/attribution-models/route.ts:77"}, "properties": {"repobilityId": "234190c4145af514", "scanner": "scanner-primary", "fingerprint": "2e5f7a6006ef36a2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a85a2610c5a76a40", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/complaints/facets/route.ts:5"}, "properties": {"repobilityId": "ed903ddf195e61bd", "scanner": "scanner-primary", "fingerprint": "a85a2610c5a76a40", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5b2205b51064f067", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/auth/sms-otp/verify/route.ts:29"}, "properties": {"repobilityId": "79809607d61db93b", "scanner": "scanner-primary", "fingerprint": "5b2205b51064f067", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9a9692768cdd6732", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/api/v1/entitlements/route.ts:73"}, "properties": {"repobilityId": "b1feb3e1ef1b4e2c", "scanner": "scanner-primary", "fingerprint": "9a9692768cdd6732", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-de97a22bd99e4fb6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/entitlements/route.ts:79"}, "properties": {"repobilityId": "ba135956195ef16f", "scanner": "scanner-primary", "fingerprint": "de97a22bd99e4fb6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cd5f334dbb58d551", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/v1/tracking/open/route.ts:81"}, "properties": {"repobilityId": "4a7924ba8462bf71", "scanner": "scanner-primary", "fingerprint": "cd5f334dbb58d551", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-22edcf8e296b39b2", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/health-medical-records/route.ts:134"}, "properties": {"repobilityId": "e03bffaf056ba00d", "scanner": "scanner-primary", "fingerprint": "22edcf8e296b39b2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6350befad1f28bf0", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/subscriptions-overview/route.ts:83"}, "properties": {"repobilityId": "6f8536dbfac683bb", "scanner": "scanner-primary", "fingerprint": "6350befad1f28bf0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c14bd8dbdea6b3e7", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/policy-holders/route.ts:32"}, "properties": {"repobilityId": "f62f4d5f87bd9daf", "scanner": "scanner-primary", "fingerprint": "c14bd8dbdea6b3e7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-79703d58013f0691", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/apps/[id]/install/route.ts:146"}, "properties": {"repobilityId": "59c72228f9d21258", "scanner": "scanner-primary", "fingerprint": "79703d58013f0691", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-38dbdd0efe572174", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/claims/[id]/route.ts:40"}, "properties": {"repobilityId": "3de1d82d5d2d9654", "scanner": "scanner-primary", "fingerprint": "38dbdd0efe572174", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9c8ace6f3124596e", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/v1/dashboard/executive/route.ts:296"}, "properties": {"repobilityId": "e1bcd472c2208293", "scanner": "scanner-primary", "fingerprint": "9c8ace6f3124596e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-017cc9d048decda2", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/citizens/route.ts:54"}, "properties": {"repobilityId": "b9cbb7f8434572c9", "scanner": "scanner-primary", "fingerprint": "017cc9d048decda2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-22cda6b1ed5e1408", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/promo-codes/[id]/redeem/route.ts:158"}, "properties": {"repobilityId": "0c02183929d8a275", "scanner": "scanner-primary", "fingerprint": "22cda6b1ed5e1408", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-86ef09a4412d7153", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/loyalty-tiers/[id]/route.ts:179"}, "properties": {"repobilityId": "3344140ca8f48826", "scanner": "scanner-primary", "fingerprint": "86ef09a4412d7153", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-64c2cece6a3972b4", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/loyalty-overview/route.ts:163"}, "properties": {"repobilityId": "170c0bb5e6ed83ac", "scanner": "scanner-primary", "fingerprint": "64c2cece6a3972b4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aebf74676819f2a0", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/ps-cloud/utilization/route.ts:61"}, "properties": {"repobilityId": "04b4845e5956df2a", "scanner": "scanner-primary", "fingerprint": "aebf74676819f2a0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c6820d0d0904305d", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/sign/[token]/route.ts:182"}, "properties": {"repobilityId": "61e87355176dd2e7", "scanner": "scanner-primary", "fingerprint": "c6820d0d0904305d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-effa771868b3a937", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/uploads/[...path]/route.ts:108"}, "properties": {"repobilityId": "94f4624c0a1a860f", "scanner": "scanner-primary", "fingerprint": "effa771868b3a937", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2ed4b5365ffcab2", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/service-calls/route.ts:26"}, "properties": {"repobilityId": "90e691aa8709d063", "scanner": "scanner-primary", "fingerprint": "f2ed4b5365ffcab2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-199ca186f8c600f9", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/campaign-roi/route.ts:27"}, "properties": {"repobilityId": "01a00c65f3c89340", "scanner": "scanner-primary", "fingerprint": "199ca186f8c600f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-403fa725d154ba54", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/board-permissions/route.ts:105"}, "properties": {"repobilityId": "e5434e9c0863ef10", "scanner": "scanner-primary", "fingerprint": "403fa725d154ba54", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c540c5dc02f3e8f7", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/tasks/[id]/route.ts:71"}, "properties": {"repobilityId": "9243fde16141da1a", "scanner": "scanner-primary", "fingerprint": "c540c5dc02f3e8f7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7ee30a96d01f103d", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/v1/agent-sessions/[id]/steps/route.ts:89"}, "properties": {"repobilityId": "9d503f891710c88d", "scanner": "scanner-primary", "fingerprint": "7ee30a96d01f103d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a850264817ad27e1", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/cobrowse/sessions/[id]/route.ts:118"}, "properties": {"repobilityId": "078058689f93e0ac", "scanner": "scanner-primary", "fingerprint": "a850264817ad27e1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8eb8e83d1259842b", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/v1/platform-events/publish/route.ts:51"}, "properties": {"repobilityId": "801ace79d2a2cd16", "scanner": "scanner-primary", "fingerprint": "8eb8e83d1259842b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b8dca7fed66c0b44", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/tickets/[id]/route.ts:149"}, "properties": {"repobilityId": "c1d71f67fcf75f95", "scanner": "scanner-primary", "fingerprint": "b8dca7fed66c0b44", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a61e5f01499b93cc", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/beneficiaries/route.ts:84"}, "properties": {"repobilityId": "fbffddb5ff408a13", "scanner": "scanner-primary", "fingerprint": "a61e5f01499b93cc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4726a87962f764e4", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/beneficiaries/[id]/route.ts:214"}, "properties": {"repobilityId": "b8788e4b2513a24a", "scanner": "scanner-primary", "fingerprint": "4726a87962f764e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-043e3af1be2b526d", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/social/mentions/[id]/convert-to-lead/route.ts:121"}, "properties": {"repobilityId": "f54af934b088c50e", "scanner": "scanner-primary", "fingerprint": "043e3af1be2b526d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1e5be1fe6e3e4b31", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/social/mentions/[id]/reply/route.ts:54"}, "properties": {"repobilityId": "b13911049b124c52", "scanner": "scanner-primary", "fingerprint": "1e5be1fe6e3e4b31", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-515c18e32592c71b", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/social/oauth/facebook/callback/route.ts:71"}, "properties": {"repobilityId": "d45506abb2c2e004", "scanner": "scanner-primary", "fingerprint": "515c18e32592c71b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-38b096de5691d035", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/social/oauth/facebook/callback/route.ts:99"}, "properties": {"repobilityId": "42e86d968b0c9950", "scanner": "scanner-primary", "fingerprint": "38b096de5691d035", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dad0eb9694b5516e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/social/oauth/twitter/callback/route.ts:40"}, "properties": {"repobilityId": "37b3e512b49d4837", "scanner": "scanner-primary", "fingerprint": "dad0eb9694b5516e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5e087f18a86ed736", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/social/oauth/instagram/callback/route.ts:177"}, "properties": {"repobilityId": "9b9e2ba4e6bc420f", "scanner": "scanner-primary", "fingerprint": "5e087f18a86ed736", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5c81f920b231825e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/social/oauth/instagram/callback/route.ts:101"}, "properties": {"repobilityId": "2a7146ccbb04107a", "scanner": "scanner-primary", "fingerprint": "5c81f920b231825e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e635c97b376a9d53", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/social/oauth/youtube/callback/route.ts:33"}, "properties": {"repobilityId": "42066e30dd8e5491", "scanner": "scanner-primary", "fingerprint": "e635c97b376a9d53", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2caed69b525d0eef", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/social/oauth/tiktok/callback/route.ts:34"}, "properties": {"repobilityId": "e75d2a2e62478e02", "scanner": "scanner-primary", "fingerprint": "2caed69b525d0eef", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-be268f5cc3e8f4b4", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/zapier/subscribe/route.ts:105"}, "properties": {"repobilityId": "9adb1907f101479c", "scanner": "scanner-primary", "fingerprint": "be268f5cc3e8f4b4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2d2cefab99eb95b8", "level": "none", "message": {"text": "Commented-code block (12 lines) in src/app/api/v1/calls/webhook/threecx/route.ts:20"}, "properties": {"repobilityId": "19fed33ebab9a405", "scanner": "scanner-primary", "fingerprint": "2d2cefab99eb95b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-26d44cff34dbf7ca", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/v1/rollup-fields/route.ts:124"}, "properties": {"repobilityId": "1a9712d260d9d91b", "scanner": "scanner-primary", "fingerprint": "26d44cff34dbf7ca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ec9d8156723d92e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/rollup-fields/[id]/recompute/route.ts:198"}, "properties": {"repobilityId": "4d15fa2541767b0b", "scanner": "scanner-primary", "fingerprint": "1ec9d8156723d92e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-16c35da977404d80", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/loyalty-accounts/[id]/earn/route.ts:113"}, "properties": {"repobilityId": "69dc455430a5621d", "scanner": "scanner-primary", "fingerprint": "16c35da977404d80", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9a5ebf60ef1426d6", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/whatsapp/templates/route.ts:6"}, "properties": {"repobilityId": "b47b334be60ab20f", "scanner": "scanner-primary", "fingerprint": "9a5ebf60ef1426d6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-039d95a62bb9117f", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/email-log/[id]/analyze/route.ts:59"}, "properties": {"repobilityId": "7394309fe853ef50", "scanner": "scanner-primary", "fingerprint": "039d95a62bb9117f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-12dcd4b54286c21e", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/public-sector-cases/[id]/route.ts:36"}, "properties": {"repobilityId": "16bb7fcfc38dd48e", "scanner": "scanner-primary", "fingerprint": "12dcd4b54286c21e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-680dd64ce4a8337c", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/health-patients/route.ts:36"}, "properties": {"repobilityId": "d0dfe3c4b31b8c7d", "scanner": "scanner-primary", "fingerprint": "680dd64ce4a8337c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7208d77671cea469", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/policies/route.ts:60"}, "properties": {"repobilityId": "18adeb9123770fef", "scanner": "scanner-primary", "fingerprint": "7208d77671cea469", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-32fb1211ac7f040a", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/policies/[id]/route.ts:32"}, "properties": {"repobilityId": "72e294d730eb33a3", "scanner": "scanner-primary", "fingerprint": "32fb1211ac7f040a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ba1818fd8391dc4f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/health-encounters/route.ts:237"}, "properties": {"repobilityId": "c0ec6866eff33d70", "scanner": "scanner-primary", "fingerprint": "ba1818fd8391dc4f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-03b3000d28e85182", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/health-encounters/[id]/route.ts:290"}, "properties": {"repobilityId": "b82763f15f82dcee", "scanner": "scanner-primary", "fingerprint": "03b3000d28e85182", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d1b844e1c239659", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/campaigns/[id]/send/route.ts:19"}, "properties": {"repobilityId": "1adb133b7d723e7d", "scanner": "scanner-primary", "fingerprint": "0d1b844e1c239659", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7ad44dbd8d9898e6", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/contract-lifecycle/route.ts:177"}, "properties": {"repobilityId": "a2111f92bc84d4e9", "scanner": "scanner-primary", "fingerprint": "7ad44dbd8d9898e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f473914bd09f2c40", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/digest-subscriptions/test/route.ts:7"}, "properties": {"repobilityId": "243bf8ce56fabe5f", "scanner": "scanner-primary", "fingerprint": "f473914bd09f2c40", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52aa30ca7510c5fb", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/v1/contacts/bulk/route.ts:120"}, "properties": {"repobilityId": "533e1da39c5993ad", "scanner": "scanner-primary", "fingerprint": "52aa30ca7510c5fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-65e209bc552dba95", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/named-credentials/route.ts:65"}, "properties": {"repobilityId": "ff318b48bb0bc78e", "scanner": "scanner-primary", "fingerprint": "65e209bc552dba95", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb44a4511d5f798c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/named-credentials/[id]/test/route.ts:88"}, "properties": {"repobilityId": "a16c561c6e29aa73", "scanner": "scanner-primary", "fingerprint": "cb44a4511d5f798c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-04fed59f4330f3f3", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/contracts/upload-image/route.ts:14"}, "properties": {"repobilityId": "1f36d59ed44da9a8", "scanner": "scanner-primary", "fingerprint": "04fed59f4330f3f3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b943160ae3d1d544", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/v1/contracts/[id]/route.ts:31"}, "properties": {"repobilityId": "d8f2ecde8b6893bb", "scanner": "scanner-primary", "fingerprint": "b943160ae3d1d544", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6e3c358e0d559966", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/contracts/[id]/submit-for-approval/route.ts:321"}, "properties": {"repobilityId": "f927c93ccded2e8d", "scanner": "scanner-primary", "fingerprint": "6e3c358e0d559966", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1b200b03f9c49894", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/contracts/[id]/create-invoice/route.ts:39"}, "properties": {"repobilityId": "5e9d3cc5bf4c0962", "scanner": "scanner-primary", "fingerprint": "1b200b03f9c49894", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e5b47e31cc2e4ff4", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/contracts/[id]/deviations/[flagId]/route.ts:43"}, "properties": {"repobilityId": "809d80e76ea5e64d", "scanner": "scanner-primary", "fingerprint": "e5b47e31cc2e4ff4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b377ed6375c547e7", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/contracts/[id]/extract/route.ts:179"}, "properties": {"repobilityId": "bac2a01422bfbaed", "scanner": "scanner-primary", "fingerprint": "b377ed6375c547e7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8e6553a3c22eef67", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/v1/contracts/[id]/esign/[envelopeId]/send/route.ts:162"}, "properties": {"repobilityId": "96370ff123ea0a2a", "scanner": "scanner-primary", "fingerprint": "8e6553a3c22eef67", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4d43b7f5b5ca83d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/contracts/[id]/score-risk/route.ts:74"}, "properties": {"repobilityId": "d16ccd7550eae9f0", "scanner": "scanner-primary", "fingerprint": "d4d43b7f5b5ca83d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bb21ba80ca9ceb5e", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/v1/contracts/[id]/approvals/[order]/route.ts:160"}, "properties": {"repobilityId": "00907c31efcb7e14", "scanner": "scanner-primary", "fingerprint": "bb21ba80ca9ceb5e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ba5f79d5b91ffa90", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/v1/contracts/[id]/performance-obligations/recalculate/route.ts:84"}, "properties": {"repobilityId": "20106e6f15f3b42a", "scanner": "scanner-primary", "fingerprint": "ba5f79d5b91ffa90", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a8a09992cef27aa", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/contracts/[id]/amend/route.ts:148"}, "properties": {"repobilityId": "e1f7891ad5f1946c", "scanner": "scanner-primary", "fingerprint": "6a8a09992cef27aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-93e1fd8bc15a0687", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/contracts/[id]/reindex/route.ts:42"}, "properties": {"repobilityId": "85a389a6699da850", "scanner": "scanner-primary", "fingerprint": "93e1fd8bc15a0687", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4e1d6c40ac9a3b5f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/v1/contracts/search/semantic/route.ts:45"}, "properties": {"repobilityId": "025f7c54aa060180", "scanner": "scanner-primary", "fingerprint": "4e1d6c40ac9a3b5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f52bb3c4d5f68a29", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/v1/metering-points/[id]/route.ts:257"}, "properties": {"repobilityId": "32929b605cb37424", "scanner": "scanner-primary", "fingerprint": "f52bb3c4d5f68a29", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d368e4361b978a2b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/payment-refunds/route.ts:163"}, "properties": {"repobilityId": "4e68057afcbdcb36", "scanner": "scanner-primary", "fingerprint": "d368e4361b978a2b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-07f20208b464a9c8", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/saved-views/route.ts:125"}, "properties": {"repobilityId": "ec1794c94d027246", "scanner": "scanner-primary", "fingerprint": "07f20208b464a9c8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7fdfef4172d31f83", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/v1/saved-views/[id]/route.ts:55"}, "properties": {"repobilityId": "b232556919320b81", "scanner": "scanner-primary", "fingerprint": "7fdfef4172d31f83", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-089717e89b94657c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/public/resend-webhook/route.ts:11"}, "properties": {"repobilityId": "627ec975b5e983a6", "scanner": "scanner-primary", "fingerprint": "089717e89b94657c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-34d1e07332a177c1", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/public/cobrowse/stream/route.ts:55"}, "properties": {"repobilityId": "c648027dc7c585bb", "scanner": "scanner-primary", "fingerprint": "34d1e07332a177c1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a8a966ad44aee00c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/public/cobrowse/consent/route.ts:88"}, "properties": {"repobilityId": "0baf47b25ff7d4a0", "scanner": "scanner-primary", "fingerprint": "a8a966ad44aee00c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-56f32dcc41d42a89", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/public/portal-unsubscribe/route.ts:11"}, "properties": {"repobilityId": "281cc1c4d8481edb", "scanner": "scanner-primary", "fingerprint": "56f32dcc41d42a89", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7bd1efcf7fa1ec1f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/public/portal-auth/route.ts:19"}, "properties": {"repobilityId": "4d398a4e9903a3b6", "scanner": "scanner-primary", "fingerprint": "7bd1efcf7fa1ec1f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6617d379cb89a263", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/v1/public/portal-auth/register/route.ts:86"}, "properties": {"repobilityId": "fc03e9362811df21", "scanner": "scanner-primary", "fingerprint": "6617d379cb89a263", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-853789a87cab5060", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/app/api/v1/public/email-inbound/route.ts:23"}, "properties": {"repobilityId": "dedd0368fc9a3f2c", "scanner": "scanner-primary", "fingerprint": "853789a87cab5060", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e482768781ed7863", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/v1/public/commerce/storefronts/[slug]/route.ts:56"}, "properties": {"repobilityId": "986161e82d23e0df", "scanner": "scanner-primary", "fingerprint": "e482768781ed7863", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1e9a7023f0c2bd92", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/public/forms/[slug]/submit/route.ts:70"}, "properties": {"repobilityId": "9474bb1dd3e96db5", "scanner": "scanner-primary", "fingerprint": "1e9a7023f0c2bd92", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-31e4099b5d4bc25e", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/media-subscribers/route.ts:27"}, "properties": {"repobilityId": "98cf5748e71c3f63", "scanner": "scanner-primary", "fingerprint": "31e4099b5d4bc25e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7575e3c03572405d", "level": "none", "message": {"text": "Commented-code block (11 lines) in src/app/api/v1/webhooks/facebook/route.ts:26"}, "properties": {"repobilityId": "8419b7a1683cf68b", "scanner": "scanner-primary", "fingerprint": "7575e3c03572405d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-09828d99a52f3175", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/webhooks/sms-inbound/route.ts:58"}, "properties": {"repobilityId": "2e6db02569d98ce2", "scanner": "scanner-primary", "fingerprint": "09828d99a52f3175", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a344f4b7742d631b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/webhooks/telegram/route.ts:141"}, "properties": {"repobilityId": "2c1f683fe4dba78c", "scanner": "scanner-primary", "fingerprint": "a344f4b7742d631b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0fdb1894bd84441d", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/webhooks/whatsapp/route.ts:33"}, "properties": {"repobilityId": "c46fc5714105875e", "scanner": "scanner-primary", "fingerprint": "0fdb1894bd84441d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85c51f02ee8051eb", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/inbox/route.ts:237"}, "properties": {"repobilityId": "170cd04662d5b46f", "scanner": "scanner-primary", "fingerprint": "85c51f02ee8051eb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-029c3597598fa5a2", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/v1/contract-clauses/draft/route.ts:239"}, "properties": {"repobilityId": "7295da094b099503", "scanner": "scanner-primary", "fingerprint": "029c3597598fa5a2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7a28b41cea9cb5af", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/prediction-models/[id]/train/route.ts:74"}, "properties": {"repobilityId": "271a715861943834", "scanner": "scanner-primary", "fingerprint": "7a28b41cea9cb5af", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2438368c390c779d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/public-sector-grants/route.ts:27"}, "properties": {"repobilityId": "bdb593ab3310e2b6", "scanner": "scanner-primary", "fingerprint": "2438368c390c779d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-17906021aaeb1a56", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/public-sector-grants/[id]/route.ts:44"}, "properties": {"repobilityId": "c4f64c1013b7bc82", "scanner": "scanner-primary", "fingerprint": "17906021aaeb1a56", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3ed2fe01a0fb72a6", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/quotes/route.ts:115"}, "properties": {"repobilityId": "b7161f620a9fe85d", "scanner": "scanner-primary", "fingerprint": "3ed2fe01a0fb72a6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3d8e0ccd6b34c736", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/api/v1/quotes/[id]/route.ts:126"}, "properties": {"repobilityId": "bdf1f531e11b5e90", "scanner": "scanner-primary", "fingerprint": "3d8e0ccd6b34c736", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fc664281d46d8b39", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/quotes/[id]/pdf/route.ts:21"}, "properties": {"repobilityId": "31b7de93f483f8ba", "scanner": "scanner-primary", "fingerprint": "fc664281d46d8b39", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-adc7b684d56ed74b", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/ai-feedback/aggregate/route.ts:68"}, "properties": {"repobilityId": "53e1ee520ef8696f", "scanner": "scanner-primary", "fingerprint": "adc7b684d56ed74b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6f7e0f4efd3bb30f", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/deals/bulk/route.ts:47"}, "properties": {"repobilityId": "8c50bbad22cce401", "scanner": "scanner-primary", "fingerprint": "6f7e0f4efd3bb30f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9c9ed90f3a0a84d7", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/deals/[id]/route.ts:271"}, "properties": {"repobilityId": "b2915c8dd8c8a84c", "scanner": "scanner-primary", "fingerprint": "9c9ed90f3a0a84d7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-446e0ddcdbe17591", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/companies/[id]/timeline/route.ts:10"}, "properties": {"repobilityId": "588cefdfd06cc089", "scanner": "scanner-primary", "fingerprint": "446e0ddcdbe17591", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d9084b1525893cc6", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/v1/order-returns/route.ts:81"}, "properties": {"repobilityId": "6a2da62963ba064f", "scanner": "scanner-primary", "fingerprint": "d9084b1525893cc6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c909d75389b8afa", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/v1/order-returns/[id]/transition/route.ts:73"}, "properties": {"repobilityId": "b4ff81a430018905", "scanner": "scanner-primary", "fingerprint": "2c909d75389b8afa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-497bb791cf184201", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/chat/send/route.ts:25"}, "properties": {"repobilityId": "b196a661b4d8430c", "scanner": "scanner-primary", "fingerprint": "497bb791cf184201", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-29a6ad4f9d080cff", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/cron/mtm-shelf-backstop/route.ts:166"}, "properties": {"repobilityId": "7118ffa63e740935", "scanner": "scanner-primary", "fingerprint": "29a6ad4f9d080cff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec17531b6898f2aa", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/cron/mtm-cleanup/route.ts:6"}, "properties": {"repobilityId": "50703121056fc011", "scanner": "scanner-primary", "fingerprint": "ec17531b6898f2aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b4bf76f6ae40c357", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/cron/pii-blind-index-backfill/route.ts:85"}, "properties": {"repobilityId": "1b69bde04fedb682", "scanner": "scanner-primary", "fingerprint": "b4bf76f6ae40c357", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb992a0417ff187e", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/cron/content-perf-refresh/route.ts:205"}, "properties": {"repobilityId": "f393fe207d58388b", "scanner": "scanner-primary", "fingerprint": "eb992a0417ff187e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1567e12024443f04", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/cron/contract-embeddings/route.ts:81"}, "properties": {"repobilityId": "9e54f055f9d34e21", "scanner": "scanner-primary", "fingerprint": "1567e12024443f04", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c1d96ea202099b18", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/cron/contract-embeddings/route.ts:42"}, "properties": {"repobilityId": "23492722c43b200b", "scanner": "scanner-primary", "fingerprint": "c1d96ea202099b18", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d6911dd533ac0e56", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/cron/attribution-drain/route.ts:29"}, "properties": {"repobilityId": "c94c00a27a6af5d4", "scanner": "scanner-primary", "fingerprint": "d6911dd533ac0e56", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-509dd716cc5284e5", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/api/cron/cobrowse-reaper/route.ts:57"}, "properties": {"repobilityId": "0a5053acd6550abd", "scanner": "scanner-primary", "fingerprint": "509dd716cc5284e5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e9b6636bdb83deeb", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/cron/esign-reminders/route.ts:152"}, "properties": {"repobilityId": "913c27ff1422eb1f", "scanner": "scanner-primary", "fingerprint": "e9b6636bdb83deeb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-600c83cdfffbf51e", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/cron/proactive-alerts-trigger/route.ts:71"}, "properties": {"repobilityId": "3d57e8b4455a415f", "scanner": "scanner-primary", "fingerprint": "600c83cdfffbf51e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-040517cfdbe1492a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/page.tsx:45"}, "properties": {"repobilityId": "8f0547729dd5c159", "scanner": "scanner-primary", "fingerprint": "040517cfdbe1492a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b0d883abe8746081", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/app/(dashboard)/layout.tsx:42"}, "properties": {"repobilityId": "5fe6dce1f4388a12", "scanner": "scanner-primary", "fingerprint": "b0d883abe8746081", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ccff192f3c5b478e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/layout.tsx:79"}, "properties": {"repobilityId": "35cf1516dae1067e", "scanner": "scanner-primary", "fingerprint": "ccff192f3c5b478e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c153dc327000888b", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/(dashboard)/settings/page.tsx:20"}, "properties": {"repobilityId": "4c94ff6737d3b4fe", "scanner": "scanner-primary", "fingerprint": "c153dc327000888b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-acdf71a5cd6f574b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/integrations/page.tsx:178"}, "properties": {"repobilityId": "8afabe7059441ee0", "scanner": "scanner-primary", "fingerprint": "acdf71a5cd6f574b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-63c48d54b911e123", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/security/page.tsx:52"}, "properties": {"repobilityId": "280f4c8c4e9f0bad", "scanner": "scanner-primary", "fingerprint": "63c48d54b911e123", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-423364c6da06a6dc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/users/page.tsx:162"}, "properties": {"repobilityId": "f9975be2643cb986", "scanner": "scanner-primary", "fingerprint": "423364c6da06a6dc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aa27a9d9e9718dbc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/sla-policies/page.tsx:68"}, "properties": {"repobilityId": "56b0e17d9b0729fd", "scanner": "scanner-primary", "fingerprint": "aa27a9d9e9718dbc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cbfa104612863acc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/smtp-settings/page.tsx:46"}, "properties": {"repobilityId": "b0cea9b456a6783d", "scanner": "scanner-primary", "fingerprint": "cbfa104612863acc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-02dd6c0b3bdaf09b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/portal-users/page.tsx:67"}, "properties": {"repobilityId": "869242af079b8050", "scanner": "scanner-primary", "fingerprint": "02dd6c0b3bdaf09b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e415353bea5649d5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/finance-notifications/page.tsx:61"}, "properties": {"repobilityId": "96914b1c549b4479", "scanner": "scanner-primary", "fingerprint": "e415353bea5649d5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ccd936303258b5af", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/pipelines/page.tsx:303"}, "properties": {"repobilityId": "35a3a718e7fcdb00", "scanner": "scanner-primary", "fingerprint": "ccd936303258b5af", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2dc2cbd47a9fb418", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/ticket-queues/page.tsx:224"}, "properties": {"repobilityId": "8788ce2766ae0920", "scanner": "scanner-primary", "fingerprint": "2dc2cbd47a9fb418", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b5e7f63009bde283", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/field-permissions/page.tsx:144"}, "properties": {"repobilityId": "e32a04dbd237021e", "scanner": "scanner-primary", "fingerprint": "b5e7f63009bde283", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-af1f131604957c58", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/escalation/page.tsx:282"}, "properties": {"repobilityId": "3ff0e5d3072835ae", "scanner": "scanner-primary", "fingerprint": "af1f131604957c58", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-43803390593cdcf7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/macros/page.tsx:384"}, "properties": {"repobilityId": "de18e19706da09d6", "scanner": "scanner-primary", "fingerprint": "43803390593cdcf7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ee4900c07dbbb55c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/intake-forms/page.tsx:172"}, "properties": {"repobilityId": "68ea0076cffe81d1", "scanner": "scanner-primary", "fingerprint": "ee4900c07dbbb55c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-558ef2abc27260b2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/pitch-links/page.tsx:73"}, "properties": {"repobilityId": "67f9088014de2b53", "scanner": "scanner-primary", "fingerprint": "558ef2abc27260b2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-16ae548355b97c5a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/quotas/page.tsx:82"}, "properties": {"repobilityId": "4ad6ef37df73a441", "scanner": "scanner-primary", "fingerprint": "16ae548355b97c5a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-03ebb313e6f1f4ac", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/roles/page.tsx:219"}, "properties": {"repobilityId": "cd83e93dbeed2a66", "scanner": "scanner-primary", "fingerprint": "03ebb313e6f1f4ac", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e8650157a155d393", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/invoice-settings/page.tsx:65"}, "properties": {"repobilityId": "99c8f670ecbc1b5b", "scanner": "scanner-primary", "fingerprint": "e8650157a155d393", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0817d5bfc421b0fb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/approval-rules/page.tsx:120"}, "properties": {"repobilityId": "d0f9c45be0f346a0", "scanner": "scanner-primary", "fingerprint": "0817d5bfc421b0fb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7734548f4d8eef86", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/territories/page.tsx:294"}, "properties": {"repobilityId": "27d192605fc32484", "scanner": "scanner-primary", "fingerprint": "7734548f4d8eef86", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d622386c4c4df98c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/workflows/page.tsx:162"}, "properties": {"repobilityId": "f6354c42fcdc182c", "scanner": "scanner-primary", "fingerprint": "d622386c4c4df98c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-46d8504b0abe4c79", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/budget-config/page.tsx:99"}, "properties": {"repobilityId": "0105089d5b65ca37", "scanner": "scanner-primary", "fingerprint": "46d8504b0abe4c79", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-da220f08c7840766", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/channels/page.tsx:100"}, "properties": {"repobilityId": "0d8710ccdf0055df", "scanner": "scanner-primary", "fingerprint": "da220f08c7840766", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ee97f409482807ff", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/voip/page.tsx:160"}, "properties": {"repobilityId": "9e4eed75d5545513", "scanner": "scanner-primary", "fingerprint": "ee97f409482807ff", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-31beb4a65f80dabd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/currencies/page.tsx:55"}, "properties": {"repobilityId": "ae4b7c6f6b6d4cdd", "scanner": "scanner-primary", "fingerprint": "31beb4a65f80dabd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9247c730203138ea", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/sales-forecast/page.tsx:149"}, "properties": {"repobilityId": "ac5fbda36f9245e3", "scanner": "scanner-primary", "fingerprint": "9247c730203138ea", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-44e69745f09a2c7f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/settings/web-chat/page.tsx:47"}, "properties": {"repobilityId": "5b1137eb8e398e7d", "scanner": "scanner-primary", "fingerprint": "44e69745f09a2c7f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-567e67340c20fb00", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/journeys/page.tsx:267"}, "properties": {"repobilityId": "28271a24f06ff820", "scanner": "scanner-primary", "fingerprint": "567e67340c20fb00", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-05a9e6c05d2fd185", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/planogram-checks/page.tsx:67"}, "properties": {"repobilityId": "59c6d80c061511e6", "scanner": "scanner-primary", "fingerprint": "05a9e6c05d2fd185", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f7747bb6e90d084f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/orders/page.tsx:72"}, "properties": {"repobilityId": "74b32c5d8ba784cd", "scanner": "scanner-primary", "fingerprint": "f7747bb6e90d084f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4faa58280244920e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/shelf-analytics/page.tsx:68"}, "properties": {"repobilityId": "f6beff21999105a6", "scanner": "scanner-primary", "fingerprint": "4faa58280244920e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a00736c8a73dfbfd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/customers/page.tsx:79"}, "properties": {"repobilityId": "3af10320ea3d2273", "scanner": "scanner-primary", "fingerprint": "a00736c8a73dfbfd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4602c6cf15314d16", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/model-training/page.tsx:43"}, "properties": {"repobilityId": "323b5dd0b4c5ddc4", "scanner": "scanner-primary", "fingerprint": "4602c6cf15314d16", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-789b28b566b1dabb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/equipment/page.tsx:94"}, "properties": {"repobilityId": "516388f0c7e1211f", "scanner": "scanner-primary", "fingerprint": "789b28b566b1dabb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-06b4aa857c66d3f0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/equipment/types/page.tsx:87"}, "properties": {"repobilityId": "8d68ef6b6fb3d907", "scanner": "scanner-primary", "fingerprint": "06b4aa857c66d3f0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bfec2cc4f2ff2c84", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/equipment/[id]/page.tsx:85"}, "properties": {"repobilityId": "7fa3aaeaa9516bab", "scanner": "scanner-primary", "fingerprint": "bfec2cc4f2ff2c84", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6258b49177b41eb2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/tasks/page.tsx:98"}, "properties": {"repobilityId": "44a21eb3a5a22315", "scanner": "scanner-primary", "fingerprint": "6258b49177b41eb2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eb791b186a5712f2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/routes/page.tsx:91"}, "properties": {"repobilityId": "760830aa41df4826", "scanner": "scanner-primary", "fingerprint": "eb791b186a5712f2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-44773acdae50327a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/alerts/page.tsx:81"}, "properties": {"repobilityId": "3344c81ef22273de", "scanner": "scanner-primary", "fingerprint": "44773acdae50327a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2b5eed48e89d0343", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/categories/page.tsx:211"}, "properties": {"repobilityId": "054d74a6f0b563fe", "scanner": "scanner-primary", "fingerprint": "2b5eed48e89d0343", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3e28e8488487c99a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/agents/page.tsx:89"}, "properties": {"repobilityId": "d587544ea3a477fd", "scanner": "scanner-primary", "fingerprint": "3e28e8488487c99a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b54188d55c838d9e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/photos/page.tsx:83"}, "properties": {"repobilityId": "5e788f6d5c6065b4", "scanner": "scanner-primary", "fingerprint": "b54188d55c838d9e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-deaf09ebab1213c8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/skus/page.tsx:103"}, "properties": {"repobilityId": "1ce3612a1ee3d613", "scanner": "scanner-primary", "fingerprint": "deaf09ebab1213c8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5eee9ad2069f6fc6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/skus/[id]/page.tsx:87"}, "properties": {"repobilityId": "58687f101cf08815", "scanner": "scanner-primary", "fingerprint": "5eee9ad2069f6fc6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2f27dbf1d648f4ac", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/repair-requests/page.tsx:71"}, "properties": {"repobilityId": "8fa9ff1b98110190", "scanner": "scanner-primary", "fingerprint": "2f27dbf1d648f4ac", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d9daaa19d86dde2a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/visits/page.tsx:70"}, "properties": {"repobilityId": "8b47c38633e3e5a9", "scanner": "scanner-primary", "fingerprint": "d9daaa19d86dde2a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0cf6b090f2623490", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/planograms/page.tsx:57"}, "properties": {"repobilityId": "7495baf0c84caa27", "scanner": "scanner-primary", "fingerprint": "0cf6b090f2623490", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cd1c9c50563c0909", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/planograms/[id]/page.tsx:46"}, "properties": {"repobilityId": "921ab48e5b864513", "scanner": "scanner-primary", "fingerprint": "cd1c9c50563c0909", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8bf9630909fa8c05", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/mtm/map/page.tsx:87"}, "properties": {"repobilityId": "61945aadce359bbc", "scanner": "scanner-primary", "fingerprint": "8bf9630909fa8c05", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-740e2fb5cef13f4b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/complaints/page.tsx:88"}, "properties": {"repobilityId": "eece940117ccabbc", "scanner": "scanner-primary", "fingerprint": "740e2fb5cef13f4b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-437dce6a7e880ce0", "level": "note", "message": {"text": "Legacy-named symbol `flatOld` in src/app/(dashboard)/complaints/[id]/page.tsx:306"}, "properties": {"repobilityId": "2fd86417826be53a", "scanner": "scanner-primary", "fingerprint": "437dce6a7e880ce0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-542eeef14b4b447f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/complaints/[id]/page.tsx:123"}, "properties": {"repobilityId": "1a2321a0626fa22f", "scanner": "scanner-primary", "fingerprint": "542eeef14b4b447f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-08f9c7ea6a626676", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/(dashboard)/leads/page.tsx:248"}, "properties": {"repobilityId": "f0fabfcd908a0df1", "scanner": "scanner-primary", "fingerprint": "08f9c7ea6a626676", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55277099b6d7022d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/leads/page.tsx:280"}, "properties": {"repobilityId": "389f9e6ee3c96362", "scanner": "scanner-primary", "fingerprint": "55277099b6d7022d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e7d3c7d10b61d7ee", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(dashboard)/leads/[id]/page.tsx:384"}, "properties": {"repobilityId": "53c0b044cfa95bba", "scanner": "scanner-primary", "fingerprint": "e7d3c7d10b61d7ee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e8a355dda32c8a3d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/leads/[id]/page.tsx:352"}, "properties": {"repobilityId": "8b10054fd4bbe9f7", "scanner": "scanner-primary", "fingerprint": "e8a355dda32c8a3d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0492979e7b86f53c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/projects/page.tsx:86"}, "properties": {"repobilityId": "363f405946a59eaa", "scanner": "scanner-primary", "fingerprint": "0492979e7b86f53c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3cc76a19cb0f99ee", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/projects/[id]/page.tsx:83"}, "properties": {"repobilityId": "a06e9ff411d28425", "scanner": "scanner-primary", "fingerprint": "3cc76a19cb0f99ee", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5851b17a3341a8f8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/events/page.tsx:84"}, "properties": {"repobilityId": "e40d31c5893150b5", "scanner": "scanner-primary", "fingerprint": "5851b17a3341a8f8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4b393a660bcd4196", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/events/[id]/page.tsx:286"}, "properties": {"repobilityId": "03824d2cc2f1a9b6", "scanner": "scanner-primary", "fingerprint": "4b393a660bcd4196", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-906cdbbfbe1dd2b9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/health/page.tsx:71"}, "properties": {"repobilityId": "b3eb0b4696388c28", "scanner": "scanner-primary", "fingerprint": "906cdbbfbe1dd2b9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6505b14dfb62bd9b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/health/care-plans/page.tsx:63"}, "properties": {"repobilityId": "60c105b8f664b02c", "scanner": "scanner-primary", "fingerprint": "6505b14dfb62bd9b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bd35a025c8ab8070", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/health/encounters/page.tsx:66"}, "properties": {"repobilityId": "73410ac0ee122566", "scanner": "scanner-primary", "fingerprint": "bd35a025c8ab8070", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f77ba06675b07b3a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/health/[id]/page.tsx:133"}, "properties": {"repobilityId": "cf57bce21d3ee32f", "scanner": "scanner-primary", "fingerprint": "f77ba06675b07b3a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-50691679b779b4e0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/health/providers/page.tsx:67"}, "properties": {"repobilityId": "a48d7e786f0b9dd5", "scanner": "scanner-primary", "fingerprint": "50691679b779b4e0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-31be3a39e54fddd9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/media/page.tsx:74"}, "properties": {"repobilityId": "3e1fc857fbb4e402", "scanner": "scanner-primary", "fingerprint": "31be3a39e54fddd9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4f13e41c06964af5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/media/content/page.tsx:75"}, "properties": {"repobilityId": "ba1c536ad59088fd", "scanner": "scanner-primary", "fingerprint": "4f13e41c06964af5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-26b0d9d58915e448", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/media/ad-campaigns/page.tsx:76"}, "properties": {"repobilityId": "0cb848dc5b25c2f0", "scanner": "scanner-primary", "fingerprint": "26b0d9d58915e448", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a073dfa4028e3c45", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/knowledge-base/page.tsx:148"}, "properties": {"repobilityId": "cb9aaf43b5f3de15", "scanner": "scanner-primary", "fingerprint": "a073dfa4028e3c45", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-033bf1b9b3469d65", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/knowledge-base/[id]/page.tsx:50"}, "properties": {"repobilityId": "4fd1aa96d5a2fcf4", "scanner": "scanner-primary", "fingerprint": "033bf1b9b3469d65", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dccdbe7f21b30bd2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/dashboard/page.tsx:59"}, "properties": {"repobilityId": "619888c6de8f2f90", "scanner": "scanner-primary", "fingerprint": "dccdbe7f21b30bd2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-38781ed899792689", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/loyalty/earn-rules/page.tsx:138"}, "properties": {"repobilityId": "99a150512b2b528e", "scanner": "scanner-primary", "fingerprint": "38781ed899792689", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-56723cf3fbc06bf0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/loyalty/promo-codes/page.tsx:222"}, "properties": {"repobilityId": "e0fed197b35f76b8", "scanner": "scanner-primary", "fingerprint": "56723cf3fbc06bf0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fbf5bcba9785cee5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/loyalty/tiers/page.tsx:178"}, "properties": {"repobilityId": "503810e597bd2b6b", "scanner": "scanner-primary", "fingerprint": "fbf5bcba9785cee5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7e4528718281dd82", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/sequences/page.tsx:312"}, "properties": {"repobilityId": "ae7849527ea0e4a4", "scanner": "scanner-primary", "fingerprint": "7e4528718281dd82", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-64c97460612f8f17", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/insurance/page.tsx:69"}, "properties": {"repobilityId": "5b2dff81a44743d6", "scanner": "scanner-primary", "fingerprint": "64c97460612f8f17", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a3b7230a548cd74d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/insurance/claims/page.tsx:67"}, "properties": {"repobilityId": "54f1c87f33db6b9d", "scanner": "scanner-primary", "fingerprint": "a3b7230a548cd74d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4ef0efdf88b3dedd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/insurance/policies/page.tsx:64"}, "properties": {"repobilityId": "c1d58ef6e3247009", "scanner": "scanner-primary", "fingerprint": "4ef0efdf88b3dedd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2a6991879cb8120b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/surveys/page.tsx:125"}, "properties": {"repobilityId": "e841ba4c069da5bd", "scanner": "scanner-primary", "fingerprint": "2a6991879cb8120b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6e6123b764d3ce95", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/surveys/[id]/page.tsx:70"}, "properties": {"repobilityId": "e6599cd805a1dff6", "scanner": "scanner-primary", "fingerprint": "6e6123b764d3ce95", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-37a19e7ff245fe92", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(dashboard)/tasks/page.tsx:68"}, "properties": {"repobilityId": "35a8d9e804e46226", "scanner": "scanner-primary", "fingerprint": "37a19e7ff245fe92", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3c788fc071393360", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/tasks/page.tsx:734"}, "properties": {"repobilityId": "552cf3ed30b8aa62", "scanner": "scanner-primary", "fingerprint": "3c788fc071393360", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6ea6bca2dd8caad5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(dashboard)/cobrowse/[id]/page.tsx:84"}, "properties": {"repobilityId": "2f2dc19ef29fd5d7", "scanner": "scanner-primary", "fingerprint": "6ea6bca2dd8caad5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a10b4dedbe316278", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/tickets/page.tsx:142"}, "properties": {"repobilityId": "3e75f6863dcbf5c9", "scanner": "scanner-primary", "fingerprint": "a10b4dedbe316278", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f40514ba99879e57", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(dashboard)/forecast/page.tsx:23"}, "properties": {"repobilityId": "6fb6a735d32db55c", "scanner": "scanner-primary", "fingerprint": "f40514ba99879e57", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d4b07a6292e1a46", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/forecast/page.tsx:47"}, "properties": {"repobilityId": "72e4392313228035", "scanner": "scanner-primary", "fingerprint": "5d4b07a6292e1a46", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-224bcb4aafba8b47", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/budgeting/page.tsx:1584"}, "properties": {"repobilityId": "242429014632597a", "scanner": "scanner-primary", "fingerprint": "224bcb4aafba8b47", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-12677205cbf17afe", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/email-templates/page.tsx:125"}, "properties": {"repobilityId": "91e647c384ce12d2", "scanner": "scanner-primary", "fingerprint": "12677205cbf17afe", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5dd713b04f79fa0c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/email-log/page.tsx:91"}, "properties": {"repobilityId": "717db50d92219932", "scanner": "scanner-primary", "fingerprint": "5dd713b04f79fa0c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-764834a4919af162", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/energy/page.tsx:73"}, "properties": {"repobilityId": "ed7dfb957e37ec39", "scanner": "scanner-primary", "fingerprint": "764834a4919af162", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-85614f1ed862b502", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/energy/outages/page.tsx:77"}, "properties": {"repobilityId": "b96f3b2147a12f18", "scanner": "scanner-primary", "fingerprint": "85614f1ed862b502", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-87af9c26d1410620", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/energy/service-calls/page.tsx:77"}, "properties": {"repobilityId": "b6c892b40a9de27f", "scanner": "scanner-primary", "fingerprint": "87af9c26d1410620", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4e5fe94ae4df1fca", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/energy/metering/page.tsx:72"}, "properties": {"repobilityId": "800b425551778120", "scanner": "scanner-primary", "fingerprint": "4e5fe94ae4df1fca", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-55b9321548c20bc0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/campaigns/[id]/page.tsx:80"}, "properties": {"repobilityId": "9de97a6ab1ab9c55", "scanner": "scanner-primary", "fingerprint": "55b9321548c20bc0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f5462867837a6361", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/contacts/list/page.tsx:190"}, "properties": {"repobilityId": "3040a1e27ef07779", "scanner": "scanner-primary", "fingerprint": "f5462867837a6361", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-869f77cc0182df75", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/contacts/[id]/page.tsx:78"}, "properties": {"repobilityId": "ff0927d030c02869", "scanner": "scanner-primary", "fingerprint": "869f77cc0182df75", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-697b582d197ec3c4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/ai-command-center/page.tsx:216"}, "properties": {"repobilityId": "6a6dfac6d26b6895", "scanner": "scanner-primary", "fingerprint": "697b582d197ec3c4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-81c33661e077778d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/offers/page.tsx:71"}, "properties": {"repobilityId": "21aa6e87ebf8834e", "scanner": "scanner-primary", "fingerprint": "81c33661e077778d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2ae3e99385d60499", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/offers/[id]/page.tsx:96"}, "properties": {"repobilityId": "e4e5cff7277a1230", "scanner": "scanner-primary", "fingerprint": "2ae3e99385d60499", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-384c8ba0eee5f0a9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(dashboard)/profile/page.tsx:613"}, "properties": {"repobilityId": "2a6383e9e29f73ad", "scanner": "scanner-primary", "fingerprint": "384c8ba0eee5f0a9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ba619442c826b4db", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/contracts/page.tsx:471"}, "properties": {"repobilityId": "6a94970ba5e2098a", "scanner": "scanner-primary", "fingerprint": "ba619442c826b4db", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0b7a3566f5c27c4b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/contracts/analytics/page.tsx:145"}, "properties": {"repobilityId": "e318fabc667fdbc7", "scanner": "scanner-primary", "fingerprint": "0b7a3566f5c27c4b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-372b78657b3d515c", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/(dashboard)/contracts/[id]/page.tsx:1708"}, "properties": {"repobilityId": "08899cf5709d476b", "scanner": "scanner-primary", "fingerprint": "372b78657b3d515c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2fabc994876e54c1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/contracts/[id]/page.tsx:451"}, "properties": {"repobilityId": "95d09ca5445480bb", "scanner": "scanner-primary", "fingerprint": "2fabc994876e54c1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0d5f429f215ccd9e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(dashboard)/contracts/[id]/editor/page.tsx:74"}, "properties": {"repobilityId": "2ac2ec0acb77f91d", "scanner": "scanner-primary", "fingerprint": "0d5f429f215ccd9e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-186d047e0b4a68c9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/contracts/[id]/editor/page.tsx:258"}, "properties": {"repobilityId": "8d81bff863289b1e", "scanner": "scanner-primary", "fingerprint": "186d047e0b4a68c9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-03403500ed792304", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/contracts/milestones/page.tsx:119"}, "properties": {"repobilityId": "df0f7849514e8e86", "scanner": "scanner-primary", "fingerprint": "03403500ed792304", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3b506b783fef80c3", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(dashboard)/contracts/templates/page.tsx:971"}, "properties": {"repobilityId": "6a1cecf8b952d446", "scanner": "scanner-primary", "fingerprint": "3b506b783fef80c3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-95eb173ade358900", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/contracts/templates/page.tsx:925"}, "properties": {"repobilityId": "ef058ebd7021c989", "scanner": "scanner-primary", "fingerprint": "95eb173ade358900", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-761f93158bf91770", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/reports/builder/page.tsx:285"}, "properties": {"repobilityId": "64aaedc5d7df0e71", "scanner": "scanner-primary", "fingerprint": "761f93158bf91770", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ad332e76a3d73377", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/support/agent-desktop/page.tsx:113"}, "properties": {"repobilityId": "e7ed0bd0eb4e5069", "scanner": "scanner-primary", "fingerprint": "ad332e76a3d73377", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ceca5c3c795fae2c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/support/voip/page.tsx:88"}, "properties": {"repobilityId": "8a4c4e57577943e0", "scanner": "scanner-primary", "fingerprint": "ceca5c3c795fae2c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c42e50a64ce18282", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/attribution/models/page.tsx:419"}, "properties": {"repobilityId": "f79aec4d0702a854", "scanner": "scanner-primary", "fingerprint": "c42e50a64ce18282", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2ec2924ece072dff", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/segments/page.tsx:89"}, "properties": {"repobilityId": "f068600b445b8f54", "scanner": "scanner-primary", "fingerprint": "2ec2924ece072dff", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4dc7d325d0917738", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/public-sector/page.tsx:66"}, "properties": {"repobilityId": "a64ce3da505a9cbc", "scanner": "scanner-primary", "fingerprint": "4dc7d325d0917738", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eced6dd94e527352", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/public-sector/cases/page.tsx:86"}, "properties": {"repobilityId": "8fef843bcd21f674", "scanner": "scanner-primary", "fingerprint": "eced6dd94e527352", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-419b47a4bf90bbab", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/public-sector/licenses/page.tsx:75"}, "properties": {"repobilityId": "11ae90ae6a6c7cfb", "scanner": "scanner-primary", "fingerprint": "419b47a4bf90bbab", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cab9c6c176fe4753", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/public-sector/grants/page.tsx:78"}, "properties": {"repobilityId": "10d562442ba8d313", "scanner": "scanner-primary", "fingerprint": "cab9c6c176fe4753", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7b20e6f512dd7db9", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/(dashboard)/inbox/page.tsx:179"}, "properties": {"repobilityId": "fb8d6b02dbad5ca9", "scanner": "scanner-primary", "fingerprint": "7b20e6f512dd7db9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9e070a53bb4a0054", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/inbox/analytics/page.tsx:87"}, "properties": {"repobilityId": "99d0b98f2095e139", "scanner": "scanner-primary", "fingerprint": "9e070a53bb4a0054", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b2974d515ca3398f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/inbox/legacy/page.tsx:177"}, "properties": {"repobilityId": "75e7dd0014185a4d", "scanner": "scanner-primary", "fingerprint": "b2974d515ca3398f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-129f4559b50d7d7e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/inbox/web-chat/page.tsx:133"}, "properties": {"repobilityId": "f63057edc5420eab", "scanner": "scanner-primary", "fingerprint": "129f4559b50d7d7e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1a446cbce19980d9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/social-monitoring/page.tsx:105"}, "properties": {"repobilityId": "6780604bbd356594", "scanner": "scanner-primary", "fingerprint": "1a446cbce19980d9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2259bd4dc1c57bc3", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(dashboard)/quotes/[id]/page.tsx:98"}, "properties": {"repobilityId": "6800dcca6a51a379", "scanner": "scanner-primary", "fingerprint": "2259bd4dc1c57bc3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f94749d8c2b917f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/quotes/[id]/page.tsx:232"}, "properties": {"repobilityId": "816f349bf7115ae5", "scanner": "scanner-primary", "fingerprint": "5f94749d8c2b917f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-72a5857b74d57de2", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/(dashboard)/deals/page.tsx:1010"}, "properties": {"repobilityId": "4767b6ce01e6ca37", "scanner": "scanner-primary", "fingerprint": "72a5857b74d57de2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-067814ff1686fc76", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/deals/page.tsx:334"}, "properties": {"repobilityId": "29a4dc78ba6d6679", "scanner": "scanner-primary", "fingerprint": "067814ff1686fc76", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dafc58217462a9e7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/deals/[id]/page.tsx:119"}, "properties": {"repobilityId": "1fab7b2132876aed", "scanner": "scanner-primary", "fingerprint": "dafc58217462a9e7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2dd342cb1512b190", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(dashboard)/forms/[id]/page.tsx:96"}, "properties": {"repobilityId": "75d04a4a4f2abbe6", "scanner": "scanner-primary", "fingerprint": "2dd342cb1512b190", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cd6b33eb421627ef", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/boards/page.tsx:401"}, "properties": {"repobilityId": "2367d6c1cc8c9eec", "scanner": "scanner-primary", "fingerprint": "cd6b33eb421627ef", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f6b28e2fb9c691c5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(dashboard)/boards/[divisionId]/page.tsx:372"}, "properties": {"repobilityId": "eafc84d13b29fd8e", "scanner": "scanner-primary", "fingerprint": "f6b28e2fb9c691c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-985e8118e63d6731", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/companies/page.tsx:209"}, "properties": {"repobilityId": "d97ceb5373d326fc", "scanner": "scanner-primary", "fingerprint": "985e8118e63d6731", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-03094bcb14de5897", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/pricing/page.tsx:365"}, "properties": {"repobilityId": "5bad9afcdb302c61", "scanner": "scanner-primary", "fingerprint": "03094bcb14de5897", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-85a7d8279a5262bf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/invoices/page.tsx:152"}, "properties": {"repobilityId": "0f2b2fdd91a1334f", "scanner": "scanner-primary", "fingerprint": "85a7d8279a5262bf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2b40d5173660f4c0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/invoices/recurring/page.tsx:179"}, "properties": {"repobilityId": "adab6ad7251acdf0", "scanner": "scanner-primary", "fingerprint": "2b40d5173660f4c0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-01dc803c9d55cff4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/invoices/[id]/page.tsx:692"}, "properties": {"repobilityId": "4cb91a6f870e053a", "scanner": "scanner-primary", "fingerprint": "01dc803c9d55cff4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ab3e11edd90b4aec", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(dashboard)/invoices/[id]/edit/page.tsx:93"}, "properties": {"repobilityId": "e778487040360de4", "scanner": "scanner-primary", "fingerprint": "ab3e11edd90b4aec", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fe3df5f7831fa99d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/sign/[token]/page.tsx:236"}, "properties": {"repobilityId": "b008625e57109b01", "scanner": "scanner-primary", "fingerprint": "fe3df5f7831fa99d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-319039d79c995ba7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/tenants/[id]/tenant-actions.tsx:47"}, "properties": {"repobilityId": "4d5bfc69de278d6e", "scanner": "scanner-primary", "fingerprint": "319039d79c995ba7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c110f42bb9425788", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/admin/tenants/[id]/edit/page.tsx:569"}, "properties": {"repobilityId": "76cd200256ec1571", "scanner": "scanner-primary", "fingerprint": "c110f42bb9425788", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-90b6f5ded2064279", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/tenants/[id]/edit/page.tsx:113"}, "properties": {"repobilityId": "e5af0adeceab9e35", "scanner": "scanner-primary", "fingerprint": "90b6f5ded2064279", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a33d7e5a5922cf78", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/plans/plans-client.tsx:61"}, "properties": {"repobilityId": "9a893f7de1f86e3c", "scanner": "scanner-primary", "fingerprint": "a33d7e5a5922cf78", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3c4fbab53d12c156", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/f/[slug]/page.tsx:28"}, "properties": {"repobilityId": "3e20091569279239", "scanner": "scanner-primary", "fingerprint": "3c4fbab53d12c156", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9f6eb423a74c0531", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/(auth)/layout.tsx:7"}, "properties": {"repobilityId": "cd9ed44bb3c78938", "scanner": "scanner-primary", "fingerprint": "9f6eb423a74c0531", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bd009892d1a81b2e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(public)/_custom-domain/page.tsx:229"}, "properties": {"repobilityId": "f62b25d3ed9438fd", "scanner": "scanner-primary", "fingerprint": "bd009892d1a81b2e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-620cfbb9b6c5f41f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(public)/p/[slug]/page.tsx:117"}, "properties": {"repobilityId": "46d4ac933cb54f23", "scanner": "scanner-primary", "fingerprint": "620cfbb9b6c5f41f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1583f557ae486de3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/(public)/events/[id]/register/page.tsx:27"}, "properties": {"repobilityId": "9aa23502af6a41bc", "scanner": "scanner-primary", "fingerprint": "1583f557ae486de3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9597a7762bc61437", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/project-rollup.ts:59"}, "properties": {"repobilityId": "2c924064a3eb5efd", "scanner": "scanner-primary", "fingerprint": "9597a7762bc61437", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b730e4fe99b0d422", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/auth.ts:226"}, "properties": {"repobilityId": "8f908c006f38d948", "scanner": "scanner-primary", "fingerprint": "b730e4fe99b0d422", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6e1c41d3d6a880f4", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/mtm-validators.ts:121"}, "properties": {"repobilityId": "75d6817199575c0d", "scanner": "scanner-primary", "fingerprint": "6e1c41d3d6a880f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4afb8dcf480ed4f5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/permissions.ts:25"}, "properties": {"repobilityId": "b391f56c8f9802be", "scanner": "scanner-primary", "fingerprint": "4afb8dcf480ed4f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-90aa571d88694686", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/plan-limits.ts:1"}, "properties": {"repobilityId": "84c9f53e91c3f6f2", "scanner": "scanner-primary", "fingerprint": "90aa571d88694686", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-41fb83df0b01d51a", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/lib/nav-items.ts:86"}, "properties": {"repobilityId": "81ba9c57eccf39ec", "scanner": "scanner-primary", "fingerprint": "41fb83df0b01d51a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f8e3dee6d3b542bc", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/sms.ts:55"}, "properties": {"repobilityId": "4806a3edf22fa389", "scanner": "scanner-primary", "fingerprint": "f8e3dee6d3b542bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-67004fc7cb115d9b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/push-client.ts:58"}, "properties": {"repobilityId": "eb7a9a58ed09f4fe", "scanner": "scanner-primary", "fingerprint": "67004fc7cb115d9b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-30b636003dbf8008", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/api-auth.ts:164"}, "properties": {"repobilityId": "660da5cfcb89e5ec", "scanner": "scanner-primary", "fingerprint": "30b636003dbf8008", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-198655d60341d5d0", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/rls-context.ts:33"}, "properties": {"repobilityId": "fe44c72714a49b1c", "scanner": "scanner-primary", "fingerprint": "198655d60341d5d0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-32c95fa9e9e18399", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/vkontakte.ts:15"}, "properties": {"repobilityId": "860736f6430a8b16", "scanner": "scanner-primary", "fingerprint": "32c95fa9e9e18399", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-551d81664255ec37", "level": "none", "message": {"text": "Commented-code block (13 lines) in src/lib/tenant-plans.ts:1"}, "properties": {"repobilityId": "abb69ab3db7e6483", "scanner": "scanner-primary", "fingerprint": "551d81664255ec37", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-54602c4664b45de4", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/rate-limit.ts:12"}, "properties": {"repobilityId": "835e0cd22435af83", "scanner": "scanner-primary", "fingerprint": "54602c4664b45de4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c1f95e3a00380438", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/whatsapp.ts:6"}, "properties": {"repobilityId": "30e3208437a71c6a", "scanner": "scanner-primary", "fingerprint": "c1f95e3a00380438", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-13bdb6d498ef2f87", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/journey-engine.ts:176"}, "properties": {"repobilityId": "61b0b371e17a0fbe", "scanner": "scanner-primary", "fingerprint": "13bdb6d498ef2f87", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5910de7b38ba3a7d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/journey-engine.ts:188"}, "properties": {"repobilityId": "9986967ecce2aec1", "scanner": "scanner-primary", "fingerprint": "5910de7b38ba3a7d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f5466cb6de0c5180", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/cloudflare-dns.ts:104"}, "properties": {"repobilityId": "bbe5902cb00b56e0", "scanner": "scanner-primary", "fingerprint": "f5466cb6de0c5180", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7accb491e0d43428", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/sanitize.ts:82"}, "properties": {"repobilityId": "9b8289557bfe22d3", "scanner": "scanner-primary", "fingerprint": "7accb491e0d43428", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c5101bd5029676d9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/survey-triggers.ts:73"}, "properties": {"repobilityId": "09f386374b1058f8", "scanner": "scanner-primary", "fingerprint": "c5101bd5029676d9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1a3d497bd02d8042", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/report-engine.ts:216"}, "properties": {"repobilityId": "ddad7ddf272c6341", "scanner": "scanner-primary", "fingerprint": "1a3d497bd02d8042", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7e48c5bc81ecd7d5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/marketing-data.ts:104"}, "properties": {"repobilityId": "6557f8715a25ca3e", "scanner": "scanner-primary", "fingerprint": "7e48c5bc81ecd7d5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-592f00724df395b9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/tenant-domain.ts:1"}, "properties": {"repobilityId": "98db01e51e43c000", "scanner": "scanner-primary", "fingerprint": "592f00724df395b9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ecc3590425c2a8b2", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/modules.ts:69"}, "properties": {"repobilityId": "303b5f0b76a500fc", "scanner": "scanner-primary", "fingerprint": "ecc3590425c2a8b2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c11ebd91a3d10a3", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/lib/shelf-analysis/golden-slots.ts:123"}, "properties": {"repobilityId": "e5c2c17171d8bd57", "scanner": "scanner-primary", "fingerprint": "2c11ebd91a3d10a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1d82857783c49594", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/shelf-analysis/providers/roboflow.ts:59"}, "properties": {"repobilityId": "a3e76cb7e842cb49", "scanner": "scanner-primary", "fingerprint": "1d82857783c49594", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bb20ac8da9e9919d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/advertising-studio/audience-payload-builder.ts:137"}, "properties": {"repobilityId": "b1ded5eed159b1ea", "scanner": "scanner-primary", "fingerprint": "bb20ac8da9e9919d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b5c482ddab4406f7", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/inventory/low-stock-detector.ts:55"}, "properties": {"repobilityId": "8cdfd14d5adc1cb5", "scanner": "scanner-primary", "fingerprint": "b5c482ddab4406f7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d023ec983f64b93d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/marketing-attribution/model-config-validator.ts:201"}, "properties": {"repobilityId": "4e8475c2dae1e52e", "scanner": "scanner-primary", "fingerprint": "d023ec983f64b93d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f636a2e05eebfde9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/marketing-attribution/recompute-worker.ts:195"}, "properties": {"repobilityId": "c99916f9e6cbff61", "scanner": "scanner-primary", "fingerprint": "f636a2e05eebfde9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd82a90b5dca12c1", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/lib/marketing-attribution/revenue-allocator.ts:120"}, "properties": {"repobilityId": "ea49c62de224e7c9", "scanner": "scanner-primary", "fingerprint": "fd82a90b5dca12c1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e233379165fef489", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/marketing-attribution/attribution-model-evaluator.ts:191"}, "properties": {"repobilityId": "d463056a736412ee", "scanner": "scanner-primary", "fingerprint": "e233379165fef489", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cdbaafd115999656", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/segment-activation/schedule-evaluator.ts:213"}, "properties": {"repobilityId": "140e3cc025bc91ea", "scanner": "scanner-primary", "fingerprint": "cdbaafd115999656", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-327ba32cab6b0851", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/notifications/access.ts:79"}, "properties": {"repobilityId": "0ebc09f347dfc29a", "scanner": "scanner-primary", "fingerprint": "327ba32cab6b0851", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-75fe14c66e3c02df", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/tax/providers/local.ts:135"}, "properties": {"repobilityId": "002344d5304fe118", "scanner": "scanner-primary", "fingerprint": "75fe14c66e3c02df", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-91813172f74d23d6", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/lib/ai/anthropic-client.ts:5"}, "properties": {"repobilityId": "86f1e05d327ddf90", "scanner": "scanner-primary", "fingerprint": "91813172f74d23d6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-33b330051756f9dc", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/ai/predictive.ts:102"}, "properties": {"repobilityId": "6a150af5ef686788", "scanner": "scanner-primary", "fingerprint": "33b330051756f9dc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f2fcab36cd8c148", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/ai/embeddings.ts:15"}, "properties": {"repobilityId": "a4ea64e7ff012b03", "scanner": "scanner-primary", "fingerprint": "5f2fcab36cd8c148", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-75cf54d5a3769166", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/ai/pii-masker.ts:126"}, "properties": {"repobilityId": "356861b3712490b1", "scanner": "scanner-primary", "fingerprint": "75cf54d5a3769166", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a833cb120842014a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/crypto/tenant-pii-encryption.ts:26"}, "properties": {"repobilityId": "cfb91be1c18639a3", "scanner": "scanner-primary", "fingerprint": "a833cb120842014a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3a50654a5be2d9cb", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/mtm/shelf-backstop.ts:89"}, "properties": {"repobilityId": "41b94d288719e458", "scanner": "scanner-primary", "fingerprint": "3a50654a5be2d9cb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c2e5f55f3a37969", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/mtm/price-ocr/google-vision-provider.ts:171"}, "properties": {"repobilityId": "1ae9a8f1f1e6dd62", "scanner": "scanner-primary", "fingerprint": "6c2e5f55f3a37969", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-70c8fc2a4ef515bd", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/clm/contract-pdf.ts:242"}, "properties": {"repobilityId": "a095c52c75bad1e2", "scanner": "scanner-primary", "fingerprint": "70c8fc2a4ef515bd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f0aa724aaf1bc271", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/clm/serialize-body.ts:118"}, "properties": {"repobilityId": "ee480baea0b3b30e", "scanner": "scanner-primary", "fingerprint": "f0aa724aaf1bc271", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ab5732e721c791be", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/apex/api-surface.ts:125"}, "properties": {"repobilityId": "4364db7aa1573eea", "scanner": "scanner-primary", "fingerprint": "ab5732e721c791be", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-06d52d2b2c1a3ffd", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/apex/node-vm-executor.ts:136"}, "properties": {"repobilityId": "33efe47288cfbf63", "scanner": "scanner-primary", "fingerprint": "06d52d2b2c1a3ffd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6dd1fae6e3736e56", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/apex/engine.ts:47"}, "properties": {"repobilityId": "0613ebec15b40612", "scanner": "scanner-primary", "fingerprint": "6dd1fae6e3736e56", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1138eefc35a9584f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/activity-capture/engine.ts:77"}, "properties": {"repobilityId": "4c0ed7317a389d99", "scanner": "scanner-primary", "fingerprint": "1138eefc35a9584f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-39874a082a7a548c", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/media/content-metric-aggregator.ts:115"}, "properties": {"repobilityId": "313326d777478ace", "scanner": "scanner-primary", "fingerprint": "39874a082a7a548c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-daeba555f5faf9c0", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/apps/manifest-parser.ts:24"}, "properties": {"repobilityId": "efde97f52cc14b68", "scanner": "scanner-primary", "fingerprint": "daeba555f5faf9c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-31be5582be86483e", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/unified-profile/identity-keys.ts:88"}, "properties": {"repobilityId": "8415d3de2e9c4155", "scanner": "scanner-primary", "fingerprint": "31be5582be86483e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dcda8e1d41c2ccb9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/unified-profile/profile-builder.ts:174"}, "properties": {"repobilityId": "cece2efaddb019f0", "scanner": "scanner-primary", "fingerprint": "dcda8e1d41c2ccb9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa8ce731a0b065df", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/recurrence/spawn.ts:92"}, "properties": {"repobilityId": "ae9555e37e8e680d", "scanner": "scanner-primary", "fingerprint": "fa8ce731a0b065df", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e89f8672e6258cb5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/recurrence/parse.ts:153"}, "properties": {"repobilityId": "09a3fcdef11c8aa3", "scanner": "scanner-primary", "fingerprint": "e89f8672e6258cb5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef7b6db8406692bc", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/cpq/quote-pdf.ts:290"}, "properties": {"repobilityId": "1dae2cb556494e76", "scanner": "scanner-primary", "fingerprint": "ef7b6db8406692bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cbd5c4a757ef38b0", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/cpq/spawn-contract.ts:57"}, "properties": {"repobilityId": "aca578f9b4853c30", "scanner": "scanner-primary", "fingerprint": "cbd5c4a757ef38b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-218b496ea83a09db", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/loyalty/promo-validator.ts:102"}, "properties": {"repobilityId": "376e2758363c5b7e", "scanner": "scanner-primary", "fingerprint": "218b496ea83a09db", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ca76665903b2a5c6", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/loyalty/discount-calculator.ts:32"}, "properties": {"repobilityId": "eaaaa0fb93cb02c0", "scanner": "scanner-primary", "fingerprint": "ca76665903b2a5c6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-907327c97cb40c9d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/loyalty/expiry-cron.ts:200"}, "properties": {"repobilityId": "e3f77ed104058435", "scanner": "scanner-primary", "fingerprint": "907327c97cb40c9d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1293f76f93605c14", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/loyalty/points-engine.ts:74"}, "properties": {"repobilityId": "39a191e06c526b63", "scanner": "scanner-primary", "fingerprint": "1293f76f93605c14", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-facfc35937849c67", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/loyalty/earn-pipeline.ts:144"}, "properties": {"repobilityId": "808e7826ad9614f7", "scanner": "scanner-primary", "fingerprint": "facfc35937849c67", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d515a6f7bfd224e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/loyalty/redemption-helpers.ts:67"}, "properties": {"repobilityId": "45ceea3ee1ab52c7", "scanner": "scanner-primary", "fingerprint": "0d515a6f7bfd224e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-048384a5131b684d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/cost-model/hooks.ts:20"}, "properties": {"repobilityId": "a177bf1f55aeb902", "scanner": "scanner-primary", "fingerprint": "048384a5131b684d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-635014b813d48219", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/finance/hooks.ts:35"}, "properties": {"repobilityId": "b7baf141c8357c54", "scanner": "scanner-primary", "fingerprint": "635014b813d48219", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-60d00807fd3bb2d6", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/external-services/client.ts:75"}, "properties": {"repobilityId": "7d3740c1af82e76d", "scanner": "scanner-primary", "fingerprint": "60d00807fd3bb2d6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-205500d59a9b8446", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/education/term-resolver.ts:39"}, "properties": {"repobilityId": "dd4fce66f1e91a29", "scanner": "scanner-primary", "fingerprint": "205500d59a9b8446", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-978c75c6432fb8f6", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/education/enrollment-validator.ts:99"}, "properties": {"repobilityId": "5bd589de204f39d5", "scanner": "scanner-primary", "fingerprint": "978c75c6432fb8f6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-06ad420b66b89c9f", "level": "none", "message": {"text": "Commented-code block (14 lines) in src/lib/platform-events/payload-validator.ts:110"}, "properties": {"repobilityId": "15f062cb5a4bdb5e", "scanner": "scanner-primary", "fingerprint": "06ad420b66b89c9f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-875ae48b1a2a1951", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/social/vk-poller.ts:23"}, "properties": {"repobilityId": "ced2d40e33342b85", "scanner": "scanner-primary", "fingerprint": "875ae48b1a2a1951", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9035f9ac0b94c133", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/social/inbox-channel.ts:29"}, "properties": {"repobilityId": "848c40e34fa035cb", "scanner": "scanner-primary", "fingerprint": "9035f9ac0b94c133", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a29810fea5249381", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/social/telegram-scanner.ts:71"}, "properties": {"repobilityId": "d44b03fe624e0e4b", "scanner": "scanner-primary", "fingerprint": "a29810fea5249381", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ab71b7f3e320fd96", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/social/facebook-poller.ts:48"}, "properties": {"repobilityId": "9e16d657595154ff", "scanner": "scanner-primary", "fingerprint": "ab71b7f3e320fd96", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76d3a99aed5f8348", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/social/facebook-poller.ts:56"}, "properties": {"repobilityId": "658133998bb6384f", "scanner": "scanner-primary", "fingerprint": "76d3a99aed5f8348", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a1e4e63ca6373c1a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/social/twitter-poller.ts:47"}, "properties": {"repobilityId": "a54eddb771129cbc", "scanner": "scanner-primary", "fingerprint": "a1e4e63ca6373c1a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-321a433656f10ef5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/social/tiktok-poller.ts:25"}, "properties": {"repobilityId": "d1f46233fd7e0875", "scanner": "scanner-primary", "fingerprint": "321a433656f10ef5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b0e86afa93c31d36", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/social/youtube-poller.ts:23"}, "properties": {"repobilityId": "d37317f594e395b8", "scanner": "scanner-primary", "fingerprint": "b0e86afa93c31d36", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-334527ca494c4edb", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/social/tenant-meta-app.ts:32"}, "properties": {"repobilityId": "1a76a82e5470ef54", "scanner": "scanner-primary", "fingerprint": "334527ca494c4edb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6e5d0b5fdd287f35", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/esign/audit-event-builder.ts:98"}, "properties": {"repobilityId": "1cf645d60975a3c5", "scanner": "scanner-primary", "fingerprint": "6e5d0b5fdd287f35", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-01c82b4facc5f421", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/esign/token-issuer.ts:85"}, "properties": {"repobilityId": "b4d1a0ddb3a47aeb", "scanner": "scanner-primary", "fingerprint": "01c82b4facc5f421", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a1589c956e28b9d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/budgeting/hooks.ts:26"}, "properties": {"repobilityId": "0dc59a1bdf8e8487", "scanner": "scanner-primary", "fingerprint": "6a1589c956e28b9d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6fc0057dcfeaa875", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/queue/worker.ts:160"}, "properties": {"repobilityId": "8544c9b15d6eedc6", "scanner": "scanner-primary", "fingerprint": "6fc0057dcfeaa875", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7401da1b0af7bec4", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/queue/jobs/shelf-analysis.ts:30"}, "properties": {"repobilityId": "6d3c68fe12b66908", "scanner": "scanner-primary", "fingerprint": "7401da1b0af7bec4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2414bf7cbc4aace", "level": "note", "message": {"text": "Legacy-named symbol `deletedUsedOld` in src/lib/queue/jobs/otp-cleanup.ts:13"}, "properties": {"repobilityId": "8ae63057ef36bc8e", "scanner": "scanner-primary", "fingerprint": "f2414bf7cbc4aace", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-59176062514fc510", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/queue/jobs/erp-order-push.ts:47"}, "properties": {"repobilityId": "0872e2015eb26434", "scanner": "scanner-primary", "fingerprint": "59176062514fc510", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-df59f1eca897dbbd", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/data-cloud-segmentation/query-validator.ts:157"}, "properties": {"repobilityId": "6deaacbc72d08815", "scanner": "scanner-primary", "fingerprint": "df59f1eca897dbbd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6f156ed13b50639b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/calculated-insights/days-since-last-purchase.ts:52"}, "properties": {"repobilityId": "09d490b5bb15f3b8", "scanner": "scanner-primary", "fingerprint": "6f156ed13b50639b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5668c4d4f379e193", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/calculated-insights/compute-org-insights.ts:107"}, "properties": {"repobilityId": "bc9a53a991dbc73a", "scanner": "scanner-primary", "fingerprint": "5668c4d4f379e193", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2d60112f9db58c16", "level": "note", "message": {"text": "Legacy-named symbol `hex_legacy` in src/lib/payments/providers/stripe.ts:46"}, "properties": {"repobilityId": "69a0942763353846", "scanner": "scanner-primary", "fingerprint": "2d60112f9db58c16", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0af87bd678fde064", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/contract-lifecycle/upsert-renewal-alerts.ts:64"}, "properties": {"repobilityId": "50fc2984245bbe0e", "scanner": "scanner-primary", "fingerprint": "0af87bd678fde064", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-df2b80388fadb4e3", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/contract-lifecycle/renewal-alert-scheduler.ts:67"}, "properties": {"repobilityId": "330e691ca39f5ee7", "scanner": "scanner-primary", "fingerprint": "df2b80388fadb4e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-da003d78557c1650", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/contract-lifecycle/clause-substituter.ts:231"}, "properties": {"repobilityId": "d4f76d08961ba38d", "scanner": "scanner-primary", "fingerprint": "da003d78557c1650", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9411e96599f6a94f", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/form-builder/validate-submission.ts:31"}, "properties": {"repobilityId": "9df31211211e792e", "scanner": "scanner-primary", "fingerprint": "9411e96599f6a94f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7fee039786b52561", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/oms/return-quantity-validator.ts:68"}, "properties": {"repobilityId": "cdbb431be6eaa40f", "scanner": "scanner-primary", "fingerprint": "7fee039786b52561", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-724d4ca35f10b096", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/voip/providers/twilio.ts:40"}, "properties": {"repobilityId": "2063d213f7cbc220", "scanner": "scanner-primary", "fingerprint": "724d4ca35f10b096", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-14017b080f79db67", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/lib/headless-commerce/tenant-from-host.ts:47"}, "properties": {"repobilityId": "0fbe291686e8d52b", "scanner": "scanner-primary", "fingerprint": "14017b080f79db67", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bb20f2a4894b0121", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/subscriptions/subscription-state-machine.ts:56"}, "properties": {"repobilityId": "2ce34e58c7cc1c53", "scanner": "scanner-primary", "fingerprint": "bb20f2a4894b0121", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b83a883785eda0a1", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/subscriptions/dunning-scheduler.ts:69"}, "properties": {"repobilityId": "9ec10d6113564bbd", "scanner": "scanner-primary", "fingerprint": "b83a883785eda0a1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8356fffee76b18ec", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/subscriptions/proration-calculator.ts:78"}, "properties": {"repobilityId": "ef217edc99129a0f", "scanner": "scanner-primary", "fingerprint": "8356fffee76b18ec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e138ab5ed0506172", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/identity-resolution/merge-resolver.ts:32"}, "properties": {"repobilityId": "738fad8adc60336d", "scanner": "scanner-primary", "fingerprint": "e138ab5ed0506172", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ccc7178b16cf0257", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/lib/app-builder/widget-validator.ts:205"}, "properties": {"repobilityId": "677fe02706023e4f", "scanner": "scanner-primary", "fingerprint": "ccc7178b16cf0257", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3d77f2e84f123fcc", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/public-sector/license-expiration-calculator.ts:100"}, "properties": {"repobilityId": "a761d53818782bcb", "scanner": "scanner-primary", "fingerprint": "3d77f2e84f123fcc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8cefb07da3238faa", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/rollup/filter.ts:29"}, "properties": {"repobilityId": "5c8f2faef873fedf", "scanner": "scanner-primary", "fingerprint": "8cefb07da3238faa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9754d5638c3c5165", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/entitlement-process/entitlement-lifecycle.ts:39"}, "properties": {"repobilityId": "a22e4d79de25cdf9", "scanner": "scanner-primary", "fingerprint": "9754d5638c3c5165", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-357425707bd80d0e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/energy-utilities/meter-reading-validator.ts:130"}, "properties": {"repobilityId": "ee7cea9c1fd938a9", "scanner": "scanner-primary", "fingerprint": "357425707bd80d0e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1e694c302ba8fbd5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/energy-utilities/types.ts:94"}, "properties": {"repobilityId": "b6cefb12f6ad66c7", "scanner": "scanner-primary", "fingerprint": "1e694c302ba8fbd5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c4e5872241839b2", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/omnistudio/flex-card-validator.ts:69"}, "properties": {"repobilityId": "fe398f342a106731", "scanner": "scanner-primary", "fingerprint": "2c4e5872241839b2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e0e2c7480015cb56", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/revenue-recognition/recognition-calculator.ts:102"}, "properties": {"repobilityId": "ec90dbeffe7d7afb", "scanner": "scanner-primary", "fingerprint": "e0e2c7480015cb56", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b99a09943ccdf30f", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/revenue-recognition/allocation-engine.ts:109"}, "properties": {"repobilityId": "58cbc98bf72ca676", "scanner": "scanner-primary", "fingerprint": "b99a09943ccdf30f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52f5ffdc37adc32f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/revenue-recognition/schedule-generator.ts:165"}, "properties": {"repobilityId": "d45b12d710727bef", "scanner": "scanner-primary", "fingerprint": "52f5ffdc37adc32f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c3d8a32f5bdf364b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/revenue-recognition/decimal-minor.ts:115"}, "properties": {"repobilityId": "f9e206e8e7796c2b", "scanner": "scanner-primary", "fingerprint": "c3d8a32f5bdf364b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f9b3f98e2950eedf", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/distributed-marketing/template-variable-validator.ts:98"}, "properties": {"repobilityId": "b5efbfe1369a662c", "scanner": "scanner-primary", "fingerprint": "f9b3f98e2950eedf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a85a2e5fecbac43c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/use-field-permissions.ts:14"}, "properties": {"repobilityId": "f2007bbb60d48671", "scanner": "scanner-primary", "fingerprint": "a85a2e5fecbac43c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fcdd1307187b61cc", "level": "note", "message": {"text": "98 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "51c4192f5836ddfa", "scanner": "scanner-primary", "fingerprint": "fcdd1307187b61cc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "d60e9250b59153e3", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "325785ccf56e3a25", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "87bcf01f297d5dad", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "533df65183dbbe20", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "d0b92da7aa67eb21", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "e664b5317f8f60ae", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "67b9e8286ad9a1e1", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-415b40d14b87442d", "level": "error", "message": {"text": "FastAPI POST `post_analytics` without auth dependency \u2014 services/compute/routes/cost_model.py:23"}, "properties": {"repobilityId": "9eddd8b2f0440af6", "scanner": "scanner-primary", "fingerprint": "415b40d14b87442d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/compute/routes/cost_model.py"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-e60f591a91be33f9", "level": "error", "message": {"text": "FastAPI POST `score_lead` without auth dependency \u2014 services/compute/routes/ai.py:7"}, "properties": {"repobilityId": "8b1f07015b7f5007", "scanner": "scanner-primary", "fingerprint": "e60f591a91be33f9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/compute/routes/ai.py"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-efe6be6cf6fe43a1", "level": "error", "message": {"text": "FastAPI POST `suggest_reply` without auth dependency \u2014 services/compute/routes/ai.py:13"}, "properties": {"repobilityId": "0d801ea2bcf0f35c", "scanner": "scanner-primary", "fingerprint": "efe6be6cf6fe43a1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/compute/routes/ai.py"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-2ae52f405b57e20c", "level": "error", "message": {"text": "FastAPI POST `analyze` without auth dependency \u2014 services/compute/routes/ai.py:19"}, "properties": {"repobilityId": "2de795bf69c8ed74", "scanner": "scanner-primary", "fingerprint": "2ae52f405b57e20c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/compute/routes/ai.py"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-e77ce58d60e10451", "level": "error", "message": {"text": "FastAPI POST `chat` without auth dependency \u2014 services/compute/routes/ai.py:25"}, "properties": {"repobilityId": "0f54cb730c252ef5", "scanner": "scanner-primary", "fingerprint": "e77ce58d60e10451", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/compute/routes/ai.py"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-4f69bed704585269", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users (scripts/xss-exploit.mjs:141)"}, "properties": {"repobilityId": "964ea7623e1313b5", "scanner": "scanner-primary", "fingerprint": "4f69bed704585269", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7174ff2dd1f514fd", "level": "error", "message": {"text": "Dangling fetch: GET https://graph.facebook.com/v21.0/debug_token?input_token=${token}&access_token=${process.env.FACEBOOK_APP_ID}|${process.env.FACEBOOK_APP_SECRET} (scripts/check-fb-token.mjs:27)"}, "properties": {"repobilityId": "38e70d5813a0be00", "scanner": "scanner-primary", "fingerprint": "7174ff2dd1f514fd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1477800699283ed1", "level": "error", "message": {"text": "Dangling fetch: GET https://graph.facebook.com/v21.0/me?access_token=${token} (scripts/check-fb-token.mjs:32)"}, "properties": {"repobilityId": "154815c9d8f3fefe", "scanner": "scanner-primary", "fingerprint": "1477800699283ed1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-25f7908146a4f6b7", "level": "error", "message": {"text": "Dangling fetch: POST https://api.telegram.org/bot${BOT_TOKEN}/sendMessage (src/instrumentation.ts:113)"}, "properties": {"repobilityId": "f14d8ccd298d3f5e", "scanner": "scanner-primary", "fingerprint": "25f7908146a4f6b7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1c259dba8a9331d7", "level": "error", "message": {"text": "Dangling fetch: POST https://api.telegram.org/bot${BOT_TOKEN}/sendMessage (src/instrumentation.ts:128)"}, "properties": {"repobilityId": "90ab13a57cbbc05f", "scanner": "scanner-primary", "fingerprint": "1c259dba8a9331d7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-efb2960f0776249d", "level": "error", "message": {"text": "Dangling fetch: POST https://api.resend.com/emails (src/__tests__/email-providers.test.ts:34)"}, "properties": {"repobilityId": "7b141649d7d651c0", "scanner": "scanner-primary", "fingerprint": "efb2960f0776249d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-51316070eede0cd2", "level": "error", "message": {"text": "Dangling fetch: POST https://api.postmarkapp.com/email (src/__tests__/email-providers.test.ts:57)"}, "properties": {"repobilityId": "26a4068420109c53", "scanner": "scanner-primary", "fingerprint": "51316070eede0cd2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-334b83364d192a21", "level": "error", "message": {"text": "Dangling fetch: POST https://api.postmarkapp.com/email (src/__tests__/email-providers.test.ts:85)"}, "properties": {"repobilityId": "eb4c74e78a3a882e", "scanner": "scanner-primary", "fingerprint": "334b83364d192a21", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-08187cc580d269ac", "level": "error", "message": {"text": "Dangling fetch: POST https://api.resend.com/emails (src/__tests__/email-providers.test.ts:99)"}, "properties": {"repobilityId": "7cf33d87b4f7911c", "scanner": "scanner-primary", "fingerprint": "08187cc580d269ac", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-489d8667c4f4b1a4", "level": "error", "message": {"text": "Dangling fetch: GET /api/budgeting/cost-types?includeInactive=false (src/components/expense-forecast-tab.tsx:81)"}, "properties": {"repobilityId": "0dc9bd81450d132e", "scanner": "scanner-primary", "fingerprint": "489d8667c4f4b1a4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ffdf02221b571422", "level": "error", "message": {"text": "Dangling fetch: GET /api/budgeting/departments?includeInactive=false (src/components/expense-forecast-tab.tsx:82)"}, "properties": {"repobilityId": "39ba1c84ff59da69", "scanner": "scanner-primary", "fingerprint": "ffdf02221b571422", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6a7c57fc0a2170fa", "level": "error", "message": {"text": "Dangling fetch: GET /api/budgeting/expense-forecast?year=${year} (src/components/expense-forecast-tab.tsx:83)"}, "properties": {"repobilityId": "a9642077b53c0682", "scanner": "scanner-primary", "fingerprint": "6a7c57fc0a2170fa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2ea05316321adfe1", "level": "error", "message": {"text": "Dangling fetch: GET /api/cost-model/compute (src/components/expense-forecast-tab.tsx:84)"}, "properties": {"repobilityId": "e93486f4484bfaeb", "scanner": "scanner-primary", "fingerprint": "2ea05316321adfe1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-764dcc06141feffa", "level": "error", "message": {"text": "Dangling fetch: POST /api/budgeting/expense-forecast (src/components/expense-forecast-tab.tsx:187)"}, "properties": {"repobilityId": "0937af2c8256738a", "scanner": "scanner-primary", "fingerprint": "764dcc06141feffa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f77099113e897a7e", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/companies/${company.id} (src/components/lead-detail-modal.tsx:108)"}, "properties": {"repobilityId": "aeb81a60fc1d383d", "scanner": "scanner-primary", "fingerprint": "f77099113e897a7e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-45da3d1c8bb39cac", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/companies/${company.id} (src/components/lead-detail-modal.tsx:123)"}, "properties": {"repobilityId": "6227870576506f3f", "scanner": "scanner-primary", "fingerprint": "45da3d1c8bb39cac", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9999ecfaff02be72", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/companies/${company.id} (src/components/lead-detail-modal.tsx:129)"}, "properties": {"repobilityId": "a9ef9bd1022a8815", "scanner": "scanner-primary", "fingerprint": "9999ecfaff02be72", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b66f15a066992650", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/activities?companyId=${company.id} (src/components/lead-detail-modal.tsx:152)"}, "properties": {"repobilityId": "5d56b80cd76405ba", "scanner": "scanner-primary", "fingerprint": "b66f15a066992650", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-405bf751c06162df", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/activities (src/components/lead-detail-modal.tsx:164)"}, "properties": {"repobilityId": "44990816bba84f82", "scanner": "scanner-primary", "fingerprint": "405bf751c06162df", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-277a798240be361f", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/tickets?companyId=${company.id} (src/components/lead-detail-modal.tsx:191)"}, "properties": {"repobilityId": "a9cd6497230904b0", "scanner": "scanner-primary", "fingerprint": "277a798240be361f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-137c8dbc7bb009bc", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/contacts/${c.id} (src/components/lead-detail-modal.tsx:463)"}, "properties": {"repobilityId": "7900037319995f44", "scanner": "scanner-primary", "fingerprint": "137c8dbc7bb009bc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d5e732a5a00aa09c", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/companies/${company.id} (src/components/lead-detail-modal.tsx:464)"}, "properties": {"repobilityId": "f4e92a4bfc064915", "scanner": "scanner-primary", "fingerprint": "d5e732a5a00aa09c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d79577ea4ac4d418", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/companies/${company.id} (src/components/lead-detail-modal.tsx:667)"}, "properties": {"repobilityId": "d9133b29126f7bca", "scanner": "scanner-primary", "fingerprint": "d79577ea4ac4d418", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-16bd522dfb826fab", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/notifications?entityType=inbox_message (src/components/sidebar.tsx:143)"}, "properties": {"repobilityId": "83f80cf2b3ed64a6", "scanner": "scanner-primary", "fingerprint": "16bd522dfb826fab", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-95a9b2437fffa86a", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/email-templates?limit=500 (src/components/campaign-form.tsx:128)"}, "properties": {"repobilityId": "a424e8e00dacb982", "scanner": "scanner-primary", "fingerprint": "95a9b2437fffa86a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cb66446b35b0bd12", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/segments?limit=500 (src/components/campaign-form.tsx:134)"}, "properties": {"repobilityId": "3c540b42de59c73f", "scanner": "scanner-primary", "fingerprint": "cb66446b35b0bd12", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5988a1a27a9eb8d7", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contacts?limit=1000 (src/components/campaign-form.tsx:140)"}, "properties": {"repobilityId": "f9485dfe36485be2", "scanner": "scanner-primary", "fingerprint": "5988a1a27a9eb8d7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a94e786e202a7f32", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/leads?limit=1&page=1 (src/components/campaign-form.tsx:146)"}, "properties": {"repobilityId": "c0bc221b58a9a070", "scanner": "scanner-primary", "fingerprint": "a94e786e202a7f32", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b2c4d1bd93b34dde", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/campaigns/${initialData.id}/variants (src/components/campaign-form.tsx:191)"}, "properties": {"repobilityId": "aa9aa92f1961fb40", "scanner": "scanner-primary", "fingerprint": "b2c4d1bd93b34dde", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-076f274f2fe498ef", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/campaigns/${campaignId}/variants/${v.id} (src/components/campaign-form.tsx:265)"}, "properties": {"repobilityId": "26670efacb561b1f", "scanner": "scanner-primary", "fingerprint": "076f274f2fe498ef", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6b24777682d37eb7", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/campaigns/${campaignId}/variants (src/components/campaign-form.tsx:272)"}, "properties": {"repobilityId": "8450791684d78e48", "scanner": "scanner-primary", "fingerprint": "6b24777682d37eb7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-230dee2abd72a994", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/tickets/ai-categorize (src/components/ticket-form.tsx:72)"}, "properties": {"repobilityId": "1e122c655ea15aff", "scanner": "scanner-primary", "fingerprint": "230dee2abd72a994", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cce9bceb9966632e", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/companies?limit=200 (src/components/ticket-form.tsx:125)"}, "properties": {"repobilityId": "03871321bad0e919", "scanner": "scanner-primary", "fingerprint": "cce9bceb9966632e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-66efcb50ea619683", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contacts?limit=200 (src/components/ticket-form.tsx:126)"}, "properties": {"repobilityId": "981bbe8ab6090fc2", "scanner": "scanner-primary", "fingerprint": "66efcb50ea619683", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-57f18c9e9348a8e5", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users (src/components/ticket-form.tsx:127)"}, "properties": {"repobilityId": "e5984fe39bd84f3b", "scanner": "scanner-primary", "fingerprint": "57f18c9e9348a8e5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-35c8d14b2a066154", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/tickets/${newId}/convert-to-complaint (src/components/ticket-form.tsx:175)"}, "properties": {"repobilityId": "52bd6676f9d4faf1", "scanner": "scanner-primary", "fingerprint": "35c8d14b2a066154", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e735355d7ea90336", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/digest-subscriptions (src/components/digest-subscriptions-panel.tsx:80)"}, "properties": {"repobilityId": "c8b7aa6ae85adfc8", "scanner": "scanner-primary", "fingerprint": "e735355d7ea90336", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fcd315e618d02965", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/digest-subscriptions (src/components/digest-subscriptions-panel.tsx:122)"}, "properties": {"repobilityId": "5eb53dc3b4db3b78", "scanner": "scanner-primary", "fingerprint": "fcd315e618d02965", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e2841a258e333296", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/digest-subscriptions/test (src/components/digest-subscriptions-panel.tsx:140)"}, "properties": {"repobilityId": "213557c453a8be80", "scanner": "scanner-primary", "fingerprint": "e2841a258e333296", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d1c0bdafee54c7e9", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/channels/sms/test (src/components/channel-config-form.tsx:628)"}, "properties": {"repobilityId": "38ea4b4a7ac7685f", "scanner": "scanner-primary", "fingerprint": "d1c0bdafee54c7e9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-502c03819d1ffda4", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/companies?limit=500&category=all (src/components/contract-form.tsx:80)"}, "properties": {"repobilityId": "24223e9c09f9bc31", "scanner": "scanner-primary", "fingerprint": "502c03819d1ffda4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-80de861590ddc32c", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/deals?limit=500 (src/components/contract-form.tsx:84)"}, "properties": {"repobilityId": "58cec73937fc1339", "scanner": "scanner-primary", "fingerprint": "80de861590ddc32c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-94603a87d5736e48", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contacts?limit=500 (src/components/contract-form.tsx:88)"}, "properties": {"repobilityId": "9b33863f8a7c7089", "scanner": "scanner-primary", "fingerprint": "94603a87d5736e48", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f897c2e2dbcd4dba", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/tickets/new-count?since=${encodeURIComponent(lastCheckedAt)} (src/components/ticket-notifier.tsx:61)"}, "properties": {"repobilityId": "6d0042a8998aa711", "scanner": "scanner-primary", "fingerprint": "f897c2e2dbcd4dba", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4386531e062e0eb0", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/calls/active (src/components/voip-call-provider.tsx:38)"}, "properties": {"repobilityId": "39334a6099338e4b", "scanner": "scanner-primary", "fingerprint": "4386531e062e0eb0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b05d1f98f0c2a43d", "level": "error", "message": {"text": "Dangling fetch: GET /api/budgeting/cash-flow/plan-fact?year=${year} (src/components/budget-plan-fact-dashboard.tsx:65)"}, "properties": {"repobilityId": "114d0e6b39a6c96e", "scanner": "scanner-primary", "fingerprint": "b05d1f98f0c2a43d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ad735c72c5476a48", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/public/portal-chat?sessionId=${saved.sessionId} (src/components/portal-chat-widget.tsx:103)"}, "properties": {"repobilityId": "8e72d44e0db6f89b", "scanner": "scanner-primary", "fingerprint": "ad735c72c5476a48", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-45b1d054c733032d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/public/portal-tickets/${ticket.id} (src/components/portal-chat-widget.tsx:167)"}, "properties": {"repobilityId": "d3fed14a519d14a0", "scanner": "scanner-primary", "fingerprint": "45b1d054c733032d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4aac7007302455c3", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/public/portal-chat (src/components/portal-chat-widget.tsx:266)"}, "properties": {"repobilityId": "cf8c39af486433fa", "scanner": "scanner-primary", "fingerprint": "4aac7007302455c3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-78c03a211d5f4907", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/public/portal-tickets (src/components/portal-chat-widget.tsx:324)"}, "properties": {"repobilityId": "9ede403deba448e0", "scanner": "scanner-primary", "fingerprint": "78c03a211d5f4907", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0851514944ffab37", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/public/portal-tickets/${csatTicketId} (src/components/portal-chat-widget.tsx:378)"}, "properties": {"repobilityId": "8b46705e917147de", "scanner": "scanner-primary", "fingerprint": "0851514944ffab37", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-86654012d2c7065c", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users/me (src/components/header.tsx:49)"}, "properties": {"repobilityId": "a1002b7e8a3ac681", "scanner": "scanner-primary", "fingerprint": "86654012d2c7065c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-446e04e9d818d955", "level": "error", "message": {"text": "Dangling fetch: GET /api/budgeting/departments?includeInactive=false (src/components/sales-forecast-tab.tsx:56)"}, "properties": {"repobilityId": "d31162ad065342de", "scanner": "scanner-primary", "fingerprint": "446e04e9d818d955", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-84f88f6f76811c5a", "level": "error", "message": {"text": "Dangling fetch: GET /api/budgeting/sales-forecast?year=${year} (src/components/sales-forecast-tab.tsx:57)"}, "properties": {"repobilityId": "4217ede6ce0088bf", "scanner": "scanner-primary", "fingerprint": "84f88f6f76811c5a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2b9471d19b82b123", "level": "error", "message": {"text": "Dangling fetch: POST /api/budgeting/sales-forecast (src/components/sales-forecast-tab.tsx:131)"}, "properties": {"repobilityId": "430c058b4f0f0767", "scanner": "scanner-primary", "fingerprint": "2b9471d19b82b123", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ef461ad553413712", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/segments/preview (src/components/segment-form.tsx:206)"}, "properties": {"repobilityId": "c95c6f008923c98a", "scanner": "scanner-primary", "fingerprint": "ef461ad553413712", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6adca8795f0a83e1", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/auth/sms-2fa/status (src/components/sms-2fa-card.tsx:43)"}, "properties": {"repobilityId": "c8f2b491a9cf1026", "scanner": "scanner-primary", "fingerprint": "6adca8795f0a83e1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4d425152bfd66b56", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/auth/sms-otp/send (src/components/sms-2fa-card.tsx:73)"}, "properties": {"repobilityId": "f317b903a7be94db", "scanner": "scanner-primary", "fingerprint": "4d425152bfd66b56", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-51983982589447ac", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/auth/sms-2fa/enable (src/components/sms-2fa-card.tsx:100)"}, "properties": {"repobilityId": "58f5e944411fcb58", "scanner": "scanner-primary", "fingerprint": "51983982589447ac", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-462b7f560fe9778f", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/auth/sms-2fa/disable (src/components/sms-2fa-card.tsx:123)"}, "properties": {"repobilityId": "ffa32153bb6047cc", "scanner": "scanner-primary", "fingerprint": "462b7f560fe9778f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0b516cd5a79ed9e8", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/email-templates/upload-image (src/components/email-template-form.tsx:821)"}, "properties": {"repobilityId": "139f28350feb9e52", "scanner": "scanner-primary", "fingerprint": "0b516cd5a79ed9e8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-80c427cc7d16821c", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/leads/${lead.id} (src/components/lead-item-modal.tsx:152)"}, "properties": {"repobilityId": "c96aad383384d275", "scanner": "scanner-primary", "fingerprint": "80c427cc7d16821c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-64ee6918e6efe9c4", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/leads/${lead.id} (src/components/lead-item-modal.tsx:165)"}, "properties": {"repobilityId": "08fa82b6d58620ed", "scanner": "scanner-primary", "fingerprint": "64ee6918e6efe9c4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1914bb0cfc157fa6", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/lead-scoring (src/components/lead-item-modal.tsx:200)"}, "properties": {"repobilityId": "fa8d1cb9b16961aa", "scanner": "scanner-primary", "fingerprint": "1914bb0cfc157fa6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b196291c7fceb769", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/ai (src/components/lead-item-modal.tsx:217)"}, "properties": {"repobilityId": "f4b77bf98a0f6a48", "scanner": "scanner-primary", "fingerprint": "b196291c7fceb769", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2ac6bb27292266b6", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/activities?relatedType=lead&relatedId=${lead.id} (src/components/lead-item-modal.tsx:231)"}, "properties": {"repobilityId": "c70e9413c6cb046f", "scanner": "scanner-primary", "fingerprint": "2ac6bb27292266b6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f62b1e768a828383", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/activities (src/components/lead-item-modal.tsx:243)"}, "properties": {"repobilityId": "f334af42d747df9e", "scanner": "scanner-primary", "fingerprint": "f62b1e768a828383", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2639e0e95a330f13", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/inbox (src/components/lead-item-modal.tsx:270)"}, "properties": {"repobilityId": "284398702d9b2f21", "scanner": "scanner-primary", "fingerprint": "2639e0e95a330f13", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6b8066f4ca9b7194", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/leads/${lead.id} (src/components/lead-item-modal.tsx:653)"}, "properties": {"repobilityId": "c44559afd919c764", "scanner": "scanner-primary", "fingerprint": "6b8066f4ca9b7194", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f64998762bd86dc4", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users (src/components/budget-department-access.tsx:44)"}, "properties": {"repobilityId": "68c29d424026593a", "scanner": "scanner-primary", "fingerprint": "f64998762bd86dc4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7cb9a426b7f588e2", "level": "error", "message": {"text": "Dangling fetch: GET /api/budgeting/config?type=departments (src/components/budget-department-access.tsx:48)"}, "properties": {"repobilityId": "9ae150b656549336", "scanner": "scanner-primary", "fingerprint": "7cb9a426b7f588e2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c2f4da58aaf64104", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/saved-views?entityType=${entityType} (src/components/saved-view-bar.tsx:72)"}, "properties": {"repobilityId": "41010c015dd6341f", "scanner": "scanner-primary", "fingerprint": "c2f4da58aaf64104", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-279b6b2f25858006", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/saved-views (src/components/saved-view-bar.tsx:108)"}, "properties": {"repobilityId": "1172022b9dc3b027", "scanner": "scanner-primary", "fingerprint": "279b6b2f25858006", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a6a59e50a9d318ae", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/saved-views/${view.id} (src/components/saved-view-bar.tsx:141)"}, "properties": {"repobilityId": "8beada2031ee606e", "scanner": "scanner-primary", "fingerprint": "a6a59e50a9d318ae", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0c83ec777f2c2c08", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/saved-views/${view.id} (src/components/saved-view-bar.tsx:161)"}, "properties": {"repobilityId": "08ebce6b9184ac09", "scanner": "scanner-primary", "fingerprint": "0c83ec777f2c2c08", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a3e80230d11d715c", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/workflows/${workflow.id} (src/components/workflow-actions-modal.tsx:114)"}, "properties": {"repobilityId": "f65c53c196a720c6", "scanner": "scanner-primary", "fingerprint": "a3e80230d11d715c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1f0ddab148c84871", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users (src/components/task-form.tsx:145)"}, "properties": {"repobilityId": "d66decdf8fa00518", "scanner": "scanner-primary", "fingerprint": "1f0ddab148c84871", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6e9299b1fa8a9f43", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/projects?limit=200 (src/components/task-form.tsx:154)"}, "properties": {"repobilityId": "5238d574618b6ec7", "scanner": "scanner-primary", "fingerprint": "6e9299b1fa8a9f43", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a0baa6cf7ad0d2bf", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/custom-fields?entityType=task (src/components/task-form.tsx:176)"}, "properties": {"repobilityId": "96768be861fc26c0", "scanner": "scanner-primary", "fingerprint": "a0baa6cf7ad0d2bf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9ba888dd12ae1edb", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/task-templates (src/components/task-form.tsx:205)"}, "properties": {"repobilityId": "c975c6e57a4aba1f", "scanner": "scanner-primary", "fingerprint": "9ba888dd12ae1edb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7f949a9945675182", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/task-templates/${tpl.id}/instantiate (src/components/task-form.tsx:311)"}, "properties": {"repobilityId": "58c0af2216638823", "scanner": "scanner-primary", "fingerprint": "7f949a9945675182", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d97edf7c8483df55", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/tasks/${createdTask.id}/checklist (src/components/task-form.tsx:388)"}, "properties": {"repobilityId": "153248ba4911130d", "scanner": "scanner-primary", "fingerprint": "d97edf7c8483df55", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2c482e5ab15f3177", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/sla-policies (src/components/company-form.tsx:85)"}, "properties": {"repobilityId": "2148c1dffb5c958c", "scanner": "scanner-primary", "fingerprint": "2c482e5ab15f3177", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8cf768890405b6f1", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/pages/${pageId} (src/components/grapes-editor.tsx:354)"}, "properties": {"repobilityId": "d598c9d52de4f815", "scanner": "scanner-primary", "fingerprint": "8cf768890405b6f1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-caf1ea68f069b6bd", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/pages/${pageId} (src/components/grapes-editor.tsx:403)"}, "properties": {"repobilityId": "d7a0b764cda7ef07", "scanner": "scanner-primary", "fingerprint": "caf1ea68f069b6bd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-35fa5caddde19a6e", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/pages/${pageId}/publish (src/components/grapes-editor.tsx:426)"}, "properties": {"repobilityId": "6849fe7dffe5f93b", "scanner": "scanner-primary", "fingerprint": "35fa5caddde19a6e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-82ce835c5503d476", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/search?q=${encodeURIComponent(q)} (src/components/command-search.tsx:69)"}, "properties": {"repobilityId": "1aed745f44d19ba8", "scanner": "scanner-primary", "fingerprint": "82ce835c5503d476", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-36a8e6414a026b74", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/${entity}s/${id}/timeline (src/components/interaction-timeline.tsx:53)"}, "properties": {"repobilityId": "9b4c27a727fb46b8", "scanner": "scanner-primary", "fingerprint": "36a8e6414a026b74", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a64143d8f60443e2", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users/assignable (src/components/user-picker.tsx:61)"}, "properties": {"repobilityId": "0a42823043824354", "scanner": "scanner-primary", "fingerprint": "a64143d8f60443e2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a0467d6f6b89da04", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users/me/notification-preferences (src/components/notification-bell.tsx:61)"}, "properties": {"repobilityId": "dcd9a3aff02c82a8", "scanner": "scanner-primary", "fingerprint": "a0467d6f6b89da04", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6677c3afdd1849bf", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/notifications (src/components/notification-bell.tsx:77)"}, "properties": {"repobilityId": "c23b552ef25bf22d", "scanner": "scanner-primary", "fingerprint": "6677c3afdd1849bf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7b4dc2bb6b7d91b3", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/notifications (src/components/notification-bell.tsx:128)"}, "properties": {"repobilityId": "06332c36378aa5ae", "scanner": "scanner-primary", "fingerprint": "7b4dc2bb6b7d91b3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-aa28a1b1ede3d599", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/notifications (src/components/notification-bell.tsx:143)"}, "properties": {"repobilityId": "11c516890127e797", "scanner": "scanner-primary", "fingerprint": "aa28a1b1ede3d599", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5f6f3ea8e4024887", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/calls?limit=1 (src/components/call-widget.tsx:30)"}, "properties": {"repobilityId": "54e801d8bf233c3e", "scanner": "scanner-primary", "fingerprint": "5f6f3ea8e4024887", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dd88a6ed539115ce", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/calls/${callLogId}/end (src/components/call-widget.tsx:68)"}, "properties": {"repobilityId": "c634dbeb382a56b2", "scanner": "scanner-primary", "fingerprint": "dd88a6ed539115ce", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0c28728fe0ddf664", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/calls/${callLogId}/notes (src/components/call-widget.tsx:78)"}, "properties": {"repobilityId": "3577589a75f1a9da", "scanner": "scanner-primary", "fingerprint": "0c28728fe0ddf664", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-35c3ce62fccaaa8d", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/calls/${callLogId}/disposition (src/components/call-widget.tsx:150)"}, "properties": {"repobilityId": "e63e69699a94c0e4", "scanner": "scanner-primary", "fingerprint": "35c3ce62fccaaa8d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-02510fc687c56334", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/calls (src/components/call-widget.tsx:203)"}, "properties": {"repobilityId": "051ae4defbcef6b5", "scanner": "scanner-primary", "fingerprint": "02510fc687c56334", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fc912c234ec0b298", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/pipelines (src/components/lead-convert-dialog.tsx:62)"}, "properties": {"repobilityId": "55a9d5698386722a", "scanner": "scanner-primary", "fingerprint": "fc912c234ec0b298", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5bf040114d702126", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/leads/${lead.id}/convert (src/components/lead-convert-dialog.tsx:87)"}, "properties": {"repobilityId": "713a2c2e3d63750f", "scanner": "scanner-primary", "fingerprint": "5bf040114d702126", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9c0f32bee6179659", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/ai/approve-action (src/components/ai-assistant-panel.tsx:160)"}, "properties": {"repobilityId": "4aee2e08e35636d2", "scanner": "scanner-primary", "fingerprint": "9c0f32bee6179659", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7bdc4d7c9b2b8ee3", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/ai/chat (src/components/ai-assistant-panel.tsx:196)"}, "properties": {"repobilityId": "025b9979138c86cd", "scanner": "scanner-primary", "fingerprint": "7bdc4d7c9b2b8ee3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-81335c8b68c260b9", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/kb-categories (src/components/kb-article-form.tsx:66)"}, "properties": {"repobilityId": "749b4829873dc19c", "scanner": "scanner-primary", "fingerprint": "81335c8b68c260b9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-abe1cbdb18364d2a", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/companies?limit=500 (src/components/contact-form.tsx:59)"}, "properties": {"repobilityId": "1c76e54cd172d3c9", "scanner": "scanner-primary", "fingerprint": "abe1cbdb18364d2a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ad51fc845c4657de", "level": "error", "message": {"text": "Dangling fetch: GET /api/budgeting/cost-types?includeInactive=true (src/components/budget-config-tab.tsx:66)"}, "properties": {"repobilityId": "9e68f7dcd71a355a", "scanner": "scanner-primary", "fingerprint": "ad51fc845c4657de", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5e06a480f52bb029", "level": "error", "message": {"text": "Dangling fetch: GET /api/budgeting/departments?includeInactive=true (src/components/budget-config-tab.tsx:67)"}, "properties": {"repobilityId": "c074e80590638e7a", "scanner": "scanner-primary", "fingerprint": "5e06a480f52bb029", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-27d4d0810886cc9a", "level": "error", "message": {"text": "Dangling fetch: PUT /api/budgeting/cost-types (src/components/budget-config-tab.tsx:92)"}, "properties": {"repobilityId": "3dfa1c378f13bba8", "scanner": "scanner-primary", "fingerprint": "27d4d0810886cc9a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9ced0806cf26126b", "level": "error", "message": {"text": "Dangling fetch: POST /api/budgeting/cost-types (src/components/budget-config-tab.tsx:98)"}, "properties": {"repobilityId": "eaea95207db58986", "scanner": "scanner-primary", "fingerprint": "9ced0806cf26126b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-aeb4e481135fcda2", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/budgeting/cost-types?id=${id} (src/components/budget-config-tab.tsx:110)"}, "properties": {"repobilityId": "24226c47b07ec31c", "scanner": "scanner-primary", "fingerprint": "aeb4e481135fcda2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-96957a249b316cdf", "level": "error", "message": {"text": "Dangling fetch: PUT /api/budgeting/departments (src/components/budget-config-tab.tsx:130)"}, "properties": {"repobilityId": "15feea04af4166e8", "scanner": "scanner-primary", "fingerprint": "96957a249b316cdf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-95742bfc2524544d", "level": "error", "message": {"text": "Dangling fetch: POST /api/budgeting/departments (src/components/budget-config-tab.tsx:136)"}, "properties": {"repobilityId": "c6832d3f7986ae13", "scanner": "scanner-primary", "fingerprint": "95742bfc2524544d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-53ccab8251e3c89c", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/budgeting/departments?id=${id} (src/components/budget-config-tab.tsx:148)"}, "properties": {"repobilityId": "2956bd855e474ced", "scanner": "scanner-primary", "fingerprint": "53ccab8251e3c89c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3c3ba97af660cc4e", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/segments?limit=100 (src/components/journey-form.tsx:131)"}, "properties": {"repobilityId": "3d3d230befcaa870", "scanner": "scanner-primary", "fingerprint": "3c3ba97af660cc4e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b8d2e8d96901b958", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/companies?limit=500 (src/components/offer-form.tsx:89)"}, "properties": {"repobilityId": "d61873e9209a401e", "scanner": "scanner-primary", "fingerprint": "b8d2e8d96901b958", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cb546e7879d701b6", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/products?limit=500 (src/components/offer-form.tsx:93)"}, "properties": {"repobilityId": "98da029d28cf4ea2", "scanner": "scanner-primary", "fingerprint": "cb546e7879d701b6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-63b3c799042fd312", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contacts?companyId=${companyId}&limit=100 (src/components/offer-form.tsx:103)"}, "properties": {"repobilityId": "b2b63b1986bdb03e", "scanner": "scanner-primary", "fingerprint": "63b3c799042fd312", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e8caa4f4243a4576", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/companies?limit=500 (src/components/deal-form.tsx:78)"}, "properties": {"repobilityId": "56192ca80d5c2637", "scanner": "scanner-primary", "fingerprint": "e8caa4f4243a4576", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6032087172efda55", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/campaigns?limit=500 (src/components/deal-form.tsx:83)"}, "properties": {"repobilityId": "5216b37bec61e4e3", "scanner": "scanner-primary", "fingerprint": "6032087172efda55", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-28935e0646488853", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contacts?limit=500 (src/components/deal-form.tsx:88)"}, "properties": {"repobilityId": "5c6bc274605b07c0", "scanner": "scanner-primary", "fingerprint": "28935e0646488853", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-23d55717d5ff96b1", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/pipelines (src/components/deal-form.tsx:101)"}, "properties": {"repobilityId": "bc1b02923dbf7b0c", "scanner": "scanner-primary", "fingerprint": "23d55717d5ff96b1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c1f3b7ef8a6a636f", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/tickets/${ticketId}/convert-to-complaint (src/components/convert-to-complaint-dialog.tsx:61)"}, "properties": {"repobilityId": "978d9fde022b0013", "scanner": "scanner-primary", "fingerprint": "c1f3b7ef8a6a636f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d138a495001e0e79", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/agents?limit=200 (src/components/mtm/agent-form.tsx:48)"}, "properties": {"repobilityId": "a9e45c54281831e3", "scanner": "scanner-primary", "fingerprint": "d138a495001e0e79", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3ce075eff023ce94", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/photos/${photoId}/annotations (src/components/mtm/shelf-annotator.tsx:101)"}, "properties": {"repobilityId": "6b2db986a3402317", "scanner": "scanner-primary", "fingerprint": "3ce075eff023ce94", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c8f34c04c2f36acc", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/skus?search=${encodeURIComponent(query)}&limit=20 (src/components/mtm/shelf-annotator.tsx:129)"}, "properties": {"repobilityId": "d1e523090acef81d", "scanner": "scanner-primary", "fingerprint": "c8f34c04c2f36acc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bc3372acadcefa2a", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/mtm/photos/${photoId}/annotations (src/components/mtm/shelf-annotator.tsx:265)"}, "properties": {"repobilityId": "36205e947d2f02d4", "scanner": "scanner-primary", "fingerprint": "bc3372acadcefa2a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2aef5c8ec6995612", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/mtm/equipment/import (src/components/mtm/equipment-import-modal.tsx:44)"}, "properties": {"repobilityId": "6b6f6ea5117a71eb", "scanner": "scanner-primary", "fingerprint": "2aef5c8ec6995612", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e63bc7e1d7cde4d2", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/agents?limit=200 (src/components/mtm/order-form.tsx:47)"}, "properties": {"repobilityId": "1af6952a95afe351", "scanner": "scanner-primary", "fingerprint": "e63bc7e1d7cde4d2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-833b87bd98bbb9c8", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/customers?limit=200 (src/components/mtm/order-form.tsx:48)"}, "properties": {"repobilityId": "557fd425c41e21a8", "scanner": "scanner-primary", "fingerprint": "833b87bd98bbb9c8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-274929ca06f4b645", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/agents?limit=200 (src/components/mtm/repair-request-edit-dialog.tsx:117)"}, "properties": {"repobilityId": "c0091e590a5e5520", "scanner": "scanner-primary", "fingerprint": "274929ca06f4b645", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4742b981f5836e0e", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/mtm/repair-requests/${request.id} (src/components/mtm/repair-request-edit-dialog.tsx:167)"}, "properties": {"repobilityId": "728e118238f9e084", "scanner": "scanner-primary", "fingerprint": "4742b981f5836e0e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-51c6da2c2ea5077e", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/mtm/skus/import (src/components/mtm/sku-import-modal.tsx:55)"}, "properties": {"repobilityId": "aab75fe117808dbf", "scanner": "scanner-primary", "fingerprint": "51c6da2c2ea5077e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fc54bbbc291983c3", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/agents?limit=200 (src/components/mtm/task-form.tsx:41)"}, "properties": {"repobilityId": "99b6ce509346aa09", "scanner": "scanner-primary", "fingerprint": "fc54bbbc291983c3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a67c7b3662117d14", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/customers?limit=200 (src/components/mtm/task-form.tsx:42)"}, "properties": {"repobilityId": "517f9c7951afb958", "scanner": "scanner-primary", "fingerprint": "a67c7b3662117d14", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1a1eb2f45e398caf", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/agents?limit=200 (src/components/mtm/route-form.tsx:43)"}, "properties": {"repobilityId": "3f1a8230a5822ddb", "scanner": "scanner-primary", "fingerprint": "1a1eb2f45e398caf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c02e5f0aaeba17c7", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/customers?limit=200 (src/components/mtm/route-form.tsx:44)"}, "properties": {"repobilityId": "d58c9705f7969200", "scanner": "scanner-primary", "fingerprint": "c02e5f0aaeba17c7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9345ad2f1baca933", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/agents?limit=200 (src/components/mtm/visit-form.tsx:40)"}, "properties": {"repobilityId": "5570b6f23b6c1215", "scanner": "scanner-primary", "fingerprint": "9345ad2f1baca933", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ea701f4d67a37106", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/customers?limit=200 (src/components/mtm/visit-form.tsx:41)"}, "properties": {"repobilityId": "0fa62e80be15a8b6", "scanner": "scanner-primary", "fingerprint": "ea701f4d67a37106", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-306dc0279349bd58", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users (src/components/projects/project-form.tsx:70)"}, "properties": {"repobilityId": "d6853172d6f7266a", "scanner": "scanner-primary", "fingerprint": "306dc0279349bd58", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ac088039eb6eaf50", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/companies?limit=500 (src/components/projects/project-form.tsx:73)"}, "properties": {"repobilityId": "1f8d0558bedb402a", "scanner": "scanner-primary", "fingerprint": "ac088039eb6eaf50", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ae84eda15a20f62d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/deals?limit=500 (src/components/projects/project-form.tsx:76)"}, "properties": {"repobilityId": "b5121f484e1fde1c", "scanner": "scanner-primary", "fingerprint": "ae84eda15a20f62d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dc89bdbafc93544b", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/projects/${projectId}/members (src/components/projects/project-members-tab.tsx:55)"}, "properties": {"repobilityId": "a277a4d7ae15baa3", "scanner": "scanner-primary", "fingerprint": "dc89bdbafc93544b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6e9bdc987b72bafd", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/projects/${projectId}/members?memberId=${memberId} (src/components/projects/project-members-tab.tsx:62)"}, "properties": {"repobilityId": "538e0d356bd7bff9", "scanner": "scanner-primary", "fingerprint": "6e9bdc987b72bafd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-53c86e4c075becec", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/projects/${projectId}/members (src/components/projects/project-members-tab.tsx:67)"}, "properties": {"repobilityId": "33a4733670a1e9c1", "scanner": "scanner-primary", "fingerprint": "53c86e4c075becec", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3c7999dbf219c94f", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/projects/${projectId}/milestones (src/components/projects/project-milestones-tab.tsx:38)"}, "properties": {"repobilityId": "4814c0e2c2582205", "scanner": "scanner-primary", "fingerprint": "3c7999dbf219c94f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fe05b641941558bc", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/projects/${projectId}/milestones (src/components/projects/project-milestones-tab.tsx:40)"}, "properties": {"repobilityId": "a89cd541d56a0039", "scanner": "scanner-primary", "fingerprint": "fe05b641941558bc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2c8474b7777ced5f", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/projects/${projectId}/milestones?milestoneId=${milestoneId} (src/components/projects/project-milestones-tab.tsx:46)"}, "properties": {"repobilityId": "d2c7a049242b6ce2", "scanner": "scanner-primary", "fingerprint": "2c8474b7777ced5f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e5b509ce677db980", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/tasks?projectId=${encodeURIComponent(projectId)}&limit=${FETCH_LIMIT} (src/components/projects/project-crm-activity-tab.tsx:110)"}, "properties": {"repobilityId": "82e67af5b87c62f6", "scanner": "scanner-primary", "fingerprint": "e5b509ce677db980", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-88402659447c076d", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/projects/${projectId}/tasks (src/components/projects/project-tasks-tab.tsx:100)"}, "properties": {"repobilityId": "7bbb77b6a8484f7c", "scanner": "scanner-primary", "fingerprint": "88402659447c076d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f29555ce2cc27241", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/projects/${projectId}/tasks (src/components/projects/project-tasks-tab.tsx:102)"}, "properties": {"repobilityId": "74114a1bf9adb479", "scanner": "scanner-primary", "fingerprint": "f29555ce2cc27241", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-80d3bafc25e795ce", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/projects/${projectId}/tasks?taskId=${taskId} (src/components/projects/project-tasks-tab.tsx:108)"}, "properties": {"repobilityId": "fc90f3914c5174c9", "scanner": "scanner-primary", "fingerprint": "80d3bafc25e795ce", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b5385af6ad67e78a", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/projects/${projectId}/tasks (src/components/projects/project-tasks-tab.tsx:113)"}, "properties": {"repobilityId": "51cb60a9d05768b0", "scanner": "scanner-primary", "fingerprint": "b5385af6ad67e78a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d0c574e03a626845", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/events/${event.id}/participants (src/components/events/events-analytics.tsx:211)"}, "properties": {"repobilityId": "ee2580807e66e42d", "scanner": "scanner-primary", "fingerprint": "d0c574e03a626845", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2dfaffc47838b2ea", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/events/${event.id}/participants (src/components/events/events-analytics.tsx:225)"}, "properties": {"repobilityId": "ea0b589cdcd80d2b", "scanner": "scanner-primary", "fingerprint": "2dfaffc47838b2ea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bf6b1cd1d42ac10b", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/events/${event.id}/participants (src/components/events/events-analytics.tsx:233)"}, "properties": {"repobilityId": "22e680404cbcb2e9", "scanner": "scanner-primary", "fingerprint": "bf6b1cd1d42ac10b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fe94d67719687f22", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/events/${selectedEvent.id}/confirm-all (src/components/events/events-analytics.tsx:398)"}, "properties": {"repobilityId": "703fe5fa4d0eb26b", "scanner": "scanner-primary", "fingerprint": "fe94d67719687f22", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-16d8739315d3dbc0", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/analytics/segments?entity=contacts (src/components/dashboard/segments-widget.tsx:36)"}, "properties": {"repobilityId": "204a96bf0c678231", "scanner": "scanner-primary", "fingerprint": "16d8739315d3dbc0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a00a9dc10472fe32", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/settings/ai-stats (src/components/dashboard/ai-value-widget.tsx:74)"}, "properties": {"repobilityId": "3e6d02c2eca5ac96", "scanner": "scanner-primary", "fingerprint": "a00a9dc10472fe32", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c2f4d7eac5a1605a", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/analytics/churn-risk?limit=5 (src/components/dashboard/churn-risk-widget.tsx:36)"}, "properties": {"repobilityId": "7e939b5768e58da6", "scanner": "scanner-primary", "fingerprint": "c2f4d7eac5a1605a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-17d078b16251fba8", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/tasks (src/components/dashboard/churn-risk-widget.tsx:46)"}, "properties": {"repobilityId": "ac2c33aecb765d20", "scanner": "scanner-primary", "fingerprint": "17d078b16251fba8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c8f74b21070ab17a", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/settings/ai-stats (src/components/dashboard/ai-actions-widget.tsx:65)"}, "properties": {"repobilityId": "6c29153473092a36", "scanner": "scanner-primary", "fingerprint": "c8f74b21070ab17a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b4255a447caa1a5d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/ai/next-actions?limit=5 (src/components/dashboard/recommended-actions.tsx:50)"}, "properties": {"repobilityId": "800a639fc0041509", "scanner": "scanner-primary", "fingerprint": "b4255a447caa1a5d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e9e50985c938a135", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/activities (src/components/dashboard/recommended-actions.tsx:62)"}, "properties": {"repobilityId": "9b2e2e02c5702027", "scanner": "scanner-primary", "fingerprint": "e9e50985c938a135", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8ff3ed7cb21ce68f", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/tasks (src/components/dashboard/recommended-actions.tsx:75)"}, "properties": {"repobilityId": "8c16abdf341186ba", "scanner": "scanner-primary", "fingerprint": "8ff3ed7cb21ce68f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1e50308e02b17c52", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/deals?search=${encodeURIComponent(q)}&limit=20 (src/components/cpq/deal-combobox.tsx:38)"}, "properties": {"repobilityId": "fb8b497e92643aa2", "scanner": "scanner-primary", "fingerprint": "1e50308e02b17c52", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-db92c75158f7a9b8", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/products?active=1&search=${encodeURIComponent(q)}&limit=20 (src/components/cpq/product-combobox.tsx:42)"}, "properties": {"repobilityId": "df46ac16d33029b6", "scanner": "scanner-primary", "fingerprint": "db92c75158f7a9b8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c6a383d877bf1fdb", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/quotes (src/components/cpq/quote-create-dialog.tsx:126)"}, "properties": {"repobilityId": "6dab0478637f39ff", "scanner": "scanner-primary", "fingerprint": "c6a383d877bf1fdb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-83e98edf5c55a9e8", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/surveys/${surveyId}/analytics?days=${range} (src/components/surveys/analytics-dashboard.tsx:42)"}, "properties": {"repobilityId": "76917733523d1cf9", "scanner": "scanner-primary", "fingerprint": "83e98edf5c55a9e8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ab4059622c209c35", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/surveys/${surveyId} (src/components/surveys/triggers-panel.tsx:42)"}, "properties": {"repobilityId": "992b3fa8a3cdd783", "scanner": "scanner-primary", "fingerprint": "ab4059622c209c35", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7ebe08ba04210243", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/surveys/${surveyId}/unsubscribes (src/components/surveys/unsubscribes-panel.tsx:37)"}, "properties": {"repobilityId": "c03f12d0ab0bd775", "scanner": "scanner-primary", "fingerprint": "7ebe08ba04210243", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2b2c255d034fd81c", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/surveys/${surveyId}/unsubscribes (src/components/surveys/unsubscribes-panel.tsx:48)"}, "properties": {"repobilityId": "0bbc6f7c0ff22f02", "scanner": "scanner-primary", "fingerprint": "2b2c255d034fd81c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-874552cfec42d3b6", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/surveys/${surveyId}/unsubscribes?rowId=${id} (src/components/surveys/unsubscribes-panel.tsx:67)"}, "properties": {"repobilityId": "bb25ee5ad9072492", "scanner": "scanner-primary", "fingerprint": "874552cfec42d3b6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4b67dc714df2443e", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/tasks/${taskId}/checklist (src/components/tasks/task-detail-view.tsx:407)"}, "properties": {"repobilityId": "31cf983683a1f021", "scanner": "scanner-primary", "fingerprint": "4b67dc714df2443e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-964a843505e839aa", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/tasks/${taskId}/checklist (src/components/tasks/task-detail-view.tsx:419)"}, "properties": {"repobilityId": "c0e2d89edd888f00", "scanner": "scanner-primary", "fingerprint": "964a843505e839aa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a21587a90ed8d010", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/tasks/${taskId}/checklist?itemId=${itemId} (src/components/tasks/task-detail-view.tsx:428)"}, "properties": {"repobilityId": "b29cacdc16a83eef", "scanner": "scanner-primary", "fingerprint": "a21587a90ed8d010", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bcf3acf3a9754920", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/tasks/${taskId}/files (src/components/tasks/task-detail-view.tsx:519)"}, "properties": {"repobilityId": "3759e3b880b930fa", "scanner": "scanner-primary", "fingerprint": "bcf3acf3a9754920", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b4ca43bed915f743", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/tasks/${taskId}/files/${fileId} (src/components/tasks/task-detail-view.tsx:533)"}, "properties": {"repobilityId": "eb1847faae5fbe42", "scanner": "scanner-primary", "fingerprint": "b4ca43bed915f743", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5ed010a8e48aacfb", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/tasks/${taskId}/comments (src/components/tasks/task-detail-view.tsx:623)"}, "properties": {"repobilityId": "205fb50131bcc6bf", "scanner": "scanner-primary", "fingerprint": "5ed010a8e48aacfb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b3b7c0a95fb4962d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users/assignable (src/components/tasks/task-detail-view.tsx:763)"}, "properties": {"repobilityId": "d04b54c7ecf94dd1", "scanner": "scanner-primary", "fingerprint": "b3b7c0a95fb4962d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fe4d4fd31f60ddb2", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/custom-fields?entityType=task (src/components/tasks/task-detail-view.tsx:782)"}, "properties": {"repobilityId": "e30f401b1da974c9", "scanner": "scanner-primary", "fingerprint": "fe4d4fd31f60ddb2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bf051265287e4180", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/divisions (src/components/tasks/task-detail-view.tsx:798)"}, "properties": {"repobilityId": "f7ae35c0c6afa11a", "scanner": "scanner-primary", "fingerprint": "bf051265287e4180", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f07fe75cf52d83b5", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/tasks/${taskId} (src/components/tasks/task-detail-view.tsx:820)"}, "properties": {"repobilityId": "88074887587cf4f8", "scanner": "scanner-primary", "fingerprint": "f07fe75cf52d83b5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a94e15b65b79f448", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/tasks/${taskId} (src/components/tasks/task-detail-view.tsx:837)"}, "properties": {"repobilityId": "14afa3394cfc36b8", "scanner": "scanner-primary", "fingerprint": "a94e15b65b79f448", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3d98c6061c95e9cb", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/tasks/${taskId} (src/components/tasks/task-detail-view.tsx:858)"}, "properties": {"repobilityId": "1b7e5f7801555591", "scanner": "scanner-primary", "fingerprint": "3d98c6061c95e9cb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-78cecf488a281201", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/tasks/${taskId} (src/components/tasks/task-detail-view.tsx:890)"}, "properties": {"repobilityId": "c8d9ce457bf07a54", "scanner": "scanner-primary", "fingerprint": "78cecf488a281201", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2c5029adea511653", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/tasks/${taskId} (src/components/tasks/task-detail-view.tsx:912)"}, "properties": {"repobilityId": "6245ba0a4ac8b5e6", "scanner": "scanner-primary", "fingerprint": "2c5029adea511653", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-929ae3f88cab9166", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/tasks/${taskId} (src/components/tasks/task-detail-view.tsx:925)"}, "properties": {"repobilityId": "cace423b4b235f0e", "scanner": "scanner-primary", "fingerprint": "929ae3f88cab9166", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6982c533027e5564", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/integrations/google-calendar (src/components/tasks/task-detail-view.tsx:1032)"}, "properties": {"repobilityId": "6798011546c424d9", "scanner": "scanner-primary", "fingerprint": "6982c533027e5564", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4b1d19c71c558cdb", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/tasks/${task.id}/stop-series (src/components/tasks/task-detail-view.tsx:1571)"}, "properties": {"repobilityId": "57f6aa7a91526643", "scanner": "scanner-primary", "fingerprint": "4b1d19c71c558cdb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c87c306d34a576b9", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/divisions (src/components/tasks/operational-report.tsx:122)"}, "properties": {"repobilityId": "bb8fb2de2bcafe2e", "scanner": "scanner-primary", "fingerprint": "c87c306d34a576b9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-06b0d4b43a85a567", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users/assignable (src/components/tasks/operational-report.tsx:127)"}, "properties": {"repobilityId": "b79857477a87dfc5", "scanner": "scanner-primary", "fingerprint": "06b0d4b43a85a567", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-abbe1187d0fc8af6", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/projects?limit=200 (src/components/tasks/operational-report.tsx:131)"}, "properties": {"repobilityId": "a99ce16cdf7ec2fc", "scanner": "scanner-primary", "fingerprint": "abbe1187d0fc8af6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2e2e004177036d3f", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/custom-fields?entityType=task (src/components/tasks/operational-report.tsx:136)"}, "properties": {"repobilityId": "d2a27dbdc8754ae8", "scanner": "scanner-primary", "fingerprint": "2e2e004177036d3f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-26cff61f640ede6c", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/tasks/report?${p.toString()} (src/components/tasks/operational-report.tsx:150)"}, "properties": {"repobilityId": "8aedc1f4402df5e2", "scanner": "scanner-primary", "fingerprint": "26cff61f640ede6c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4ada1f417c76c5c9", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/saved-views?entityType=tasks (src/components/tasks/inline-tasks-table.tsx:308)"}, "properties": {"repobilityId": "ad9fc8e0ec5ac1ea", "scanner": "scanner-primary", "fingerprint": "4ada1f417c76c5c9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a8dd414e995daed7", "level": "error", "message": {"text": "Dangling fetch: GET /api/chat/messages?sessionId=${sessionId}&after=${lastTs} (src/components/marketing/live-chat.tsx:43)"}, "properties": {"repobilityId": "c009eda5e8e2920f", "scanner": "scanner-primary", "fingerprint": "a8dd414e995daed7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e6f28882d59f0c6c", "level": "error", "message": {"text": "Dangling fetch: POST /api/chat/send (src/components/marketing/live-chat.tsx:89)"}, "properties": {"repobilityId": "b06a2e17c9f4525e", "scanner": "scanner-primary", "fingerprint": "e6f28882d59f0c6c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-172979a8840b343c", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/public/cobrowse/signal (src/components/cobrowse/customer-widget.tsx:65)"}, "properties": {"repobilityId": "daa4e7909ae6c23f", "scanner": "scanner-primary", "fingerprint": "172979a8840b343c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ba5301a83dd537e8", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/public/cobrowse/join (src/components/cobrowse/customer-widget.tsx:115)"}, "properties": {"repobilityId": "0f4f3662fcb0cc7f", "scanner": "scanner-primary", "fingerprint": "ba5301a83dd537e8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3e6f71779942cf13", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/public/cobrowse/consent (src/components/cobrowse/customer-widget.tsx:135)"}, "properties": {"repobilityId": "b001d149a9c47fc2", "scanner": "scanner-primary", "fingerprint": "3e6f71779942cf13", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-92c499fab5524555", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/public/cobrowse/consent (src/components/cobrowse/customer-widget.tsx:228)"}, "properties": {"repobilityId": "cb83f80f3ef6baa7", "scanner": "scanner-primary", "fingerprint": "92c499fab5524555", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-90b6b9d4f44e8d9b", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/ai-feedback (src/components/adaptive-ai/ai-feedback-widget.tsx:66)"}, "properties": {"repobilityId": "8ef4f6c2f4f96c23", "scanner": "scanner-primary", "fingerprint": "90b6b9d4f44e8d9b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8486067fd1d63d37", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/companies?category=client&limit=1 (src/components/profitability/parameters-tab.tsx:50)"}, "properties": {"repobilityId": "4e1a4ebdc8cf4690", "scanner": "scanner-primary", "fingerprint": "8486067fd1d63d37", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8bd819363325852b", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/social/analytics?days=${range} (src/components/social/analytics-panel.tsx:54)"}, "properties": {"repobilityId": "12237fb843a55f71", "scanner": "scanner-primary", "fingerprint": "8bd819363325852b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c4f71167c6efba98", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/invoices?dealId=${dealId}&limit=100 (src/components/deals/invoices-tab.tsx:45)"}, "properties": {"repobilityId": "b4b1ff1ead7e897a", "scanner": "scanner-primary", "fingerprint": "c4f71167c6efba98", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-429fd12395d30c5b", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/tasks (src/components/deals/ai-suggestions.tsx:48)"}, "properties": {"repobilityId": "18665a61b8827eff", "scanner": "scanner-primary", "fingerprint": "429fd12395d30c5b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-57aaab65b4b32140", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/deals/ai-suggestions?dealId=${dealId} (src/components/deals/ai-suggestions.tsx:69)"}, "properties": {"repobilityId": "de1df727412659b8", "scanner": "scanner-primary", "fingerprint": "57aaab65b4b32140", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3c8cfaa0b9d84c14", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users?limit=100 (src/components/deals/deal-sidebar.tsx:74)"}, "properties": {"repobilityId": "b6733af61faaeb83", "scanner": "scanner-primary", "fingerprint": "3c8cfaa0b9d84c14", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-26378682128cb0dd", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/deals/${dealId}/team (src/components/deals/deal-sidebar.tsx:98)"}, "properties": {"repobilityId": "125179a4cf8b72c6", "scanner": "scanner-primary", "fingerprint": "26378682128cb0dd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8a0c7af78cd93b7c", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contacts?limit=200 (src/components/deals/deal-sidebar.tsx:175)"}, "properties": {"repobilityId": "07cbb8dc9d2b8516", "scanner": "scanner-primary", "fingerprint": "8a0c7af78cd93b7c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b56fa4c778e4f3e6", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/deals/${dealId}/contact-roles (src/components/deals/deal-sidebar.tsx:199)"}, "properties": {"repobilityId": "52278a1f2844cce4", "scanner": "scanner-primary", "fingerprint": "b56fa4c778e4f3e6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2a028235f1bb8de0", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/deals/${dealId}/competitors (src/components/deals/deal-sidebar.tsx:328)"}, "properties": {"repobilityId": "7e03af2a215e90ed", "scanner": "scanner-primary", "fingerprint": "2a028235f1bb8de0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-31e17872b1735b65", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/deals/${deal.id}/competitors (src/components/deals/deal-sidebar.tsx:390)"}, "properties": {"repobilityId": "effdcda2b2ac734c", "scanner": "scanner-primary", "fingerprint": "31e17872b1735b65", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-aed468d5c630ec50", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/deals/${deal.id}/team (src/components/deals/deal-sidebar.tsx:535)"}, "properties": {"repobilityId": "c024b2f5760a9ee3", "scanner": "scanner-primary", "fingerprint": "aed468d5c630ec50", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-81a3890788e4bb5e", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/deals/${deal.id}/contact-roles (src/components/deals/deal-sidebar.tsx:594)"}, "properties": {"repobilityId": "3006f58d0cc9d050", "scanner": "scanner-primary", "fingerprint": "81a3890788e4bb5e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ffd5a5ec5e5202d1", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/deals/${deal.id}/competitors (src/components/deals/deal-sidebar.tsx:668)"}, "properties": {"repobilityId": "06e1110a85a3b098", "scanner": "scanner-primary", "fingerprint": "ffd5a5ec5e5202d1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-34c9875218c28eed", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/deals/${dealId}/offers (src/components/deals/offers-tab.tsx:90)"}, "properties": {"repobilityId": "ccef63732f011a90", "scanner": "scanner-primary", "fingerprint": "34c9875218c28eed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1d91cd65991e549e", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/offers/${deleteOffer.id} (src/components/deals/offers-tab.tsx:100)"}, "properties": {"repobilityId": "ddd90ee30d55ed46", "scanner": "scanner-primary", "fingerprint": "1d91cd65991e549e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7973e26c8049be09", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/audit-log?entityType=deal&entityId=${dealId}&limit=100 (src/components/deals/deal-history.tsx:36)"}, "properties": {"repobilityId": "a8c751965c251999", "scanner": "scanner-primary", "fingerprint": "7973e26c8049be09", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4cc73d77d6034fe1", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/offers/${offer.id}/send (src/components/deals/send-offer-dialog.tsx:55)"}, "properties": {"repobilityId": "8a98f31c92caaaba", "scanner": "scanner-primary", "fingerprint": "4cc73d77d6034fe1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3f21f564c078205d", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/deals/${dealId}/send-email (src/components/deals/quick-action-bar.tsx:111)"}, "properties": {"repobilityId": "75d218a25c6dcfac", "scanner": "scanner-primary", "fingerprint": "3f21f564c078205d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d1ddd52241d5e04e", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/activities (src/components/deals/quick-action-bar.tsx:134)"}, "properties": {"repobilityId": "596d716808c105a5", "scanner": "scanner-primary", "fingerprint": "d1ddd52241d5e04e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a250dc58b13e974a", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/deals/${dealId}/next-steps (src/components/deals/quick-action-bar.tsx:149)"}, "properties": {"repobilityId": "29c51ef5566f7080", "scanner": "scanner-primary", "fingerprint": "a250dc58b13e974a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3707b392feeaa0bf", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/ai/recommend (src/components/deals/next-best-offers.tsx:40)"}, "properties": {"repobilityId": "1b632e106d261b87", "scanner": "scanner-primary", "fingerprint": "3707b392feeaa0bf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3b8b31096a979d7d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/products?limit=6 (src/components/deals/next-best-offers.tsx:63)"}, "properties": {"repobilityId": "461384543df52186", "scanner": "scanner-primary", "fingerprint": "3b8b31096a979d7d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c9ae50d50c68339a", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/deals/${dealId}/products (src/components/deals/next-best-offers.tsx:88)"}, "properties": {"repobilityId": "7e7f779c17186f85", "scanner": "scanner-primary", "fingerprint": "c9ae50d50c68339a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d664403836563d6c", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/companies?limit=500 (src/components/deals/offer-form.tsx:116)"}, "properties": {"repobilityId": "2c0684a5e41d6862", "scanner": "scanner-primary", "fingerprint": "d664403836563d6c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bd6a34ab88033e9c", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/products (src/components/deals/offer-form.tsx:117)"}, "properties": {"repobilityId": "bc11b59709ba5652", "scanner": "scanner-primary", "fingerprint": "bd6a34ab88033e9c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ab09fdc444810ce5", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/deals/${dealId}/engagement (src/components/deals/engagement-tab.tsx:33)"}, "properties": {"repobilityId": "77ab39c1a3a9790e", "scanner": "scanner-primary", "fingerprint": "ab09fdc444810ce5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-92e997937380e8d9", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/activities?relatedType=deal&relatedId=${dealId}&limit=50 (src/components/deals/activity-timeline.tsx:50)"}, "properties": {"repobilityId": "6476ba44bfec21be", "scanner": "scanner-primary", "fingerprint": "92e997937380e8d9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-76108b6e909cb1b7", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/activities (src/components/deals/activity-timeline.tsx:78)"}, "properties": {"repobilityId": "776d2e970c12e472", "scanner": "scanner-primary", "fingerprint": "76108b6e909cb1b7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-749b319f74d885b6", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/saved-views?entityType=tasks (src/components/boards/config-table-sections.tsx:54)"}, "properties": {"repobilityId": "f22e500e5d43af10", "scanner": "scanner-primary", "fingerprint": "749b319f74d885b6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ab56f2aec86edb1f", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/saved-views/${orgViewId} (src/components/boards/config-table-sections.tsx:82)"}, "properties": {"repobilityId": "1c37685e4ef9bd36", "scanner": "scanner-primary", "fingerprint": "ab56f2aec86edb1f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d273cd12addaf238", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/saved-views (src/components/boards/config-table-sections.tsx:86)"}, "properties": {"repobilityId": "d563c3cb2f2a844a", "scanner": "scanner-primary", "fingerprint": "d273cd12addaf238", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6bc2a2f892ad8308", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/saved-views/${orgViewId} (src/components/boards/config-table-sections.tsx:101)"}, "properties": {"repobilityId": "c29620ef696e7e5b", "scanner": "scanner-primary", "fingerprint": "6bc2a2f892ad8308", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-927f4f5052152ed9", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/custom-fields?entityType=task (src/components/boards/config-table-sections.tsx:202)"}, "properties": {"repobilityId": "17a9847ec00ba4dd", "scanner": "scanner-primary", "fingerprint": "927f4f5052152ed9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d4d52b7fcee21b57", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/divisions/${divisionId}/analytics?${q.toString()} (src/components/boards/board-reports.tsx:122)"}, "properties": {"repobilityId": "95dfacb8d5de6276", "scanner": "scanner-primary", "fingerprint": "d4d52b7fcee21b57", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-61112bfa19e88643", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/divisions/${divisionId} (src/components/boards/board-reports.tsx:536)"}, "properties": {"repobilityId": "264e0e605aba2b0d", "scanner": "scanner-primary", "fingerprint": "61112bfa19e88643", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-21529581152626ef", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/proactive-alerts?entityType=${entityType}&entityId=${entityId} (src/components/proactive/active-alerts-panel.tsx:66)"}, "properties": {"repobilityId": "22eb7a33bdf49f8c", "scanner": "scanner-primary", "fingerprint": "21529581152626ef", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f548f9d71dc46720", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users/me/preferences (src/contexts/launcher-prefs-context.tsx:64)"}, "properties": {"repobilityId": "c03a558964b55a15", "scanner": "scanner-primary", "fingerprint": "f548f9d71dc46720", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9d19d2111b9f27cd", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/users/me/preferences (src/contexts/launcher-prefs-context.tsx:100)"}, "properties": {"repobilityId": "46fe4737658b2a01", "scanner": "scanner-primary", "fingerprint": "9d19d2111b9f27cd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0f39a22f0caf8a31", "level": "error", "message": {"text": "Dangling fetch: POST https://api.twitter.com/2/tweets (src/app/api/v1/social/mentions/[id]/reply/route.ts:54)"}, "properties": {"repobilityId": "581c9c389b50ab61", "scanner": "scanner-primary", "fingerprint": "0f39a22f0caf8a31", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4ed85d934187404a", "level": "error", "message": {"text": "Dangling fetch: POST https://api.twitter.com/2/oauth2/token (src/app/api/v1/social/oauth/twitter/callback/route.ts:40)"}, "properties": {"repobilityId": "3bae3040efb69d79", "scanner": "scanner-primary", "fingerprint": "4ed85d934187404a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0b4b25fbed8e5d27", "level": "error", "message": {"text": "Dangling fetch: GET https://api.twitter.com/2/users/me (src/app/api/v1/social/oauth/twitter/callback/route.ts:67)"}, "properties": {"repobilityId": "11c13c402228b992", "scanner": "scanner-primary", "fingerprint": "0b4b25fbed8e5d27", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7d8320fc07a83f60", "level": "error", "message": {"text": "Dangling fetch: POST https://oauth2.googleapis.com/token (src/app/api/v1/social/oauth/youtube/callback/route.ts:33)"}, "properties": {"repobilityId": "00dfc58178aa9fa2", "scanner": "scanner-primary", "fingerprint": "7d8320fc07a83f60", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4225f65b5fe6b98c", "level": "error", "message": {"text": "Dangling fetch: GET https://www.googleapis.com/youtube/v3/channels?part=snippet&mine=true (src/app/api/v1/social/oauth/youtube/callback/route.ts:48)"}, "properties": {"repobilityId": "3d1c928e4b336049", "scanner": "scanner-primary", "fingerprint": "4225f65b5fe6b98c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-33429908998de0a7", "level": "error", "message": {"text": "Dangling fetch: POST https://open.tiktokapis.com/v2/oauth/token/ (src/app/api/v1/social/oauth/tiktok/callback/route.ts:34)"}, "properties": {"repobilityId": "7e4cbfffb54eb4ce", "scanner": "scanner-primary", "fingerprint": "33429908998de0a7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ab20f55cd45b0ff8", "level": "error", "message": {"text": "Dangling fetch: GET https://open.tiktokapis.com/v2/user/info/?fields=open_id,username,display_name,avatar_url (src/app/api/v1/social/oauth/tiktok/callback/route.ts:54)"}, "properties": {"repobilityId": "9e28b953c70f4c94", "scanner": "scanner-primary", "fingerprint": "ab20f55cd45b0ff8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bcc5d201d4edfcdf", "level": "error", "message": {"text": "Dangling fetch: POST https://api.telegram.org/bot${d.telegramBotToken}/sendMessage (src/app/api/v1/digest-subscriptions/test/route.ts:90)"}, "properties": {"repobilityId": "d3dc4e36553fe84d", "scanner": "scanner-primary", "fingerprint": "bcc5d201d4edfcdf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-90b78d98f635823c", "level": "error", "message": {"text": "Dangling fetch: POST https://api.voyageai.com/v1/embeddings (src/app/api/v1/contracts/[id]/reindex/route.ts:42)"}, "properties": {"repobilityId": "e8f8d2b2e07c6211", "scanner": "scanner-primary", "fingerprint": "90b78d98f635823c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a231d7c6a7d3e337", "level": "error", "message": {"text": "Dangling fetch: POST https://api.voyageai.com/v1/embeddings (src/app/api/v1/contracts/search/semantic/route.ts:45)"}, "properties": {"repobilityId": "2cd697ba32957667", "scanner": "scanner-primary", "fingerprint": "a231d7c6a7d3e337", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-68af9e52fba4c0c6", "level": "error", "message": {"text": "Dangling fetch: POST https://api.telegram.org/bot${tgChannel.botToken}/sendMessage (src/app/api/v1/inbox/route.ts:541)"}, "properties": {"repobilityId": "a0f05196886f61ed", "scanner": "scanner-primary", "fingerprint": "68af9e52fba4c0c6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-34a8e096c8642729", "level": "error", "message": {"text": "Dangling fetch: POST https://api.telegram.org/bot${token}/sendMessage (src/app/api/v1/inbox/conversations/[id]/messages/route.ts:35)"}, "properties": {"repobilityId": "428f5ed853e49420", "scanner": "scanner-primary", "fingerprint": "34a8e096c8642729", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-585e8a625e92c832", "level": "error", "message": {"text": "Dangling fetch: POST https://api.telegram.org/bot${BOT_TOKEN}/sendMessage (src/app/api/chat/send/route.ts:25)"}, "properties": {"repobilityId": "70c351ca9ec9f5de", "scanner": "scanner-primary", "fingerprint": "585e8a625e92c832", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-96b5b1b713de2baf", "level": "error", "message": {"text": "Dangling fetch: POST https://api.voyageai.com/v1/embeddings (src/app/api/cron/contract-embeddings/route.ts:42)"}, "properties": {"repobilityId": "2a95f43b24933453", "scanner": "scanner-primary", "fingerprint": "96b5b1b713de2baf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-98a82ac26240e312", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/dashboard/widget-config (src/app/(dashboard)/page.tsx:45)"}, "properties": {"repobilityId": "67646e6db70090c4", "scanner": "scanner-primary", "fingerprint": "98a82ac26240e312", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-eca96800da775b55", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/dashboard/executive (src/app/(dashboard)/page.tsx:87)"}, "properties": {"repobilityId": "b34e580a8b19a08f", "scanner": "scanner-primary", "fingerprint": "eca96800da775b55", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e3383c4cdf28de10", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/webhooks/manage (src/app/(dashboard)/settings/integrations/page.tsx:100)"}, "properties": {"repobilityId": "21ea0808006ddc33", "scanner": "scanner-primary", "fingerprint": "e3383c4cdf28de10", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8842249e05dd6450", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/integrations/slack (src/app/(dashboard)/settings/integrations/page.tsx:108)"}, "properties": {"repobilityId": "13f768200d066813", "scanner": "scanner-primary", "fingerprint": "8842249e05dd6450", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-66d0f7e7b7c177ad", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/integrations/teams (src/app/(dashboard)/settings/integrations/page.tsx:116)"}, "properties": {"repobilityId": "4c88f5a1a4fdebeb", "scanner": "scanner-primary", "fingerprint": "66d0f7e7b7c177ad", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-71cd63a296bf7ea1", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/integrations/esign-provider (src/app/(dashboard)/settings/integrations/page.tsx:124)"}, "properties": {"repobilityId": "f8fd658e89ef07b5", "scanner": "scanner-primary", "fingerprint": "71cd63a296bf7ea1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8b18ea4b0e4ee783", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/integrations/google-calendar/status (src/app/(dashboard)/settings/integrations/page.tsx:136)"}, "properties": {"repobilityId": "742e901d6bba3aa1", "scanner": "scanner-primary", "fingerprint": "8b18ea4b0e4ee783", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ab0f4e4f5a3d2808", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/integrations/google-calendar/connect (src/app/(dashboard)/settings/integrations/page.tsx:145)"}, "properties": {"repobilityId": "dcc23bcb1102d33a", "scanner": "scanner-primary", "fingerprint": "ab0f4e4f5a3d2808", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-73994c1e4685896c", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/integrations/google-calendar/status (src/app/(dashboard)/settings/integrations/page.tsx:157)"}, "properties": {"repobilityId": "be017e1dcf733e55", "scanner": "scanner-primary", "fingerprint": "73994c1e4685896c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-713a4ca805ffa650", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/webhooks/manage (src/app/(dashboard)/settings/integrations/page.tsx:178)"}, "properties": {"repobilityId": "1f43b4d1176b4693", "scanner": "scanner-primary", "fingerprint": "713a4ca805ffa650", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d4bde6e72cbee94d", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/webhooks/manage/${id} (src/app/(dashboard)/settings/integrations/page.tsx:195)"}, "properties": {"repobilityId": "4cb564491cf95d47", "scanner": "scanner-primary", "fingerprint": "d4bde6e72cbee94d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-07727e634c70e121", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/webhooks/manage/${id} (src/app/(dashboard)/settings/integrations/page.tsx:200)"}, "properties": {"repobilityId": "5b1b9ec5b1e81ecd", "scanner": "scanner-primary", "fingerprint": "07727e634c70e121", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2c6897ba0ed3da1f", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/integrations/slack (src/app/(dashboard)/settings/integrations/page.tsx:210)"}, "properties": {"repobilityId": "e474d43debd5ad50", "scanner": "scanner-primary", "fingerprint": "2c6897ba0ed3da1f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-66a71d2479d4e083", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/integrations/slack (src/app/(dashboard)/settings/integrations/page.tsx:227)"}, "properties": {"repobilityId": "4f9f577fdfbb78cd", "scanner": "scanner-primary", "fingerprint": "66a71d2479d4e083", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a46c350dcaf46afe", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/integrations/slack?id=${id} (src/app/(dashboard)/settings/integrations/page.tsx:238)"}, "properties": {"repobilityId": "414bc14cb9f69e20", "scanner": "scanner-primary", "fingerprint": "a46c350dcaf46afe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b2e09c437612b4d9", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/integrations/slack (src/app/(dashboard)/settings/integrations/page.tsx:244)"}, "properties": {"repobilityId": "f93e4b75784c7cd0", "scanner": "scanner-primary", "fingerprint": "b2e09c437612b4d9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cf2d44288b6fd1f6", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/integrations/teams (src/app/(dashboard)/settings/integrations/page.tsx:254)"}, "properties": {"repobilityId": "8e00073ac4ce812f", "scanner": "scanner-primary", "fingerprint": "cf2d44288b6fd1f6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7edb1cce4af03c99", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/integrations/teams (src/app/(dashboard)/settings/integrations/page.tsx:271)"}, "properties": {"repobilityId": "93f9a632c5f699a9", "scanner": "scanner-primary", "fingerprint": "7edb1cce4af03c99", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-270c941da6121020", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/integrations/teams?id=${id} (src/app/(dashboard)/settings/integrations/page.tsx:282)"}, "properties": {"repobilityId": "23854fa9e5335560", "scanner": "scanner-primary", "fingerprint": "270c941da6121020", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b145c3778c55f248", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/integrations/teams (src/app/(dashboard)/settings/integrations/page.tsx:288)"}, "properties": {"repobilityId": "b58a69d33375c206", "scanner": "scanner-primary", "fingerprint": "b145c3778c55f248", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4e2f8b5ef2d15fc4", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/integrations/esign-provider (src/app/(dashboard)/settings/integrations/page.tsx:306)"}, "properties": {"repobilityId": "d8806e64789d040b", "scanner": "scanner-primary", "fingerprint": "4e2f8b5ef2d15fc4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0f833d16a7b8c10d", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/integrations/esign-provider?id=${configId} (src/app/(dashboard)/settings/integrations/page.tsx:325)"}, "properties": {"repobilityId": "37ed22254e6c35c0", "scanner": "scanner-primary", "fingerprint": "0f833d16a7b8c10d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b71849cef473c2d2", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/api-keys (src/app/(dashboard)/settings/security/page.tsx:52)"}, "properties": {"repobilityId": "132938c771b58c5d", "scanner": "scanner-primary", "fingerprint": "b71849cef473c2d2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3d64f676781a6fea", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/api-keys/scopes (src/app/(dashboard)/settings/security/page.tsx:58)"}, "properties": {"repobilityId": "0ed50f24c6c9d44f", "scanner": "scanner-primary", "fingerprint": "3d64f676781a6fea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a5a6fc62b3b6129b", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/auth/linked-accounts (src/app/(dashboard)/settings/security/page.tsx:64)"}, "properties": {"repobilityId": "5df00fdbc1a3f68c", "scanner": "scanner-primary", "fingerprint": "a5a6fc62b3b6129b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-90a31507b62881a1", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/auth/linked-accounts (src/app/(dashboard)/settings/security/page.tsx:72)"}, "properties": {"repobilityId": "77fc6de3d90ca37d", "scanner": "scanner-primary", "fingerprint": "90a31507b62881a1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-170e5dc6c987ddd7", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/auth/2fa (src/app/(dashboard)/settings/security/page.tsx:91)"}, "properties": {"repobilityId": "f86b49f758d80760", "scanner": "scanner-primary", "fingerprint": "170e5dc6c987ddd7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2cc7155322ee648d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/settings/auth-methods (src/app/(dashboard)/settings/security/page.tsx:100)"}, "properties": {"repobilityId": "be408605f305d355", "scanner": "scanner-primary", "fingerprint": "2cc7155322ee648d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-17330df538e94fd4", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/settings/auth-methods (src/app/(dashboard)/settings/security/page.tsx:109)"}, "properties": {"repobilityId": "b7e79f30faee2f93", "scanner": "scanner-primary", "fingerprint": "17330df538e94fd4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cbd287fff6ccbc42", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/auth/2fa (src/app/(dashboard)/settings/security/page.tsx:123)"}, "properties": {"repobilityId": "7242891af0ae2e91", "scanner": "scanner-primary", "fingerprint": "cbd287fff6ccbc42", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f3c3461542f77bd5", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/auth/2fa (src/app/(dashboard)/settings/security/page.tsx:146)"}, "properties": {"repobilityId": "4af0234eac6bb453", "scanner": "scanner-primary", "fingerprint": "f3c3461542f77bd5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d5e37a7477be18f7", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/auth/2fa (src/app/(dashboard)/settings/security/page.tsx:167)"}, "properties": {"repobilityId": "5ffa02d10ca56af6", "scanner": "scanner-primary", "fingerprint": "d5e37a7477be18f7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b9a6b1546bd921e4", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/api-keys (src/app/(dashboard)/settings/security/page.tsx:720)"}, "properties": {"repobilityId": "7fa9047c347d0557", "scanner": "scanner-primary", "fingerprint": "b9a6b1546bd921e4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fbce51a9ce497e97", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/api-keys/${key.id} (src/app/(dashboard)/settings/security/page.tsx:778)"}, "properties": {"repobilityId": "ee0f0cb8d3d7624d", "scanner": "scanner-primary", "fingerprint": "fbce51a9ce497e97", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f0a1e7bb366a9381", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users (src/app/(dashboard)/settings/users/page.tsx:335)"}, "properties": {"repobilityId": "520878028d8a1212", "scanner": "scanner-primary", "fingerprint": "f0a1e7bb366a9381", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e0fc59f40f0a88d5", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/settings/roles (src/app/(dashboard)/settings/users/page.tsx:336)"}, "properties": {"repobilityId": "1d731b3f2e0ccd39", "scanner": "scanner-primary", "fingerprint": "e0fc59f40f0a88d5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c61d522b7d967cf5", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users (src/app/(dashboard)/settings/users/page.tsx:351)"}, "properties": {"repobilityId": "9a3206b100fc0e63", "scanner": "scanner-primary", "fingerprint": "c61d522b7d967cf5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b4bfa343c7e4ee6d", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/users/${deleteId} (src/app/(dashboard)/settings/users/page.tsx:365)"}, "properties": {"repobilityId": "9e0ad58afac70618", "scanner": "scanner-primary", "fingerprint": "b4bfa343c7e4ee6d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b1a0fee76cbeaa8d", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/users/${user.id} (src/app/(dashboard)/settings/users/page.tsx:377)"}, "properties": {"repobilityId": "5de409ca05b9dadc", "scanner": "scanner-primary", "fingerprint": "b1a0fee76cbeaa8d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4e2bbc08cc8ad180", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/users/${item.id} (src/app/(dashboard)/settings/users/page.tsx:454)"}, "properties": {"repobilityId": "cb2e7a44fe86a643", "scanner": "scanner-primary", "fingerprint": "4e2bbc08cc8ad180", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-10e9db487866df26", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/users/${item.id} (src/app/(dashboard)/settings/users/page.tsx:515)"}, "properties": {"repobilityId": "686d2eefd1650b19", "scanner": "scanner-primary", "fingerprint": "10e9db487866df26", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f68ff47d1eef758c", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/users/${item.id} (src/app/(dashboard)/settings/users/page.tsx:542)"}, "properties": {"repobilityId": "74f448bbc8ffaaee", "scanner": "scanner-primary", "fingerprint": "f68ff47d1eef758c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b7d8ce925c61f82a", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/users/${item.id} (src/app/(dashboard)/settings/users/page.tsx:561)"}, "properties": {"repobilityId": "be2c8aee1b7814f4", "scanner": "scanner-primary", "fingerprint": "b7d8ce925c61f82a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f587cb234834716f", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/custom-domains (src/app/(dashboard)/settings/custom-domains/page.tsx:52)"}, "properties": {"repobilityId": "c406d7c4ec716274", "scanner": "scanner-primary", "fingerprint": "f587cb234834716f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f8d81f7c3d9e8c35", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/custom-domains (src/app/(dashboard)/settings/custom-domains/page.tsx:72)"}, "properties": {"repobilityId": "31435f88cccdefc5", "scanner": "scanner-primary", "fingerprint": "f8d81f7c3d9e8c35", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-167a1316dc895306", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/custom-domains/${id}/verify (src/app/(dashboard)/settings/custom-domains/page.tsx:96)"}, "properties": {"repobilityId": "ddee417eabc8e270", "scanner": "scanner-primary", "fingerprint": "167a1316dc895306", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-12068dfc100b10b4", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/custom-domains/${deletingDomain.id} (src/app/(dashboard)/settings/custom-domains/page.tsx:114)"}, "properties": {"repobilityId": "2e40f6ec18dce0f0", "scanner": "scanner-primary", "fingerprint": "12068dfc100b10b4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6a8caa7dc1efc9c8", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users/me/notification-preferences (src/app/(dashboard)/settings/notifications/page.tsx:36)"}, "properties": {"repobilityId": "01c9783ba00a34d9", "scanner": "scanner-primary", "fingerprint": "6a8caa7dc1efc9c8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-017924325de77cd9", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/users/me/notification-preferences (src/app/(dashboard)/settings/notifications/page.tsx:70)"}, "properties": {"repobilityId": "800624f37bda976f", "scanner": "scanner-primary", "fingerprint": "017924325de77cd9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-15c89477c90f275b", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/users/me/notification-preferences (src/app/(dashboard)/settings/notifications/page.tsx:103)"}, "properties": {"repobilityId": "6644541e6e601e85", "scanner": "scanner-primary", "fingerprint": "15c89477c90f275b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c7dc5cdeda3e28f6", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/sla-policies (src/app/(dashboard)/settings/sla-policies/page.tsx:54)"}, "properties": {"repobilityId": "81aca8ffd109584f", "scanner": "scanner-primary", "fingerprint": "c7dc5cdeda3e28f6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cd1d21f2064b3cc3", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/sla-policies/${deleteId} (src/app/(dashboard)/settings/sla-policies/page.tsx:68)"}, "properties": {"repobilityId": "427bd5cc98adaeab", "scanner": "scanner-primary", "fingerprint": "cd1d21f2064b3cc3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ab3d3d2999bcd481", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/custom-fields/${field.id} (src/app/(dashboard)/settings/custom-fields/page.tsx:87)"}, "properties": {"repobilityId": "d55d5e301a9b419f", "scanner": "scanner-primary", "fingerprint": "ab3d3d2999bcd481", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-021beed5977a2c07", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/settings/smtp (src/app/(dashboard)/settings/smtp-settings/page.tsx:46)"}, "properties": {"repobilityId": "862e69be9e9b0db4", "scanner": "scanner-primary", "fingerprint": "021beed5977a2c07", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5350711136e85cbe", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/settings/smtp (src/app/(dashboard)/settings/smtp-settings/page.tsx:78)"}, "properties": {"repobilityId": "cd7bf0e10ef3291f", "scanner": "scanner-primary", "fingerprint": "5350711136e85cbe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8096a55a3117af2d", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/settings/smtp/test (src/app/(dashboard)/settings/smtp-settings/page.tsx:110)"}, "properties": {"repobilityId": "41fd65b6d98c7c63", "scanner": "scanner-primary", "fingerprint": "8096a55a3117af2d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3e35cf7343e80947", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/portal-users?${params} (src/app/(dashboard)/settings/portal-users/page.tsx:55)"}, "properties": {"repobilityId": "4a5ce37dbe1bbd85", "scanner": "scanner-primary", "fingerprint": "3e35cf7343e80947", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-abb573460ea0f9b3", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/portal-users (src/app/(dashboard)/settings/portal-users/page.tsx:67)"}, "properties": {"repobilityId": "3d33e75c8050092d", "scanner": "scanner-primary", "fingerprint": "abb573460ea0f9b3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7919ad6dfbad4de1", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/portal-users (src/app/(dashboard)/settings/portal-users/page.tsx:77)"}, "properties": {"repobilityId": "26bf271b3350fee0", "scanner": "scanner-primary", "fingerprint": "7919ad6dfbad4de1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-eb3f55e0783d232f", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/portal-users (src/app/(dashboard)/settings/portal-users/page.tsx:88)"}, "properties": {"repobilityId": "2146a78219def5f3", "scanner": "scanner-primary", "fingerprint": "eb3f55e0783d232f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-12a4b81772223cda", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/portal-users (src/app/(dashboard)/settings/portal-users/page.tsx:99)"}, "properties": {"repobilityId": "da55e959c92ff461", "scanner": "scanner-primary", "fingerprint": "12a4b81772223cda", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dfb4b145d80c1948", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/portal-users (src/app/(dashboard)/settings/portal-users/page.tsx:110)"}, "properties": {"repobilityId": "4d9b193ac10c5a37", "scanner": "scanner-primary", "fingerprint": "dfb4b145d80c1948", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-01da822d985a8bab", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/portal-users (src/app/(dashboard)/settings/portal-users/page.tsx:121)"}, "properties": {"repobilityId": "8521275e9c49f2ff", "scanner": "scanner-primary", "fingerprint": "01da822d985a8bab", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e304b3ac0441e51c", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/settings/ai-features (src/app/(dashboard)/settings/ai-automation/page.tsx:121)"}, "properties": {"repobilityId": "5705d19a77074534", "scanner": "scanner-primary", "fingerprint": "e304b3ac0441e51c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f816429f84979b75", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/ai-shadow-actions?status=pending&limit=1 (src/app/(dashboard)/settings/ai-automation/page.tsx:122)"}, "properties": {"repobilityId": "0c233fff8b2133ef", "scanner": "scanner-primary", "fingerprint": "f816429f84979b75", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a678c8f6df740d37", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/settings/ai-budget (src/app/(dashboard)/settings/ai-automation/page.tsx:123)"}, "properties": {"repobilityId": "6766290705aeb24f", "scanner": "scanner-primary", "fingerprint": "a678c8f6df740d37", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-002dbb109d594907", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/settings/ai-delivery (src/app/(dashboard)/settings/ai-automation/page.tsx:124)"}, "properties": {"repobilityId": "6e408290ceb8042e", "scanner": "scanner-primary", "fingerprint": "002dbb109d594907", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-094c2cec7db7e6cb", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/settings/ai-stats (src/app/(dashboard)/settings/ai-automation/page.tsx:125)"}, "properties": {"repobilityId": "be044e1dec2e6fa0", "scanner": "scanner-primary", "fingerprint": "094c2cec7db7e6cb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1d70ba58ca4725c5", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/settings/ai-features (src/app/(dashboard)/settings/ai-automation/page.tsx:163)"}, "properties": {"repobilityId": "ae29d7159212af7b", "scanner": "scanner-primary", "fingerprint": "1d70ba58ca4725c5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1df3d726a47f4990", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/settings/ai-budget (src/app/(dashboard)/settings/ai-automation/page.tsx:181)"}, "properties": {"repobilityId": "0f65a11f2fd1475a", "scanner": "scanner-primary", "fingerprint": "1df3d726a47f4990", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fda7af1747d964c3", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/settings/ai-delivery (src/app/(dashboard)/settings/ai-automation/page.tsx:195)"}, "properties": {"repobilityId": "5a9181ca17feb530", "scanner": "scanner-primary", "fingerprint": "fda7af1747d964c3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-856f0625074a64ed", "level": "error", "message": {"text": "Dangling fetch: GET /api/finance/payment-orders/notification-settings (src/app/(dashboard)/settings/finance-notifications/page.tsx:61)"}, "properties": {"repobilityId": "fa9ac8ac20666bda", "scanner": "scanner-primary", "fingerprint": "856f0625074a64ed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-704281810a925551", "level": "error", "message": {"text": "Dangling fetch: PUT /api/finance/payment-orders/notification-settings (src/app/(dashboard)/settings/finance-notifications/page.tsx:72)"}, "properties": {"repobilityId": "86933430728a36de", "scanner": "scanner-primary", "fingerprint": "704281810a925551", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e98b70e1b1275240", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/audit-log (src/app/(dashboard)/settings/audit-log/page.tsx:42)"}, "properties": {"repobilityId": "70e857c852a5cf5c", "scanner": "scanner-primary", "fingerprint": "e98b70e1b1275240", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-48dfa4f92a654512", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/task-templates (src/app/(dashboard)/settings/task-templates/page.tsx:91)"}, "properties": {"repobilityId": "c2961c4b452d5cb4", "scanner": "scanner-primary", "fingerprint": "48dfa4f92a654512", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-55212e91520dc403", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/task-templates/${deleteId} (src/app/(dashboard)/settings/task-templates/page.tsx:170)"}, "properties": {"repobilityId": "c53bc018ce77721e", "scanner": "scanner-primary", "fingerprint": "55212e91520dc403", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-35d1719871151a9f", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/dashboard/widget-config (src/app/(dashboard)/settings/dashboard/page.tsx:50)"}, "properties": {"repobilityId": "0252dae98459ac53", "scanner": "scanner-primary", "fingerprint": "35d1719871151a9f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2e957fa65f12e99c", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/dashboard/widget-config (src/app/(dashboard)/settings/dashboard/page.tsx:73)"}, "properties": {"repobilityId": "cf85ba300378557b", "scanner": "scanner-primary", "fingerprint": "2e957fa65f12e99c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e56d2cb48c6c3ee3", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/pipelines (src/app/(dashboard)/settings/pipelines/page.tsx:170)"}, "properties": {"repobilityId": "9011f70770fd8f9a", "scanner": "scanner-primary", "fingerprint": "e56d2cb48c6c3ee3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5c5a45dd0a24f37b", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/pipelines (src/app/(dashboard)/settings/pipelines/page.tsx:196)"}, "properties": {"repobilityId": "25551f7f270a0105", "scanner": "scanner-primary", "fingerprint": "5c5a45dd0a24f37b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4120eb5e6e57e6ca", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/pipelines/${pipelineId} (src/app/(dashboard)/settings/pipelines/page.tsx:227)"}, "properties": {"repobilityId": "efa9171464adc25c", "scanner": "scanner-primary", "fingerprint": "4120eb5e6e57e6ca", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3a350ef3cb2e8b45", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/pipelines/${pipelineId} (src/app/(dashboard)/settings/pipelines/page.tsx:237)"}, "properties": {"repobilityId": "a42e4c491ab66822", "scanner": "scanner-primary", "fingerprint": "3a350ef3cb2e8b45", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-35cc89d04cba7fae", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/pipeline-stages/${stageId} (src/app/(dashboard)/settings/pipelines/page.tsx:260)"}, "properties": {"repobilityId": "b88e9cebb1f5c76f", "scanner": "scanner-primary", "fingerprint": "35cc89d04cba7fae", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dc0893c7f2f0b908", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/pipeline-stages/${stageId} (src/app/(dashboard)/settings/pipelines/page.tsx:287)"}, "properties": {"repobilityId": "311b990edf661709", "scanner": "scanner-primary", "fingerprint": "dc0893c7f2f0b908", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d22170b2fa4c0a53", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/pipeline-stages/${stages[idx].id} (src/app/(dashboard)/settings/pipelines/page.tsx:303)"}, "properties": {"repobilityId": "81265b6fb69e9cf0", "scanner": "scanner-primary", "fingerprint": "d22170b2fa4c0a53", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-550829edcb8bd174", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/pipeline-stages/${stages[swapIdx].id} (src/app/(dashboard)/settings/pipelines/page.tsx:308)"}, "properties": {"repobilityId": "4dcb127814b5bc32", "scanner": "scanner-primary", "fingerprint": "550829edcb8bd174", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-acbd6308a00b604c", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/pipeline-stages (src/app/(dashboard)/settings/pipelines/page.tsx:322)"}, "properties": {"repobilityId": "0296a45f3fe0e9e1", "scanner": "scanner-primary", "fingerprint": "acbd6308a00b604c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9cf6679c076bcf64", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/pipeline-stages/${stageId}/rules (src/app/(dashboard)/settings/pipelines/page.tsx:353)"}, "properties": {"repobilityId": "e9a6c18224c387ab", "scanner": "scanner-primary", "fingerprint": "9cf6679c076bcf64", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-da7a38fe7dbf7013", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/pipeline-stages/${stageId}/rules (src/app/(dashboard)/settings/pipelines/page.tsx:388)"}, "properties": {"repobilityId": "cc0233331d8a3514", "scanner": "scanner-primary", "fingerprint": "da7a38fe7dbf7013", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4766a7032b32ceb0", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/pipeline-stages/${stageId}/rules (src/app/(dashboard)/settings/pipelines/page.tsx:408)"}, "properties": {"repobilityId": "acc6528e3e284ff9", "scanner": "scanner-primary", "fingerprint": "4766a7032b32ceb0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8e8a284c947df21c", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/ticket-queues (src/app/(dashboard)/settings/ticket-queues/page.tsx:77)"}, "properties": {"repobilityId": "8da8b2d155d99268", "scanner": "scanner-primary", "fingerprint": "8e8a284c947df21c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4a6b2d3e1ca3749d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/ticket-queues (src/app/(dashboard)/settings/ticket-queues/page.tsx:207)"}, "properties": {"repobilityId": "4f5c23f3c4aae8cd", "scanner": "scanner-primary", "fingerprint": "4a6b2d3e1ca3749d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a1e4815b46117bda", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/ticket-queues/${queue.id} (src/app/(dashboard)/settings/ticket-queues/page.tsx:224)"}, "properties": {"repobilityId": "f56be5b63278d446", "scanner": "scanner-primary", "fingerprint": "a1e4815b46117bda", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-eded4dad3dfc63ce", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/ticket-queues/${deleteItem.id} (src/app/(dashboard)/settings/ticket-queues/page.tsx:237)"}, "properties": {"repobilityId": "d1d27398f35ca85b", "scanner": "scanner-primary", "fingerprint": "eded4dad3dfc63ce", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-49d18aec943b955a", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/settings/field-permissions?entityType=${entityType} (src/app/(dashboard)/settings/field-permissions/page.tsx:81)"}, "properties": {"repobilityId": "7c051fa42bec9ceb", "scanner": "scanner-primary", "fingerprint": "49d18aec943b955a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0d5ee603106c8020", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/settings/sharing-rules (src/app/(dashboard)/settings/field-permissions/page.tsx:103)"}, "properties": {"repobilityId": "730e7b614581a20a", "scanner": "scanner-primary", "fingerprint": "0d5ee603106c8020", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-85b6174b8244d69a", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/settings/field-permissions (src/app/(dashboard)/settings/field-permissions/page.tsx:144)"}, "properties": {"repobilityId": "1dea4484dd407b23", "scanner": "scanner-primary", "fingerprint": "85b6174b8244d69a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-26a918dea7323d39", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/settings/sharing-rules/${deleteRuleId} (src/app/(dashboard)/settings/field-permissions/page.tsx:185)"}, "properties": {"repobilityId": "c0dbb414f921675f", "scanner": "scanner-primary", "fingerprint": "26a918dea7323d39", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-faace32ede167f29", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/settings/sharing-rules/${rule.id} (src/app/(dashboard)/settings/field-permissions/page.tsx:195)"}, "properties": {"repobilityId": "388a641cd33effb9", "scanner": "scanner-primary", "fingerprint": "faace32ede167f29", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-85abed7de6c682a4", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/escalation-rules (src/app/(dashboard)/settings/escalation/page.tsx:111)"}, "properties": {"repobilityId": "c75e97b7049e30ab", "scanner": "scanner-primary", "fingerprint": "85abed7de6c682a4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-311314e383228f86", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/escalation-rules (src/app/(dashboard)/settings/escalation/page.tsx:265)"}, "properties": {"repobilityId": "d49258a14b575b0f", "scanner": "scanner-primary", "fingerprint": "311314e383228f86", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c5a4a04d9cdcace9", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/escalation-rules/${rule.id} (src/app/(dashboard)/settings/escalation/page.tsx:282)"}, "properties": {"repobilityId": "99052947439d40ff", "scanner": "scanner-primary", "fingerprint": "c5a4a04d9cdcace9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1ead4817af7f4173", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/escalation-rules/${deleteItem.id} (src/app/(dashboard)/settings/escalation/page.tsx:295)"}, "properties": {"repobilityId": "f04377cccb89cf42", "scanner": "scanner-primary", "fingerprint": "1ead4817af7f4173", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-11f32f3f17ba3da5", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/ticket-macros (src/app/(dashboard)/settings/macros/page.tsx:357)"}, "properties": {"repobilityId": "ab184f156e88abb6", "scanner": "scanner-primary", "fingerprint": "11f32f3f17ba3da5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b0566d8d42d72149", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/ticket-macros/${macro.id} (src/app/(dashboard)/settings/macros/page.tsx:384)"}, "properties": {"repobilityId": "73b17580dae292a3", "scanner": "scanner-primary", "fingerprint": "b0566d8d42d72149", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-151f114f40f4cb71", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/ticket-macros/${macro.id} (src/app/(dashboard)/settings/macros/page.tsx:408)"}, "properties": {"repobilityId": "f1b62bdc26b45dfd", "scanner": "scanner-primary", "fingerprint": "151f114f40f4cb71", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4e43abe36627bcc0", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/ticket-macros/${editId} (src/app/(dashboard)/settings/macros/page.tsx:463)"}, "properties": {"repobilityId": "0a85d0525e230f66", "scanner": "scanner-primary", "fingerprint": "4e43abe36627bcc0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-424c83f4788e5bf3", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/ticket-macros (src/app/(dashboard)/settings/macros/page.tsx:469)"}, "properties": {"repobilityId": "d4ae4349b27bed84", "scanner": "scanner-primary", "fingerprint": "424c83f4788e5bf3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a5f6244aa4bd101c", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/ticket-macros/${id} (src/app/(dashboard)/settings/macros/page.tsx:482)"}, "properties": {"repobilityId": "56511f1a7e6bef80", "scanner": "scanner-primary", "fingerprint": "a5f6244aa4bd101c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5b012de0c03828fc", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/ticket-macros/${id} (src/app/(dashboard)/settings/macros/page.tsx:487)"}, "properties": {"repobilityId": "30f71616126ce3dd", "scanner": "scanner-primary", "fingerprint": "5b012de0c03828fc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3b1f43c6a469ce76", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contract-intake-forms (src/app/(dashboard)/settings/intake-forms/page.tsx:89)"}, "properties": {"repobilityId": "a809495b0d52c142", "scanner": "scanner-primary", "fingerprint": "3b1f43c6a469ce76", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-674a14384ac18ad2", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/contract-intake-forms/${form.id} (src/app/(dashboard)/settings/intake-forms/page.tsx:191)"}, "properties": {"repobilityId": "34503330146dd536", "scanner": "scanner-primary", "fingerprint": "674a14384ac18ad2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0803af0b62f9ba3d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/pitch-tokens (src/app/(dashboard)/settings/pitch-links/page.tsx:39)"}, "properties": {"repobilityId": "c8eac9bd062a2c1c", "scanner": "scanner-primary", "fingerprint": "0803af0b62f9ba3d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5dfe36b466f1fc85", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/pitch-tokens (src/app/(dashboard)/settings/pitch-links/page.tsx:54)"}, "properties": {"repobilityId": "41b8f2efa53e3d68", "scanner": "scanner-primary", "fingerprint": "5dfe36b466f1fc85", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-094b6c3d644f0ff4", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/pitch-tokens/${id} (src/app/(dashboard)/settings/pitch-links/page.tsx:73)"}, "properties": {"repobilityId": "2b6d40442a443e4b", "scanner": "scanner-primary", "fingerprint": "094b6c3d644f0ff4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-74a94557e5304b22", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/sales-quotas?year=${year} (src/app/(dashboard)/settings/quotas/page.tsx:51)"}, "properties": {"repobilityId": "1276540e4700af1f", "scanner": "scanner-primary", "fingerprint": "74a94557e5304b22", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-182e7cba578773eb", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users?limit=100 (src/app/(dashboard)/settings/quotas/page.tsx:52)"}, "properties": {"repobilityId": "c43d911e8e8cde27", "scanner": "scanner-primary", "fingerprint": "182e7cba578773eb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7d96f62289c06407", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/sales-quotas (src/app/(dashboard)/settings/quotas/page.tsx:68)"}, "properties": {"repobilityId": "2768332a24f72ec5", "scanner": "scanner-primary", "fingerprint": "7d96f62289c06407", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-607bd1dcfad5bc9e", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/sales-quotas/${id} (src/app/(dashboard)/settings/quotas/page.tsx:82)"}, "properties": {"repobilityId": "341ee6d4a44e3926", "scanner": "scanner-primary", "fingerprint": "607bd1dcfad5bc9e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e79106949db7c03b", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/sales-quotas/${id} (src/app/(dashboard)/settings/quotas/page.tsx:93)"}, "properties": {"repobilityId": "4ddf26953df785a9", "scanner": "scanner-primary", "fingerprint": "e79106949db7c03b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-91d6cb677bbdb961", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users (src/app/(dashboard)/settings/roles/page.tsx:117)"}, "properties": {"repobilityId": "1c34ec534b348946", "scanner": "scanner-primary", "fingerprint": "91d6cb677bbdb961", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-54310b1d94e8a10f", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/settings/roles (src/app/(dashboard)/settings/roles/page.tsx:118)"}, "properties": {"repobilityId": "f2130467a697c876", "scanner": "scanner-primary", "fingerprint": "54310b1d94e8a10f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-71834cbb335ff264", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/settings/roles (src/app/(dashboard)/settings/roles/page.tsx:160)"}, "properties": {"repobilityId": "e1ebbb503aa0a155", "scanner": "scanner-primary", "fingerprint": "71834cbb335ff264", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9d5eb7fb147b446b", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/settings/roles (src/app/(dashboard)/settings/roles/page.tsx:194)"}, "properties": {"repobilityId": "1df79211848402e0", "scanner": "scanner-primary", "fingerprint": "9d5eb7fb147b446b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-40b50f881a6279dd", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/settings/roles?id=${deleteRoleId} (src/app/(dashboard)/settings/roles/page.tsx:219)"}, "properties": {"repobilityId": "c430ab60633919d3", "scanner": "scanner-primary", "fingerprint": "40b50f881a6279dd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0a44b310d37ae8f3", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/settings/invoice (src/app/(dashboard)/settings/invoice-settings/page.tsx:65)"}, "properties": {"repobilityId": "2d6cd6b857a70d4a", "scanner": "scanner-primary", "fingerprint": "0a44b310d37ae8f3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c2946cd99bb95c4e", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/settings/invoice (src/app/(dashboard)/settings/invoice-settings/page.tsx:149)"}, "properties": {"repobilityId": "79026dc81117e3bf", "scanner": "scanner-primary", "fingerprint": "c2946cd99bb95c4e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7e902ab84399e979", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contract-approval-rules (src/app/(dashboard)/settings/approval-rules/page.tsx:109)"}, "properties": {"repobilityId": "8107cf0ad0803057", "scanner": "scanner-primary", "fingerprint": "7e902ab84399e979", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0b36d903bce7f246", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contract-templates?limit=100 (src/app/(dashboard)/settings/approval-rules/page.tsx:120)"}, "properties": {"repobilityId": "12b2bf4284294436", "scanner": "scanner-primary", "fingerprint": "0b36d903bce7f246", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fa9ce3e5e10625b8", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/contract-approval-rules/${rule.id} (src/app/(dashboard)/settings/approval-rules/page.tsx:249)"}, "properties": {"repobilityId": "a4943e081fcbe1ae", "scanner": "scanner-primary", "fingerprint": "fa9ce3e5e10625b8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a7563893b0aadca4", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/territories/${territory.id}/members (src/app/(dashboard)/settings/territories/page.tsx:174)"}, "properties": {"repobilityId": "96c29e9d33520a70", "scanner": "scanner-primary", "fingerprint": "a7563893b0aadca4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ff0770c917644253", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/territories/${territory.id}/members/${userId} (src/app/(dashboard)/settings/territories/page.tsx:192)"}, "properties": {"repobilityId": "707f0ef3145f868a", "scanner": "scanner-primary", "fingerprint": "ff0770c917644253", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6a3c6c707cd769f0", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/territories (src/app/(dashboard)/settings/territories/page.tsx:276)"}, "properties": {"repobilityId": "671f03ef2663d9a2", "scanner": "scanner-primary", "fingerprint": "6a3c6c707cd769f0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ef6036f4f74db64c", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users?limit=200 (src/app/(dashboard)/settings/territories/page.tsx:277)"}, "properties": {"repobilityId": "289aa7f72f85df06", "scanner": "scanner-primary", "fingerprint": "ef6036f4f74db64c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0a4287c0caa68cfc", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/territories/${deleteTarget.id} (src/app/(dashboard)/settings/territories/page.tsx:310)"}, "properties": {"repobilityId": "13e9751bb4ca88fd", "scanner": "scanner-primary", "fingerprint": "0a4287c0caa68cfc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2121a6b55e409daf", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/territories (src/app/(dashboard)/settings/territories/page.tsx:316)"}, "properties": {"repobilityId": "e3558e2e71e8ba08", "scanner": "scanner-primary", "fingerprint": "2121a6b55e409daf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5f52754aecc33122", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/territories/${t.id} (src/app/(dashboard)/settings/territories/page.tsx:327)"}, "properties": {"repobilityId": "a6c6accc4e627c33", "scanner": "scanner-primary", "fingerprint": "5f52754aecc33122", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-75b727a84f3367b0", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/settings/organization (src/app/(dashboard)/settings/organization/page.tsx:51)"}, "properties": {"repobilityId": "a1a5db913ee21978", "scanner": "scanner-primary", "fingerprint": "75b727a84f3367b0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b633e6dca8981010", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/settings/organization (src/app/(dashboard)/settings/organization/page.tsx:71)"}, "properties": {"repobilityId": "97b083fbeedb175b", "scanner": "scanner-primary", "fingerprint": "b633e6dca8981010", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-54a11b886b2327af", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/api-keys (src/app/(dashboard)/settings/api-keys/page.tsx:63)"}, "properties": {"repobilityId": "53cef7057a7e9d66", "scanner": "scanner-primary", "fingerprint": "54a11b886b2327af", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7500d72e63d96bc3", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/api-keys/scopes (src/app/(dashboard)/settings/api-keys/page.tsx:64)"}, "properties": {"repobilityId": "40cc2d5acb1238cf", "scanner": "scanner-primary", "fingerprint": "7500d72e63d96bc3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0a5390e18381d42e", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/api-keys (src/app/(dashboard)/settings/api-keys/page.tsx:109)"}, "properties": {"repobilityId": "3b14355d7f4eaa0e", "scanner": "scanner-primary", "fingerprint": "0a5390e18381d42e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4940dc23c8986e49", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/api-keys/${id} (src/app/(dashboard)/settings/api-keys/page.tsx:135)"}, "properties": {"repobilityId": "276eace0f23d10d9", "scanner": "scanner-primary", "fingerprint": "4940dc23c8986e49", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9e3705422b03055c", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/email-templates?limit=500 (src/app/(dashboard)/settings/email-templates/page.tsx:43)"}, "properties": {"repobilityId": "ebae3c1913708008", "scanner": "scanner-primary", "fingerprint": "9e3705422b03055c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b8f1697df99c1342", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/email-templates/${deleteId} (src/app/(dashboard)/settings/email-templates/page.tsx:58)"}, "properties": {"repobilityId": "40964ac2340f9e62", "scanner": "scanner-primary", "fingerprint": "b8f1697df99c1342", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-41a8e7dca06a31eb", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/workflows (src/app/(dashboard)/settings/workflows/page.tsx:148)"}, "properties": {"repobilityId": "7ad8ad5f91f5bcaa", "scanner": "scanner-primary", "fingerprint": "41a8e7dca06a31eb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8fbe75094c75ff17", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/workflows/${deleteId} (src/app/(dashboard)/settings/workflows/page.tsx:162)"}, "properties": {"repobilityId": "498e180afd8e88bf", "scanner": "scanner-primary", "fingerprint": "8fbe75094c75ff17", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1513b2bcfac9bd4b", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/workflows/${wf.id} (src/app/(dashboard)/settings/workflows/page.tsx:170)"}, "properties": {"repobilityId": "5cea7a3ad557f308", "scanner": "scanner-primary", "fingerprint": "1513b2bcfac9bd4b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a80c00202e719da7", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/workflows/templates (src/app/(dashboard)/settings/workflows/templates/page.tsx:85)"}, "properties": {"repobilityId": "c68ad97db6ddf1df", "scanner": "scanner-primary", "fingerprint": "a80c00202e719da7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-93a2ddfdce41d4c0", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/workflows/templates (src/app/(dashboard)/settings/workflows/templates/page.tsx:108)"}, "properties": {"repobilityId": "5814163b870a0666", "scanner": "scanner-primary", "fingerprint": "93a2ddfdce41d4c0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f620b543e2e04cd8", "level": "error", "message": {"text": "Dangling fetch: GET /api/budgeting/cost-types?includeInactive=true (src/app/(dashboard)/settings/budget-config/page.tsx:67)"}, "properties": {"repobilityId": "f37d3c6723f05018", "scanner": "scanner-primary", "fingerprint": "f620b543e2e04cd8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-94fe23b489e2969f", "level": "error", "message": {"text": "Dangling fetch: GET /api/budgeting/departments?includeInactive=true (src/app/(dashboard)/settings/budget-config/page.tsx:68)"}, "properties": {"repobilityId": "bfc2801ae7a59c81", "scanner": "scanner-primary", "fingerprint": "94fe23b489e2969f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1e832fc6e79f25bd", "level": "error", "message": {"text": "Dangling fetch: PUT /api/budgeting/cost-types (src/app/(dashboard)/settings/budget-config/page.tsx:93)"}, "properties": {"repobilityId": "6ee3c41b2fe965d9", "scanner": "scanner-primary", "fingerprint": "1e832fc6e79f25bd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-75d94742aa6ef205", "level": "error", "message": {"text": "Dangling fetch: POST /api/budgeting/cost-types (src/app/(dashboard)/settings/budget-config/page.tsx:99)"}, "properties": {"repobilityId": "0278c8f5ce87934d", "scanner": "scanner-primary", "fingerprint": "75d94742aa6ef205", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1935487022832052", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/budgeting/cost-types?id=${id} (src/app/(dashboard)/settings/budget-config/page.tsx:111)"}, "properties": {"repobilityId": "917df980a09508e5", "scanner": "scanner-primary", "fingerprint": "1935487022832052", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e8665b9178154f0d", "level": "error", "message": {"text": "Dangling fetch: PUT /api/budgeting/departments (src/app/(dashboard)/settings/budget-config/page.tsx:131)"}, "properties": {"repobilityId": "59fc86c368f6a94d", "scanner": "scanner-primary", "fingerprint": "e8665b9178154f0d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-731511b6e1865c99", "level": "error", "message": {"text": "Dangling fetch: POST /api/budgeting/departments (src/app/(dashboard)/settings/budget-config/page.tsx:137)"}, "properties": {"repobilityId": "e40b18aed5cb4321", "scanner": "scanner-primary", "fingerprint": "731511b6e1865c99", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-54328e4e0a03b075", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/budgeting/departments?id=${id} (src/app/(dashboard)/settings/budget-config/page.tsx:149)"}, "properties": {"repobilityId": "cecbb75aa82e14c8", "scanner": "scanner-primary", "fingerprint": "54328e4e0a03b075", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d7ea0825c88bfb18", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/whatsapp/test (src/app/(dashboard)/settings/channels/page.tsx:64)"}, "properties": {"repobilityId": "cf23f041f704dedd", "scanner": "scanner-primary", "fingerprint": "d7ea0825c88bfb18", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5e54201d297698bc", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/channels (src/app/(dashboard)/settings/channels/page.tsx:86)"}, "properties": {"repobilityId": "f00cb875d65463c3", "scanner": "scanner-primary", "fingerprint": "5e54201d297698bc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-596260945149af13", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/channels/${deleteId} (src/app/(dashboard)/settings/channels/page.tsx:100)"}, "properties": {"repobilityId": "3feb26b98c3708cb", "scanner": "scanner-primary", "fingerprint": "596260945149af13", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bdd5ba62ef8715b8", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/whatsapp/templates?status=all (src/app/(dashboard)/settings/channels/whatsapp/page.tsx:81)"}, "properties": {"repobilityId": "d58bfacd14e8de38", "scanner": "scanner-primary", "fingerprint": "bdd5ba62ef8715b8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5242aa7a12c072cc", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/whatsapp/notification-settings (src/app/(dashboard)/settings/channels/whatsapp/page.tsx:96)"}, "properties": {"repobilityId": "fafa94e5b7125435", "scanner": "scanner-primary", "fingerprint": "5242aa7a12c072cc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-65a993b55b400b6a", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/whatsapp/notification-settings (src/app/(dashboard)/settings/channels/whatsapp/page.tsx:124)"}, "properties": {"repobilityId": "4f98f318f5ae7b04", "scanner": "scanner-primary", "fingerprint": "65a993b55b400b6a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e153897328d6bc78", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/whatsapp/validate (src/app/(dashboard)/settings/channels/whatsapp/page.tsx:150)"}, "properties": {"repobilityId": "11eb9de37d6125e8", "scanner": "scanner-primary", "fingerprint": "e153897328d6bc78", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8e8e8ca1a5df7999", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/whatsapp/templates (src/app/(dashboard)/settings/channels/whatsapp/page.tsx:166)"}, "properties": {"repobilityId": "37361ce323705205", "scanner": "scanner-primary", "fingerprint": "8e8e8ca1a5df7999", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-74d6b8447006a95e", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/lead-rules (src/app/(dashboard)/settings/lead-rules/page.tsx:53)"}, "properties": {"repobilityId": "fe6c21e6dfe90bd5", "scanner": "scanner-primary", "fingerprint": "74d6b8447006a95e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-87f672c435cbe863", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/lead-rules/${rule.id} (src/app/(dashboard)/settings/lead-rules/page.tsx:63)"}, "properties": {"repobilityId": "78363107fa8217b1", "scanner": "scanner-primary", "fingerprint": "87f672c435cbe863", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8b792fe203240ae0", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/lead-rules/${id} (src/app/(dashboard)/settings/lead-rules/page.tsx:74)"}, "properties": {"repobilityId": "2558cacf14cbead0", "scanner": "scanner-primary", "fingerprint": "8b792fe203240ae0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8da2e3ebc7e697a4", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/lead-rules (src/app/(dashboard)/settings/lead-rules/page.tsx:82)"}, "properties": {"repobilityId": "256d31cab1bb3455", "scanner": "scanner-primary", "fingerprint": "8da2e3ebc7e697a4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8120178d56e039ab", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/lead-rules/${editingId} (src/app/(dashboard)/settings/lead-rules/page.tsx:119)"}, "properties": {"repobilityId": "928a07c9fcae861b", "scanner": "scanner-primary", "fingerprint": "8120178d56e039ab", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2a223275dff90b42", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/channels?type=voip (src/app/(dashboard)/settings/voip/page.tsx:67)"}, "properties": {"repobilityId": "66fbfe54fd882ed0", "scanner": "scanner-primary", "fingerprint": "2a223275dff90b42", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6b9e293e4b8029c9", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/channels/${configId} (src/app/(dashboard)/settings/voip/page.tsx:160)"}, "properties": {"repobilityId": "b426a49033938825", "scanner": "scanner-primary", "fingerprint": "6b9e293e4b8029c9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-426d4f75ca4a52fa", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/channels (src/app/(dashboard)/settings/voip/page.tsx:166)"}, "properties": {"repobilityId": "998d751a9e3f4add", "scanner": "scanner-primary", "fingerprint": "426d4f75ca4a52fa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-280f80879fc6943d", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/calls/test (src/app/(dashboard)/settings/voip/page.tsx:186)"}, "properties": {"repobilityId": "b733263655b96916", "scanner": "scanner-primary", "fingerprint": "280f80879fc6943d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5e889aa90a38528e", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/currencies (src/app/(dashboard)/settings/currencies/page.tsx:41)"}, "properties": {"repobilityId": "24f3cc4b71c2ef29", "scanner": "scanner-primary", "fingerprint": "5e889aa90a38528e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cba1f4e964703f79", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/currencies/${deleteId} (src/app/(dashboard)/settings/currencies/page.tsx:55)"}, "properties": {"repobilityId": "5185103931a99dfd", "scanner": "scanner-primary", "fingerprint": "cba1f4e964703f79", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-46729b7202e0eb14", "level": "error", "message": {"text": "Dangling fetch: GET /api/budgeting/departments?includeInactive=false (src/app/(dashboard)/settings/sales-forecast/page.tsx:64)"}, "properties": {"repobilityId": "0f1f8cbb5266fcde", "scanner": "scanner-primary", "fingerprint": "46729b7202e0eb14", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5ca14f6282402a6c", "level": "error", "message": {"text": "Dangling fetch: GET /api/budgeting/sales-forecast?year=${year} (src/app/(dashboard)/settings/sales-forecast/page.tsx:65)"}, "properties": {"repobilityId": "95a101ca3c8d306d", "scanner": "scanner-primary", "fingerprint": "5ca14f6282402a6c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b5c8fc32d8b51f80", "level": "error", "message": {"text": "Dangling fetch: POST /api/budgeting/sales-forecast (src/app/(dashboard)/settings/sales-forecast/page.tsx:149)"}, "properties": {"repobilityId": "5e2bc35c79c0e6ec", "scanner": "scanner-primary", "fingerprint": "b5c8fc32d8b51f80", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3e88fa0c14cc2bf1", "level": "error", "message": {"text": "Dangling fetch: GET /api/budgeting/sales-forecast/export?year=${year} (src/app/(dashboard)/settings/sales-forecast/page.tsx:168)"}, "properties": {"repobilityId": "5085b14f5dec1502", "scanner": "scanner-primary", "fingerprint": "3e88fa0c14cc2bf1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5dfb4d355a7d738b", "level": "error", "message": {"text": "Dangling fetch: POST /api/budgeting/sales-forecast/import (src/app/(dashboard)/settings/sales-forecast/page.tsx:189)"}, "properties": {"repobilityId": "66c49a3056289656", "scanner": "scanner-primary", "fingerprint": "5dfb4d355a7d738b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-089ffe61274a9ec3", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/web-chat/config (src/app/(dashboard)/settings/web-chat/page.tsx:47)"}, "properties": {"repobilityId": "c61223e9e7050ae8", "scanner": "scanner-primary", "fingerprint": "089ffe61274a9ec3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6d95cc5ad9691351", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/web-chat/config (src/app/(dashboard)/settings/web-chat/page.tsx:95)"}, "properties": {"repobilityId": "a3e2f3eb7e19c308", "scanner": "scanner-primary", "fingerprint": "6d95cc5ad9691351", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cc90e0dfe571565e", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/web-chat/config (src/app/(dashboard)/settings/web-chat/page.tsx:124)"}, "properties": {"repobilityId": "d498da4fda2833e3", "scanner": "scanner-primary", "fingerprint": "cc90e0dfe571565e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c08f48c6059eb8c0", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users/me/approval-delegates (src/app/(dashboard)/settings/approval-delegates/page.tsx:69)"}, "properties": {"repobilityId": "bcbc214db69632a5", "scanner": "scanner-primary", "fingerprint": "c08f48c6059eb8c0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8c7f81cf8be4c1e1", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users?isActive=true (src/app/(dashboard)/settings/approval-delegates/page.tsx:82)"}, "properties": {"repobilityId": "7e83aaf26d2a522d", "scanner": "scanner-primary", "fingerprint": "8c7f81cf8be4c1e1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-907bbfdf29b007c6", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/users/me/approval-delegates (src/app/(dashboard)/settings/approval-delegates/page.tsx:107)"}, "properties": {"repobilityId": "05a88cccab1d60db", "scanner": "scanner-primary", "fingerprint": "907bbfdf29b007c6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dfacc04525aaf457", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/users/me/approval-delegates/${id} (src/app/(dashboard)/settings/approval-delegates/page.tsx:132)"}, "properties": {"repobilityId": "5a766b4adbb7dced", "scanner": "scanner-primary", "fingerprint": "dfacc04525aaf457", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3619a5561f5761d7", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/notifications?page=1 (src/app/(dashboard)/notifications/page.tsx:62)"}, "properties": {"repobilityId": "98e30bf418db986a", "scanner": "scanner-primary", "fingerprint": "3619a5561f5761d7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-935f05fba56d1c70", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/notifications?page=${nextPage} (src/app/(dashboard)/notifications/page.tsx:81)"}, "properties": {"repobilityId": "4cdd6ff6ea26e028", "scanner": "scanner-primary", "fingerprint": "935f05fba56d1c70", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a8897dfbe20615fc", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/notifications (src/app/(dashboard)/notifications/page.tsx:99)"}, "properties": {"repobilityId": "9daa985bec575758", "scanner": "scanner-primary", "fingerprint": "a8897dfbe20615fc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7be6b214aca52a8f", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/notifications (src/app/(dashboard)/notifications/page.tsx:113)"}, "properties": {"repobilityId": "96a3dfa9470329a9", "scanner": "scanner-primary", "fingerprint": "7be6b214aca52a8f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-acbd3fc345f6f4d7", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/journeys/enroll?journeyId=${journeyId} (src/app/(dashboard)/journeys/page.tsx:135)"}, "properties": {"repobilityId": "4a2d7713e631284f", "scanner": "scanner-primary", "fingerprint": "acbd3fc345f6f4d7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-57a3209bf327679b", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/journeys/enrollments/${enrollmentId} (src/app/(dashboard)/journeys/page.tsx:146)"}, "properties": {"repobilityId": "d0a087e5d3c3ae13", "scanner": "scanner-primary", "fingerprint": "57a3209bf327679b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bbaca2bba3ecced4", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/journeys?limit=500 (src/app/(dashboard)/journeys/page.tsx:261)"}, "properties": {"repobilityId": "487c1f0981395dbe", "scanner": "scanner-primary", "fingerprint": "bbaca2bba3ecced4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ab25eed9a97440a1", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/journeys/enroll (src/app/(dashboard)/journeys/page.tsx:267)"}, "properties": {"repobilityId": "30920850b06e1b98", "scanner": "scanner-primary", "fingerprint": "ab25eed9a97440a1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e419787178d1230a", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/journeys/${deleteId} (src/app/(dashboard)/journeys/page.tsx:286)"}, "properties": {"repobilityId": "eba53da22c072ace", "scanner": "scanner-primary", "fingerprint": "e419787178d1230a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5c6cf37f3103a0c8", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/journeys/${journey.id} (src/app/(dashboard)/journeys/page.tsx:295)"}, "properties": {"repobilityId": "1f5eee0f5f0d1496", "scanner": "scanner-primary", "fingerprint": "5c6cf37f3103a0c8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-aec664d767ce8a4c", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/journeys/${stepsJourney.id} (src/app/(dashboard)/journeys/page.tsx:333)"}, "properties": {"repobilityId": "580cf7a4f388a613", "scanner": "scanner-primary", "fingerprint": "aec664d767ce8a4c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a402501ec7ae4f8c", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/leads?limit=500 (src/app/(dashboard)/journeys/page.tsx:352)"}, "properties": {"repobilityId": "9340286f19c8e253", "scanner": "scanner-primary", "fingerprint": "a402501ec7ae4f8c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9edae6633bfa0239", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/journeys/enroll (src/app/(dashboard)/journeys/page.tsx:379)"}, "properties": {"repobilityId": "e5612f4071252b8f", "scanner": "scanner-primary", "fingerprint": "9edae6633bfa0239", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8863112122b3aaca", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/journeys/${stepsJourney!.id} (src/app/(dashboard)/journeys/page.tsx:576)"}, "properties": {"repobilityId": "14600703d158cf8b", "scanner": "scanner-primary", "fingerprint": "8863112122b3aaca", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ebb240e523c1c24a", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/ai-shadow-actions${qs} (src/app/(dashboard)/ai/actions/page.tsx:357)"}, "properties": {"repobilityId": "da25a37f8c297315", "scanner": "scanner-primary", "fingerprint": "ebb240e523c1c24a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cb68500e11c740bc", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/ai-shadow-actions (src/app/(dashboard)/ai/actions/page.tsx:432)"}, "properties": {"repobilityId": "fb7a81c4cea75b26", "scanner": "scanner-primary", "fingerprint": "cb68500e11c740bc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fc55b8e2b35b1f12", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/ai-shadow-actions (src/app/(dashboard)/ai/actions/page.tsx:465)"}, "properties": {"repobilityId": "312addeb285045dd", "scanner": "scanner-primary", "fingerprint": "fc55b8e2b35b1f12", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-60178063c007c3dc", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/apps (src/app/(dashboard)/marketplace/page.tsx:45)"}, "properties": {"repobilityId": "a4bea8de6111cd27", "scanner": "scanner-primary", "fingerprint": "60178063c007c3dc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ba1f216b523d6050", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/apps/${app.id}/install (src/app/(dashboard)/marketplace/page.tsx:67)"}, "properties": {"repobilityId": "9af1cb21c294b13b", "scanner": "scanner-primary", "fingerprint": "ba1f216b523d6050", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3eb01db84c87c408", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/apps/${app.id}/install (src/app/(dashboard)/marketplace/page.tsx:89)"}, "properties": {"repobilityId": "d3e6f20e858db512", "scanner": "scanner-primary", "fingerprint": "3eb01db84c87c408", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c13c2e5ae5efd830", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/apps/${app.id}/install (src/app/(dashboard)/marketplace/page.tsx:110)"}, "properties": {"repobilityId": "8b259ebde9d26bae", "scanner": "scanner-primary", "fingerprint": "c13c2e5ae5efd830", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c1dfedc1544d7507", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/dashboard?period=${period} (src/app/(dashboard)/mtm/page.tsx:29)"}, "properties": {"repobilityId": "3dd40b5fab8782bf", "scanner": "scanner-primary", "fingerprint": "c1dfedc1544d7507", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-65e0a3499b7577db", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/settings (src/app/(dashboard)/mtm/settings/page.tsx:19)"}, "properties": {"repobilityId": "dd6e896a6fdcf356", "scanner": "scanner-primary", "fingerprint": "65e0a3499b7577db", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2887f1af5bc9e25c", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/mtm/settings (src/app/(dashboard)/mtm/settings/page.tsx:35)"}, "properties": {"repobilityId": "226dacc308af7064", "scanner": "scanner-primary", "fingerprint": "2887f1af5bc9e25c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5345711a4ee3c14f", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/planogram-checks?${params} (src/app/(dashboard)/mtm/planogram-checks/page.tsx:67)"}, "properties": {"repobilityId": "c69ab5ab9a483d0b", "scanner": "scanner-primary", "fingerprint": "5345711a4ee3c14f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-818eb4e58a37e43d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/shelf-analytics/summary (src/app/(dashboard)/mtm/planogram-checks/page.tsx:90)"}, "properties": {"repobilityId": "2a06fa0e047eb906", "scanner": "scanner-primary", "fingerprint": "818eb4e58a37e43d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c1438cc4dd797bce", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/orders?limit=200 (src/app/(dashboard)/mtm/orders/page.tsx:35)"}, "properties": {"repobilityId": "c5a8eb5817484222", "scanner": "scanner-primary", "fingerprint": "c1438cc4dd797bce", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7dd0ac14309f5e52", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/mtm/orders/${deleteItem.id} (src/app/(dashboard)/mtm/orders/page.tsx:72)"}, "properties": {"repobilityId": "bc6ca7a83c46f10f", "scanner": "scanner-primary", "fingerprint": "7dd0ac14309f5e52", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c5b6ea672f43038a", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/analytics?period=${period} (src/app/(dashboard)/mtm/analytics/page.tsx:33)"}, "properties": {"repobilityId": "8a1cce5cb307b776", "scanner": "scanner-primary", "fingerprint": "c5b6ea672f43038a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-06aabefa0cc8019a", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/analytics/export?period=${period} (src/app/(dashboard)/mtm/analytics/page.tsx:52)"}, "properties": {"repobilityId": "be362d1df468fe3c", "scanner": "scanner-primary", "fingerprint": "06aabefa0cc8019a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-724e3f4948fb71b0", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/shelf-analytics?${params} (src/app/(dashboard)/mtm/shelf-analytics/page.tsx:68)"}, "properties": {"repobilityId": "3facb11b6735d525", "scanner": "scanner-primary", "fingerprint": "724e3f4948fb71b0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dc5203d46a9a6d60", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/shelf-analytics/${id} (src/app/(dashboard)/mtm/shelf-analytics/[id]/page.tsx:87)"}, "properties": {"repobilityId": "9df83e679aaba7fb", "scanner": "scanner-primary", "fingerprint": "dc5203d46a9a6d60", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d126c808f2506f5f", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/customers?limit=200 (src/app/(dashboard)/mtm/customers/page.tsx:40)"}, "properties": {"repobilityId": "6647f3dfb9306a6c", "scanner": "scanner-primary", "fingerprint": "d126c808f2506f5f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6f66cb04a78bd499", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/mtm/customers/${deleteItem.id} (src/app/(dashboard)/mtm/customers/page.tsx:79)"}, "properties": {"repobilityId": "cbe2dabf5577ff37", "scanner": "scanner-primary", "fingerprint": "6f66cb04a78bd499", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0d47fd0cdd35f80f", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/model-training/runs (src/app/(dashboard)/mtm/model-training/page.tsx:43)"}, "properties": {"repobilityId": "58c0017cb7c8b43f", "scanner": "scanner-primary", "fingerprint": "0d47fd0cdd35f80f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-09fb3b88957b1bae", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/model-training/active (src/app/(dashboard)/mtm/model-training/page.tsx:44)"}, "properties": {"repobilityId": "26d4c42f7e2f39ec", "scanner": "scanner-primary", "fingerprint": "09fb3b88957b1bae", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8d4bd6ef4d4a7abf", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/mtm/model-training/runs (src/app/(dashboard)/mtm/model-training/page.tsx:63)"}, "properties": {"repobilityId": "29f6efed64bb3b60", "scanner": "scanner-primary", "fingerprint": "8d4bd6ef4d4a7abf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2fab4d6c00bbb0aa", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/mtm/model-training/runs/${id} (src/app/(dashboard)/mtm/model-training/page.tsx:84)"}, "properties": {"repobilityId": "a5ca59844587c585", "scanner": "scanner-primary", "fingerprint": "2fab4d6c00bbb0aa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-34c876d9cec8cb13", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/equipment/types (src/app/(dashboard)/mtm/equipment/page.tsx:79)"}, "properties": {"repobilityId": "fc4e41bc04215eb4", "scanner": "scanner-primary", "fingerprint": "34c876d9cec8cb13", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c74f8f06caa15f7f", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/equipment?${params} (src/app/(dashboard)/mtm/equipment/page.tsx:94)"}, "properties": {"repobilityId": "6cc6df90b57a29ec", "scanner": "scanner-primary", "fingerprint": "c74f8f06caa15f7f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2f1762796c6fddba", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/equipment/types?includeInactive=true (src/app/(dashboard)/mtm/equipment/types/page.tsx:56)"}, "properties": {"repobilityId": "bf0da9d2f492b59f", "scanner": "scanner-primary", "fingerprint": "2f1762796c6fddba", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3b8d6a280ea944d2", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/mtm/equipment/types/${deleteItem.id} (src/app/(dashboard)/mtm/equipment/types/page.tsx:109)"}, "properties": {"repobilityId": "8d69f45157a673c3", "scanner": "scanner-primary", "fingerprint": "3b8d6a280ea944d2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-465520ba3d02f2aa", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/equipment/${id} (src/app/(dashboard)/mtm/equipment/[id]/page.tsx:71)"}, "properties": {"repobilityId": "3b0330d28bdc2f36", "scanner": "scanner-primary", "fingerprint": "465520ba3d02f2aa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c7f8ff488457ea3f", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/equipment/types (src/app/(dashboard)/mtm/equipment/[id]/page.tsx:85)"}, "properties": {"repobilityId": "0e463e826a4d332d", "scanner": "scanner-primary", "fingerprint": "c7f8ff488457ea3f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-22fb9c015cad379f", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/tasks?limit=200 (src/app/(dashboard)/mtm/tasks/page.tsx:46)"}, "properties": {"repobilityId": "4c6c25e7f96e3ded", "scanner": "scanner-primary", "fingerprint": "22fb9c015cad379f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-95e2341ed33033e4", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/mtm/tasks/${taskId} (src/app/(dashboard)/mtm/tasks/page.tsx:79)"}, "properties": {"repobilityId": "f8e7e0e9c13600b2", "scanner": "scanner-primary", "fingerprint": "95e2341ed33033e4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b54bd66712439c38", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/mtm/tasks/${deleteItem.id} (src/app/(dashboard)/mtm/tasks/page.tsx:98)"}, "properties": {"repobilityId": "192c50a040d991ac", "scanner": "scanner-primary", "fingerprint": "b54bd66712439c38", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6900d2f90c1810fc", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/leaderboard?period=${period} (src/app/(dashboard)/mtm/leaderboard/page.tsx:30)"}, "properties": {"repobilityId": "5ad48a94e9b9d5a1", "scanner": "scanner-primary", "fingerprint": "6900d2f90c1810fc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a0c41255c503dc20", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/routes?limit=200 (src/app/(dashboard)/mtm/routes/page.tsx:51)"}, "properties": {"repobilityId": "3d310584b92ca84e", "scanner": "scanner-primary", "fingerprint": "a0c41255c503dc20", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-81147d149cb186b0", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/mtm/routes/${deleteItem.id} (src/app/(dashboard)/mtm/routes/page.tsx:91)"}, "properties": {"repobilityId": "3b34354ad2a5e6d7", "scanner": "scanner-primary", "fingerprint": "81147d149cb186b0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6ff21f5846ce7291", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/alerts?limit=200${resolved} (src/app/(dashboard)/mtm/alerts/page.tsx:34)"}, "properties": {"repobilityId": "1bac473dd0ccf5c7", "scanner": "scanner-primary", "fingerprint": "6ff21f5846ce7291", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-71f7bed7ceb67dd2", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/mtm/alerts/${alertId} (src/app/(dashboard)/mtm/alerts/page.tsx:66)"}, "properties": {"repobilityId": "dee019af3a140b05", "scanner": "scanner-primary", "fingerprint": "71f7bed7ceb67dd2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2f89a1f441666eec", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/mtm/alerts/${deleteItem.id} (src/app/(dashboard)/mtm/alerts/page.tsx:81)"}, "properties": {"repobilityId": "0da71b3548b509cb", "scanner": "scanner-primary", "fingerprint": "2f89a1f441666eec", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-08d3cf378080d3f2", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/skus/categories?includeInactive=true (src/app/(dashboard)/mtm/categories/page.tsx:156)"}, "properties": {"repobilityId": "9a21d3578c951f32", "scanner": "scanner-primary", "fingerprint": "08d3cf378080d3f2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5a54bbee2791531c", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/mtm/skus/categories/${deleteItem.id} (src/app/(dashboard)/mtm/categories/page.tsx:233)"}, "properties": {"repobilityId": "81f8cf0cd025ce6a", "scanner": "scanner-primary", "fingerprint": "5a54bbee2791531c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f35643c7f3374d28", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/agents?limit=200 (src/app/(dashboard)/mtm/agents/page.tsx:46)"}, "properties": {"repobilityId": "fe9e821f7f5c1b61", "scanner": "scanner-primary", "fingerprint": "f35643c7f3374d28", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6185419aca309adf", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/mtm/agents/${deleteItem.id} (src/app/(dashboard)/mtm/agents/page.tsx:89)"}, "properties": {"repobilityId": "411551c652d4f5bc", "scanner": "scanner-primary", "fingerprint": "6185419aca309adf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2d3cd0753f8c25f4", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/photos?limit=200 (src/app/(dashboard)/mtm/photos/page.tsx:37)"}, "properties": {"repobilityId": "71bb80c440009c49", "scanner": "scanner-primary", "fingerprint": "2d3cd0753f8c25f4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d9ca50624d249278", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/mtm/photos/${photoId} (src/app/(dashboard)/mtm/photos/page.tsx:68)"}, "properties": {"repobilityId": "6a1a354892515e2e", "scanner": "scanner-primary", "fingerprint": "d9ca50624d249278", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-433a3a454fc6d9bd", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/mtm/photos/${deleteItem.id} (src/app/(dashboard)/mtm/photos/page.tsx:83)"}, "properties": {"repobilityId": "2f0a6a54bd09ecc4", "scanner": "scanner-primary", "fingerprint": "433a3a454fc6d9bd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-695fc0e68ddc0821", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/skus/categories (src/app/(dashboard)/mtm/skus/page.tsx:76)"}, "properties": {"repobilityId": "7f6e3effc9eaf023", "scanner": "scanner-primary", "fingerprint": "695fc0e68ddc0821", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8b4952fa7040dd0a", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/skus?${params} (src/app/(dashboard)/mtm/skus/page.tsx:103)"}, "properties": {"repobilityId": "f97d77910edd6c50", "scanner": "scanner-primary", "fingerprint": "8b4952fa7040dd0a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2c83d32ad7c079c2", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/mtm/skus/${deleteItem.id} (src/app/(dashboard)/mtm/skus/page.tsx:136)"}, "properties": {"repobilityId": "62b68a1940552fa6", "scanner": "scanner-primary", "fingerprint": "2c83d32ad7c079c2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-27accc9af75198dc", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/skus/${id} (src/app/(dashboard)/mtm/skus/[id]/page.tsx:73)"}, "properties": {"repobilityId": "e64ce7a53244a4dd", "scanner": "scanner-primary", "fingerprint": "27accc9af75198dc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-39a8c3bb7517b357", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/skus/categories (src/app/(dashboard)/mtm/skus/[id]/page.tsx:87)"}, "properties": {"repobilityId": "2c05d61169a81483", "scanner": "scanner-primary", "fingerprint": "39a8c3bb7517b357", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-35d11d27f066b774", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/mtm/skus/${sku.id} (src/app/(dashboard)/mtm/skus/[id]/page.tsx:94)"}, "properties": {"repobilityId": "d706f691290aa37b", "scanner": "scanner-primary", "fingerprint": "35d11d27f066b774", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3d9637f13c360c8c", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/repair-requests?${params} (src/app/(dashboard)/mtm/repair-requests/page.tsx:71)"}, "properties": {"repobilityId": "6a6d3b3152e0bda4", "scanner": "scanner-primary", "fingerprint": "3d9637f13c360c8c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c64bb0beeb8bcc23", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/repair-requests/${id} (src/app/(dashboard)/mtm/repair-requests/[id]/page.tsx:110)"}, "properties": {"repobilityId": "ff9b86ba54fb96ac", "scanner": "scanner-primary", "fingerprint": "c64bb0beeb8bcc23", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ad3926dfc4e7bf40", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/visits?limit=200 (src/app/(dashboard)/mtm/visits/page.tsx:35)"}, "properties": {"repobilityId": "f2e5a041b4ab71c0", "scanner": "scanner-primary", "fingerprint": "ad3926dfc4e7bf40", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3c6edbf6a1a62e48", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/mtm/visits/${deleteItem.id} (src/app/(dashboard)/mtm/visits/page.tsx:70)"}, "properties": {"repobilityId": "a1fdda52c8bfaa62", "scanner": "scanner-primary", "fingerprint": "3c6edbf6a1a62e48", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3737a7823e208816", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/planograms?${params} (src/app/(dashboard)/mtm/planograms/page.tsx:57)"}, "properties": {"repobilityId": "0db3b12620cb6dc6", "scanner": "scanner-primary", "fingerprint": "3737a7823e208816", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-80e59a6460373b1e", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/skus?limit=500&activeOnly=true (src/app/(dashboard)/mtm/planograms/new/page.tsx:28)"}, "properties": {"repobilityId": "196c5e717e5c8be5", "scanner": "scanner-primary", "fingerprint": "80e59a6460373b1e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4fe8424b48249c8a", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/mtm/planograms (src/app/(dashboard)/mtm/planograms/new/page.tsx:42)"}, "properties": {"repobilityId": "5d4d8938b7315e91", "scanner": "scanner-primary", "fingerprint": "4fe8424b48249c8a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c5ba470568f98ff5", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/planograms/${id} (src/app/(dashboard)/mtm/planograms/[id]/page.tsx:46)"}, "properties": {"repobilityId": "a7c383ebf0786c32", "scanner": "scanner-primary", "fingerprint": "c5ba470568f98ff5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-542a77de195eb210", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/skus?limit=500&activeOnly=true (src/app/(dashboard)/mtm/planograms/[id]/page.tsx:63)"}, "properties": {"repobilityId": "25cd37e8b2293519", "scanner": "scanner-primary", "fingerprint": "542a77de195eb210", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f172c502fb577bc6", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/mtm/planograms/${id} (src/app/(dashboard)/mtm/planograms/[id]/page.tsx:77)"}, "properties": {"repobilityId": "d94fb5abb3de8775", "scanner": "scanner-primary", "fingerprint": "f172c502fb577bc6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d62886cae3b05dd0", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/mtm/planograms/${id} (src/app/(dashboard)/mtm/planograms/[id]/page.tsx:107)"}, "properties": {"repobilityId": "2b6640c7092558b1", "scanner": "scanner-primary", "fingerprint": "d62886cae3b05dd0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fa2f43fa31c02b4e", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/routes?agentId=${agentId}&date=${today} (src/app/(dashboard)/mtm/map/page.tsx:74)"}, "properties": {"repobilityId": "d43227c85e7ba159", "scanner": "scanner-primary", "fingerprint": "fa2f43fa31c02b4e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c8f1567929cae9c1", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/locations (src/app/(dashboard)/mtm/map/page.tsx:87)"}, "properties": {"repobilityId": "1cf8ec273f24070d", "scanner": "scanner-primary", "fingerprint": "c8f1567929cae9c1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-329376d685cd718f", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/mtm/locations?agentId=${agentId} (src/app/(dashboard)/mtm/map/page.tsx:129)"}, "properties": {"repobilityId": "03b15179b1cfa891", "scanner": "scanner-primary", "fingerprint": "329376d685cd718f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b7913a1e4fa43db2", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/complaints?${params.toString()} (src/app/(dashboard)/complaints/page.tsx:73)"}, "properties": {"repobilityId": "a2550b595285244a", "scanner": "scanner-primary", "fingerprint": "b7913a1e4fa43db2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-25fc0290e6159308", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/complaints/export-xlsx (src/app/(dashboard)/complaints/page.tsx:88)"}, "properties": {"repobilityId": "91ab20b7fb2b551b", "scanner": "scanner-primary", "fingerprint": "25fc0290e6159308", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1cb53e704737d8f1", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/complaints/facets?${params.toString()} (src/app/(dashboard)/complaints/new/page.tsx:72)"}, "properties": {"repobilityId": "1d50ae086b522a9d", "scanner": "scanner-primary", "fingerprint": "1cb53e704737d8f1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-466692ec534c3c74", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/complaints/ai-categorize (src/app/(dashboard)/complaints/new/page.tsx:86)"}, "properties": {"repobilityId": "b5b7f9fd0663c3f9", "scanner": "scanner-primary", "fingerprint": "466692ec534c3c74", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6c42f183ebcf4edf", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/complaints (src/app/(dashboard)/complaints/new/page.tsx:120)"}, "properties": {"repobilityId": "e983f8d234a59c86", "scanner": "scanner-primary", "fingerprint": "6c42f183ebcf4edf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8a8bd0d2432edcba", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/complaints/import-xlsx (src/app/(dashboard)/complaints/import/page.tsx:53)"}, "properties": {"repobilityId": "35219e9778ee4549", "scanner": "scanner-primary", "fingerprint": "8a8bd0d2432edcba", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5f5e7e2688847c46", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/complaints/import-xlsx (src/app/(dashboard)/complaints/import/page.tsx:72)"}, "properties": {"repobilityId": "85e7d765baa64c89", "scanner": "scanner-primary", "fingerprint": "5f5e7e2688847c46", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f5f3b6c7242b80d0", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/complaints/${id} (src/app/(dashboard)/complaints/[id]/page.tsx:76)"}, "properties": {"repobilityId": "5a86db378e751093", "scanner": "scanner-primary", "fingerprint": "f5f3b6c7242b80d0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9753727b81060de1", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/complaints/${id} (src/app/(dashboard)/complaints/[id]/page.tsx:91)"}, "properties": {"repobilityId": "8376864d8025ac82", "scanner": "scanner-primary", "fingerprint": "9753727b81060de1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d9a503245d18e260", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/tickets/${id}/comments (src/app/(dashboard)/complaints/[id]/page.tsx:106)"}, "properties": {"repobilityId": "8031a0fed8bc3aff", "scanner": "scanner-primary", "fingerprint": "d9a503245d18e260", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5c3cef323cd65c89", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/complaints/${id} (src/app/(dashboard)/complaints/[id]/page.tsx:123)"}, "properties": {"repobilityId": "74d3113ab95558d8", "scanner": "scanner-primary", "fingerprint": "5c3cef323cd65c89", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fbbdf82b57f23e9f", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/leads?limit=500&includeConverted=true (src/app/(dashboard)/leads/page.tsx:173)"}, "properties": {"repobilityId": "4370803e46d28d71", "scanner": "scanner-primary", "fingerprint": "fbbdf82b57f23e9f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f714257b2693e6ce", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/leads/bulk (src/app/(dashboard)/leads/page.tsx:191)"}, "properties": {"repobilityId": "7ef758bc052d9764", "scanner": "scanner-primary", "fingerprint": "f714257b2693e6ce", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e0a58f8503b57a67", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/leads/${leadId} (src/app/(dashboard)/leads/page.tsx:230)"}, "properties": {"repobilityId": "ae5242b78433041b", "scanner": "scanner-primary", "fingerprint": "e0a58f8503b57a67", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ec886f8861fdf3d2", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/leads/${leadId} (src/app/(dashboard)/leads/page.tsx:262)"}, "properties": {"repobilityId": "af31d4e1ecea8d1a", "scanner": "scanner-primary", "fingerprint": "ec886f8861fdf3d2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-975bad4865bb53b1", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/leads/${deleteId} (src/app/(dashboard)/leads/page.tsx:280)"}, "properties": {"repobilityId": "6a4d92b7219cf440", "scanner": "scanner-primary", "fingerprint": "975bad4865bb53b1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d009b8c764329b5a", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/leads/${id} (src/app/(dashboard)/leads/[id]/page.tsx:163)"}, "properties": {"repobilityId": "b51d9f2fbfc01571", "scanner": "scanner-primary", "fingerprint": "d009b8c764329b5a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a75098484df4bf5d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/activities?relatedType=lead&relatedId=${encodeURIComponent(id)} (src/app/(dashboard)/leads/[id]/page.tsx:198)"}, "properties": {"repobilityId": "327b56dd883175e3", "scanner": "scanner-primary", "fingerprint": "a75098484df4bf5d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7645b0823c0dc29f", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/activities (src/app/(dashboard)/leads/[id]/page.tsx:228)"}, "properties": {"repobilityId": "d1b9ee63047a93ac", "scanner": "scanner-primary", "fingerprint": "7645b0823c0dc29f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-06bf794553211a06", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/leads/${id} (src/app/(dashboard)/leads/[id]/page.tsx:281)"}, "properties": {"repobilityId": "8c0df90d55d8ce6b", "scanner": "scanner-primary", "fingerprint": "06bf794553211a06", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bef74e07644f83e1", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/leads/${id} (src/app/(dashboard)/leads/[id]/page.tsx:303)"}, "properties": {"repobilityId": "e224b343e7a294e6", "scanner": "scanner-primary", "fingerprint": "bef74e07644f83e1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a294a162a1babccb", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/leads/${id} (src/app/(dashboard)/leads/[id]/page.tsx:323)"}, "properties": {"repobilityId": "64f65aeaa90cd74d", "scanner": "scanner-primary", "fingerprint": "a294a162a1babccb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ad38bc8baf4375a4", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/ai (src/app/(dashboard)/leads/[id]/page.tsx:334)"}, "properties": {"repobilityId": "e3999001e5bbde90", "scanner": "scanner-primary", "fingerprint": "ad38bc8baf4375a4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cb7b464b6513a33c", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/tasks (src/app/(dashboard)/leads/[id]/page.tsx:352)"}, "properties": {"repobilityId": "34b86471e2803a5d", "scanner": "scanner-primary", "fingerprint": "cb7b464b6513a33c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-863d9892502adb20", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/lead-scoring (src/app/(dashboard)/leads/[id]/page.tsx:372)"}, "properties": {"repobilityId": "d66cc23d2e66a78c", "scanner": "scanner-primary", "fingerprint": "863d9892502adb20", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fdf31042ba276ccb", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/whatsapp/templates?status=APPROVED (src/app/(dashboard)/leads/[id]/page.tsx:408)"}, "properties": {"repobilityId": "8ed10b33631406d0", "scanner": "scanner-primary", "fingerprint": "fdf31042ba276ccb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b993759eb66a86b4", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/ai (src/app/(dashboard)/leads/[id]/page.tsx:433)"}, "properties": {"repobilityId": "bfa235f289271484", "scanner": "scanner-primary", "fingerprint": "b993759eb66a86b4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3406ceee3a27397e", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/whatsapp/send (src/app/(dashboard)/leads/[id]/page.tsx:465)"}, "properties": {"repobilityId": "84d34ffce5ac8c36", "scanner": "scanner-primary", "fingerprint": "3406ceee3a27397e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-37018bf4e91c74a3", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/inbox (src/app/(dashboard)/leads/[id]/page.tsx:499)"}, "properties": {"repobilityId": "85f4b0988b2fef82", "scanner": "scanner-primary", "fingerprint": "37018bf4e91c74a3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-49b726590cc15752", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/projects?${params} (src/app/(dashboard)/projects/page.tsx:86)"}, "properties": {"repobilityId": "dd44afbb8935173d", "scanner": "scanner-primary", "fingerprint": "49b726590cc15752", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f78de423e7c3715a", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/projects/${deleteId} (src/app/(dashboard)/projects/page.tsx:111)"}, "properties": {"repobilityId": "076cd34e863a93c4", "scanner": "scanner-primary", "fingerprint": "f78de423e7c3715a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d6638b168576463c", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/projects/bulk (src/app/(dashboard)/projects/page.tsx:159)"}, "properties": {"repobilityId": "0a6e151aa72d1fb8", "scanner": "scanner-primary", "fingerprint": "d6638b168576463c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-edc11f49b0739546", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/projects/bulk (src/app/(dashboard)/projects/page.tsx:169)"}, "properties": {"repobilityId": "df53db1d91c38578", "scanner": "scanner-primary", "fingerprint": "edc11f49b0739546", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b1ffa5bcec17470d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/projects/${id} (src/app/(dashboard)/projects/[id]/page.tsx:60)"}, "properties": {"repobilityId": "7cd211ac872d0fda", "scanner": "scanner-primary", "fingerprint": "b1ffa5bcec17470d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8ab22b244495fff9", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users (src/app/(dashboard)/projects/[id]/page.tsx:71)"}, "properties": {"repobilityId": "1046401f96a1f2e2", "scanner": "scanner-primary", "fingerprint": "8ab22b244495fff9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e1b6b6880243fd12", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/projects/${id} (src/app/(dashboard)/projects/[id]/page.tsx:83)"}, "properties": {"repobilityId": "37781effbad9c298", "scanner": "scanner-primary", "fingerprint": "e1b6b6880243fd12", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-809ab0c115fd99b6", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/events?${qs} (src/app/(dashboard)/events/page.tsx:69)"}, "properties": {"repobilityId": "73df9a62a40789a5", "scanner": "scanner-primary", "fingerprint": "809ab0c115fd99b6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8aa28508e361f944", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/events/${deleteEvent.id} (src/app/(dashboard)/events/page.tsx:84)"}, "properties": {"repobilityId": "c680b21fd411355a", "scanner": "scanner-primary", "fingerprint": "8aa28508e361f944", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-89f685ed539d4475", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/events/${params.id}?_t=${Date.now()} (src/app/(dashboard)/events/[id]/page.tsx:122)"}, "properties": {"repobilityId": "a7bef3a96372b292", "scanner": "scanner-primary", "fingerprint": "89f685ed539d4475", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c0595fd34e6723bd", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contacts?limit=200 (src/app/(dashboard)/events/[id]/page.tsx:136)"}, "properties": {"repobilityId": "bee6d2bf94eca706", "scanner": "scanner-primary", "fingerprint": "c0595fd34e6723bd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a41f5b3cab2dc8df", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/events/${params.id} (src/app/(dashboard)/events/[id]/page.tsx:142)"}, "properties": {"repobilityId": "a045f5bb00fac74d", "scanner": "scanner-primary", "fingerprint": "a41f5b3cab2dc8df", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bd7a81d05dac565b", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/events/${params.id} (src/app/(dashboard)/events/[id]/page.tsx:151)"}, "properties": {"repobilityId": "862e372334b35843", "scanner": "scanner-primary", "fingerprint": "bd7a81d05dac565b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-58509ed0ae71662b", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/events/${params.id}/participants (src/app/(dashboard)/events/[id]/page.tsx:160)"}, "properties": {"repobilityId": "c62ff8a2c6532117", "scanner": "scanner-primary", "fingerprint": "58509ed0ae71662b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0fc44e93f394922d", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/events/${params.id}/participants (src/app/(dashboard)/events/[id]/page.tsx:196)"}, "properties": {"repobilityId": "9b6cedfde887fe20", "scanner": "scanner-primary", "fingerprint": "0fc44e93f394922d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-efcb879e7a84d82d", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/events/${params.id}/participants (src/app/(dashboard)/events/[id]/page.tsx:227)"}, "properties": {"repobilityId": "31101e369f885fd4", "scanner": "scanner-primary", "fingerprint": "efcb879e7a84d82d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-64cddb60abe26bee", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/events/${params.id}/participants (src/app/(dashboard)/events/[id]/page.tsx:246)"}, "properties": {"repobilityId": "c1b0890335c56df6", "scanner": "scanner-primary", "fingerprint": "64cddb60abe26bee", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0f246134c4e7cad7", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/events/${params.id}/participants (src/app/(dashboard)/events/[id]/page.tsx:262)"}, "properties": {"repobilityId": "2d6cba031b0df0a6", "scanner": "scanner-primary", "fingerprint": "0f246134c4e7cad7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cc3ca6332f1775b1", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/events/${params.id}/participants (src/app/(dashboard)/events/[id]/page.tsx:272)"}, "properties": {"repobilityId": "8efac8d100221ba3", "scanner": "scanner-primary", "fingerprint": "cc3ca6332f1775b1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-211e726882195beb", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/events/${params.id} (src/app/(dashboard)/events/[id]/page.tsx:286)"}, "properties": {"repobilityId": "785d04cc897b46f2", "scanner": "scanner-primary", "fingerprint": "211e726882195beb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-04062865b93ff1d8", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/health-patients?${params} (src/app/(dashboard)/health/page.tsx:71)"}, "properties": {"repobilityId": "62232e7222bb39c4", "scanner": "scanner-primary", "fingerprint": "04062865b93ff1d8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0f9b34eb607d4a11", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/health-encounters?limit=1 (src/app/(dashboard)/health/page.tsx:96)"}, "properties": {"repobilityId": "578486640d2e21d6", "scanner": "scanner-primary", "fingerprint": "0f9b34eb607d4a11", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-98249532090b3124", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/health-care-plans?status=active&limit=1 (src/app/(dashboard)/health/page.tsx:97)"}, "properties": {"repobilityId": "a197e068ec577cb0", "scanner": "scanner-primary", "fingerprint": "98249532090b3124", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-784d2c3d39437763", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/health-care-plans?${params} (src/app/(dashboard)/health/care-plans/page.tsx:63)"}, "properties": {"repobilityId": "57bd16c547a0428e", "scanner": "scanner-primary", "fingerprint": "784d2c3d39437763", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d81fd6d02028bf26", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/health-encounters?${params} (src/app/(dashboard)/health/encounters/page.tsx:66)"}, "properties": {"repobilityId": "15d9bef80d72f040", "scanner": "scanner-primary", "fingerprint": "d81fd6d02028bf26", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-67d05ebf157cc3ce", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/health-patients/${id} (src/app/(dashboard)/health/[id]/page.tsx:107)"}, "properties": {"repobilityId": "fe58653df35c93f7", "scanner": "scanner-primary", "fingerprint": "67d05ebf157cc3ce", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ec0ee6457f9434cb", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/health-encounters?patientId=${id}&limit=50 (src/app/(dashboard)/health/[id]/page.tsx:127)"}, "properties": {"repobilityId": "b59c154525108228", "scanner": "scanner-primary", "fingerprint": "ec0ee6457f9434cb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-be5134fd842db0a1", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/health-care-plans?patientId=${id}&limit=50 (src/app/(dashboard)/health/[id]/page.tsx:133)"}, "properties": {"repobilityId": "60d51874795b2099", "scanner": "scanner-primary", "fingerprint": "be5134fd842db0a1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-037eb4db43685e48", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/health-medical-records?patientId=${id}&limit=50 (src/app/(dashboard)/health/[id]/page.tsx:139)"}, "properties": {"repobilityId": "7490fdff79c21f74", "scanner": "scanner-primary", "fingerprint": "037eb4db43685e48", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-84a2e3e1ce8fe850", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/health-providers?${params} (src/app/(dashboard)/health/providers/page.tsx:67)"}, "properties": {"repobilityId": "e0c0d56d853974e4", "scanner": "scanner-primary", "fingerprint": "84a2e3e1ce8fe850", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e1a51de92f2cb02a", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/media-subscribers?${params} (src/app/(dashboard)/media/page.tsx:74)"}, "properties": {"repobilityId": "938233c1670049c6", "scanner": "scanner-primary", "fingerprint": "e1a51de92f2cb02a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-64f473017e0b2d4a", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/media-ad-campaigns?limit=1 (src/app/(dashboard)/media/page.tsx:100)"}, "properties": {"repobilityId": "be4caddeb045e6bc", "scanner": "scanner-primary", "fingerprint": "64f473017e0b2d4a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-da3eb40146082580", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/media-subscribers/${id} (src/app/(dashboard)/media/[id]/page.tsx:66)"}, "properties": {"repobilityId": "55c52eefc8084273", "scanner": "scanner-primary", "fingerprint": "da3eb40146082580", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3683686baca15c62", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/media-content-inventory?${params} (src/app/(dashboard)/media/content/page.tsx:75)"}, "properties": {"repobilityId": "edb2fd4f7d08a912", "scanner": "scanner-primary", "fingerprint": "3683686baca15c62", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ddbb779f6842933b", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/media-ad-campaigns?${params} (src/app/(dashboard)/media/ad-campaigns/page.tsx:76)"}, "properties": {"repobilityId": "076b90361c822487", "scanner": "scanner-primary", "fingerprint": "ddbb779f6842933b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e8c51a44a2978d03", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/kb?limit=500 (src/app/(dashboard)/knowledge-base/page.tsx:94)"}, "properties": {"repobilityId": "e6a430f679b72a0c", "scanner": "scanner-primary", "fingerprint": "e8c51a44a2978d03", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-877f6bf352233662", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/kb-categories (src/app/(dashboard)/knowledge-base/page.tsx:107)"}, "properties": {"repobilityId": "d5fb96ad97e4fd5f", "scanner": "scanner-primary", "fingerprint": "877f6bf352233662", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cdc6cf741c880eec", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/kb/${deleteId} (src/app/(dashboard)/knowledge-base/page.tsx:119)"}, "properties": {"repobilityId": "40a41da47ffad899", "scanner": "scanner-primary", "fingerprint": "cdc6cf741c880eec", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2a97166823d57198", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/kb-categories (src/app/(dashboard)/knowledge-base/page.tsx:131)"}, "properties": {"repobilityId": "08b4b2c4408e32c4", "scanner": "scanner-primary", "fingerprint": "2a97166823d57198", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ce493f10363d82a5", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/kb-categories/${catId} (src/app/(dashboard)/knowledge-base/page.tsx:148)"}, "properties": {"repobilityId": "71da8707a2326ccc", "scanner": "scanner-primary", "fingerprint": "ce493f10363d82a5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2e0d8e9a0b60abcd", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/kb/${params.id} (src/app/(dashboard)/knowledge-base/[id]/page.tsx:35)"}, "properties": {"repobilityId": "700fbf30bc1cf76f", "scanner": "scanner-primary", "fingerprint": "2e0d8e9a0b60abcd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1d3461bccb6a7aca", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/kb/${params.id} (src/app/(dashboard)/knowledge-base/[id]/page.tsx:50)"}, "properties": {"repobilityId": "f5b73891dd11f35b", "scanner": "scanner-primary", "fingerprint": "1d3461bccb6a7aca", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-618796da1965a085", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/dashboard/widget-config (src/app/(dashboard)/dashboard/page.tsx:59)"}, "properties": {"repobilityId": "d4a1f1c9a2063f91", "scanner": "scanner-primary", "fingerprint": "618796da1965a085", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dd218989e53f4ee5", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/dashboard/executive (src/app/(dashboard)/dashboard/page.tsx:95)"}, "properties": {"repobilityId": "92281ca13ff246e2", "scanner": "scanner-primary", "fingerprint": "dd218989e53f4ee5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8a0d279d7dc9d218", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/lead-scoring (src/app/(dashboard)/lead-scoring/page.tsx:95)"}, "properties": {"repobilityId": "f086ded618b32af5", "scanner": "scanner-primary", "fingerprint": "8a0d279d7dc9d218", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b88c6fc91380028c", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/lead-scoring (src/app/(dashboard)/lead-scoring/page.tsx:115)"}, "properties": {"repobilityId": "19a4da2fcf928655", "scanner": "scanner-primary", "fingerprint": "b88c6fc91380028c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3b0e646157587f63", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/lead-scoring (src/app/(dashboard)/lead-scoring/page.tsx:135)"}, "properties": {"repobilityId": "5ed83bb77822b863", "scanner": "scanner-primary", "fingerprint": "3b0e646157587f63", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bbc26c71f8f7824d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/loyalty-earn-rules${qs} (src/app/(dashboard)/loyalty/earn-rules/page.tsx:138)"}, "properties": {"repobilityId": "045f9ffe799cf13d", "scanner": "scanner-primary", "fingerprint": "bbc26c71f8f7824d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c354bbac5646dec3", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/loyalty-earn-rules/${editingId} (src/app/(dashboard)/loyalty/earn-rules/page.tsx:231)"}, "properties": {"repobilityId": "c0e77d2a13f93614", "scanner": "scanner-primary", "fingerprint": "c354bbac5646dec3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d75d316afabfca42", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/loyalty-earn-rules (src/app/(dashboard)/loyalty/earn-rules/page.tsx:237)"}, "properties": {"repobilityId": "86b0ea4eb4b9909d", "scanner": "scanner-primary", "fingerprint": "d75d316afabfca42", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-42138eae278b07e5", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/loyalty-earn-rules/${row.id} (src/app/(dashboard)/loyalty/earn-rules/page.tsx:260)"}, "properties": {"repobilityId": "404132232fd24a08", "scanner": "scanner-primary", "fingerprint": "42138eae278b07e5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a33d611d0f43a3f1", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/loyalty-earn-rules/${row.id} (src/app/(dashboard)/loyalty/earn-rules/page.tsx:278)"}, "properties": {"repobilityId": "50b4102b216018e4", "scanner": "scanner-primary", "fingerprint": "a33d611d0f43a3f1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e2e28c195c609867", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/loyalty-overview (src/app/(dashboard)/loyalty/dashboard/page.tsx:124)"}, "properties": {"repobilityId": "6449bf6f7e51383b", "scanner": "scanner-primary", "fingerprint": "e2e28c195c609867", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-36ec8b571b7d1e31", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/promo-codes${qs} (src/app/(dashboard)/loyalty/promo-codes/page.tsx:120)"}, "properties": {"repobilityId": "8ed3fd2e7e36f0ff", "scanner": "scanner-primary", "fingerprint": "36ec8b571b7d1e31", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e1762d862321f711", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/promo-codes/${editingId} (src/app/(dashboard)/loyalty/promo-codes/page.tsx:222)"}, "properties": {"repobilityId": "42486b2ee43754db", "scanner": "scanner-primary", "fingerprint": "e1762d862321f711", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8014dbeab0159c58", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/promo-codes (src/app/(dashboard)/loyalty/promo-codes/page.tsx:228)"}, "properties": {"repobilityId": "86d2fc6e20dcc490", "scanner": "scanner-primary", "fingerprint": "8014dbeab0159c58", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f378e50b2a26920c", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/promo-codes/${row.id} (src/app/(dashboard)/loyalty/promo-codes/page.tsx:255)"}, "properties": {"repobilityId": "439c6d40affc8832", "scanner": "scanner-primary", "fingerprint": "f378e50b2a26920c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b5e94079861e5938", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/promo-codes/${row.id} (src/app/(dashboard)/loyalty/promo-codes/page.tsx:273)"}, "properties": {"repobilityId": "3a400dc69e867c23", "scanner": "scanner-primary", "fingerprint": "b5e94079861e5938", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f5a331bb2afbd86c", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/loyalty-tiers (src/app/(dashboard)/loyalty/tiers/page.tsx:99)"}, "properties": {"repobilityId": "7865193cea8dc2ee", "scanner": "scanner-primary", "fingerprint": "f5a331bb2afbd86c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-da49b6590b7a187f", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/loyalty-tiers?seedDefaults=true (src/app/(dashboard)/loyalty/tiers/page.tsx:145)"}, "properties": {"repobilityId": "3fa1d51b5380a93e", "scanner": "scanner-primary", "fingerprint": "da49b6590b7a187f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e118fd40f380afe2", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/loyalty-tiers (src/app/(dashboard)/loyalty/tiers/page.tsx:190)"}, "properties": {"repobilityId": "422a45d63dd0a216", "scanner": "scanner-primary", "fingerprint": "e118fd40f380afe2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-482e3c462b2e85d2", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/loyalty-tiers/${row.id} (src/app/(dashboard)/loyalty/tiers/page.tsx:220)"}, "properties": {"repobilityId": "fe1a8803d250fe40", "scanner": "scanner-primary", "fingerprint": "482e3c462b2e85d2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-80fb7c45487cefeb", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/loyalty-accounts/${accountId}/${mode} (src/app/(dashboard)/loyalty/accounts/[id]/page.tsx:118)"}, "properties": {"repobilityId": "eeea631fa33d8e72", "scanner": "scanner-primary", "fingerprint": "80fb7c45487cefeb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-16bf00a4f2cab74b", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/loyalty-accounts/${id} (src/app/(dashboard)/loyalty/accounts/[id]/page.tsx:287)"}, "properties": {"repobilityId": "e8891bdb9daa592c", "scanner": "scanner-primary", "fingerprint": "16bf00a4f2cab74b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c4a85cd0819c1b5d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/campaign-roi (src/app/(dashboard)/campaign-roi/page.tsx:294)"}, "properties": {"repobilityId": "6b88a2b776dc03c2", "scanner": "scanner-primary", "fingerprint": "c4a85cd0819c1b5d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e50b4a80b8fed52d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/sequences/${seqId} (src/app/(dashboard)/sequences/page.tsx:88)"}, "properties": {"repobilityId": "3b0bda08af6919ba", "scanner": "scanner-primary", "fingerprint": "e50b4a80b8fed52d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6fd99b38b824ef22", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/sequences (src/app/(dashboard)/sequences/page.tsx:286)"}, "properties": {"repobilityId": "fb4d1fe1027468f0", "scanner": "scanner-primary", "fingerprint": "6fd99b38b824ef22", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4fcaf452636866ff", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/sequences/${deleteTarget.id} (src/app/(dashboard)/sequences/page.tsx:328)"}, "properties": {"repobilityId": "272c5a701b86b8c3", "scanner": "scanner-primary", "fingerprint": "4fcaf452636866ff", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f35b598722bce8dd", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/sequences/${seq.id} (src/app/(dashboard)/sequences/page.tsx:334)"}, "properties": {"repobilityId": "335c6edd41a5db33", "scanner": "scanner-primary", "fingerprint": "f35b598722bce8dd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ebec4b57d9aeb9ba", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/policy-holders?${params} (src/app/(dashboard)/insurance/page.tsx:69)"}, "properties": {"repobilityId": "94ec7c248576876c", "scanner": "scanner-primary", "fingerprint": "ebec4b57d9aeb9ba", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2af5ce447d65eb46", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/policies?limit=1 (src/app/(dashboard)/insurance/page.tsx:91)"}, "properties": {"repobilityId": "bd748d9eafe86ae4", "scanner": "scanner-primary", "fingerprint": "2af5ce447d65eb46", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d56b5887e85a68e0", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/claims?limit=1 (src/app/(dashboard)/insurance/page.tsx:92)"}, "properties": {"repobilityId": "b34bfd4624605ad8", "scanner": "scanner-primary", "fingerprint": "d56b5887e85a68e0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-59d4d928dd7249e6", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/claims?${params} (src/app/(dashboard)/insurance/claims/page.tsx:67)"}, "properties": {"repobilityId": "7b97e72e3811aef8", "scanner": "scanner-primary", "fingerprint": "59d4d928dd7249e6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d5ccdd80fdfb6dab", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/policy-holders/${id} (src/app/(dashboard)/insurance/[id]/page.tsx:96)"}, "properties": {"repobilityId": "702f7cb028d4306d", "scanner": "scanner-primary", "fingerprint": "d5ccdd80fdfb6dab", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-54b6f0a4d6bc76f5", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/policies?policyHolderId=${id}&limit=50 (src/app/(dashboard)/insurance/[id]/page.tsx:112)"}, "properties": {"repobilityId": "33816dc4aa867303", "scanner": "scanner-primary", "fingerprint": "54b6f0a4d6bc76f5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7da6aa4b9f70d267", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/beneficiaries?${params} (src/app/(dashboard)/insurance/beneficiaries/page.tsx:58)"}, "properties": {"repobilityId": "9d7e5dcd20cf7721", "scanner": "scanner-primary", "fingerprint": "7da6aa4b9f70d267", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9dbceec654c787b1", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/policies?${params} (src/app/(dashboard)/insurance/policies/page.tsx:64)"}, "properties": {"repobilityId": "969548aa9aae3c45", "scanner": "scanner-primary", "fingerprint": "9dbceec654c787b1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9124ccaa8b8c22b5", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/surveys (src/app/(dashboard)/surveys/page.tsx:80)"}, "properties": {"repobilityId": "a4ae9d2c403d6eb9", "scanner": "scanner-primary", "fingerprint": "9124ccaa8b8c22b5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c2f0a0a144b9c114", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/surveys (src/app/(dashboard)/surveys/page.tsx:97)"}, "properties": {"repobilityId": "176ba3b88567f834", "scanner": "scanner-primary", "fingerprint": "c2f0a0a144b9c114", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d5978492d289abd3", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/surveys/${deleteId} (src/app/(dashboard)/surveys/page.tsx:125)"}, "properties": {"repobilityId": "0455e7a94a2959ac", "scanner": "scanner-primary", "fingerprint": "d5978492d289abd3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-098dd8719ae1122b", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/surveys/${s.id} (src/app/(dashboard)/surveys/page.tsx:131)"}, "properties": {"repobilityId": "5406aed60230224a", "scanner": "scanner-primary", "fingerprint": "098dd8719ae1122b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fb6d5699a3fae0f0", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/surveys/${sendDialogId}/send (src/app/(dashboard)/surveys/page.tsx:155)"}, "properties": {"repobilityId": "4e47b2481735dc78", "scanner": "scanner-primary", "fingerprint": "fb6d5699a3fae0f0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-18bff9900b6e87e1", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/surveys/${params.id} (src/app/(dashboard)/surveys/[id]/page.tsx:70)"}, "properties": {"repobilityId": "4f663819fd591a7f", "scanner": "scanner-primary", "fingerprint": "18bff9900b6e87e1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4aef5c2f3ef20544", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/surveys/${params.id} (src/app/(dashboard)/surveys/[id]/page.tsx:88)"}, "properties": {"repobilityId": "b816edfaad441e8e", "scanner": "scanner-primary", "fingerprint": "4aef5c2f3ef20544", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bc3ab394559f718e", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/calendar/token (src/app/(dashboard)/tasks/page.tsx:155)"}, "properties": {"repobilityId": "fc8d1668e100ed5a", "scanner": "scanner-primary", "fingerprint": "bc3ab394559f718e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e8b8685a3a589470", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/calendar/generate-token (src/app/(dashboard)/tasks/page.tsx:167)"}, "properties": {"repobilityId": "612ec635146bb342", "scanner": "scanner-primary", "fingerprint": "e8b8685a3a589470", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-063b36f609faf3b3", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/tasks?limit=200 (src/app/(dashboard)/tasks/page.tsx:644)"}, "properties": {"repobilityId": "2e3b0edd1e8b3f76", "scanner": "scanner-primary", "fingerprint": "063b36f609faf3b3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-be19764a1fff200b", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/tasks/${task.id} (src/app/(dashboard)/tasks/page.tsx:669)"}, "properties": {"repobilityId": "2373c6bb4586ef08", "scanner": "scanner-primary", "fingerprint": "be19764a1fff200b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c55a81f746ed49a0", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/tasks/${taskId} (src/app/(dashboard)/tasks/page.tsx:791)"}, "properties": {"repobilityId": "af5119ce1bf68d34", "scanner": "scanner-primary", "fingerprint": "c55a81f746ed49a0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-012020c446c251d9", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/tasks (src/app/(dashboard)/tasks/page.tsx:816)"}, "properties": {"repobilityId": "f48eacc10cc6b600", "scanner": "scanner-primary", "fingerprint": "012020c446c251d9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d160dd290bd07dab", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/custom-fields?entityType=task (src/app/(dashboard)/tasks/page.tsx:831)"}, "properties": {"repobilityId": "fbf37e292b99177e", "scanner": "scanner-primary", "fingerprint": "d160dd290bd07dab", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a1510161a9130a0d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users/assignable (src/app/(dashboard)/tasks/page.tsx:844)"}, "properties": {"repobilityId": "4300927034124903", "scanner": "scanner-primary", "fingerprint": "a1510161a9130a0d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-890522cfa26271ea", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/projects?limit=200 (src/app/(dashboard)/tasks/page.tsx:865)"}, "properties": {"repobilityId": "8f16274c2334bf73", "scanner": "scanner-primary", "fingerprint": "890522cfa26271ea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-517a64145ae947c7", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/tasks/${deleteItem.id} (src/app/(dashboard)/tasks/page.tsx:899)"}, "properties": {"repobilityId": "09ead0b737ceaf04", "scanner": "scanner-primary", "fingerprint": "517a64145ae947c7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4350e7d3f8fd4967", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/tasks/bulk (src/app/(dashboard)/tasks/page.tsx:928)"}, "properties": {"repobilityId": "f16a672c1e6d9775", "scanner": "scanner-primary", "fingerprint": "4350e7d3f8fd4967", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-00ec22599ab346cd", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/tasks/${taskId} (src/app/(dashboard)/tasks/page.tsx:955)"}, "properties": {"repobilityId": "77949453408b1bbe", "scanner": "scanner-primary", "fingerprint": "00ec22599ab346cd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e9fccec710e77dcf", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/account-engagement${qs} (src/app/(dashboard)/accounts/engagement/page.tsx:122)"}, "properties": {"repobilityId": "12135da899feb77e", "scanner": "scanner-primary", "fingerprint": "e9fccec710e77dcf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a85bce87a3b64a02", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/cobrowse/sessions?limit=50 (src/app/(dashboard)/cobrowse/page.tsx:56)"}, "properties": {"repobilityId": "329f7065193c560d", "scanner": "scanner-primary", "fingerprint": "a85bce87a3b64a02", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1d662654fba68175", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/cobrowse/sessions (src/app/(dashboard)/cobrowse/page.tsx:183)"}, "properties": {"repobilityId": "24e732ffbdd5d6dc", "scanner": "scanner-primary", "fingerprint": "1d662654fba68175", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-26cbf55f32d4cc5d", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/cobrowse/sessions/${id}/signal (src/app/(dashboard)/cobrowse/[id]/page.tsx:55)"}, "properties": {"repobilityId": "d4b968eb74a15ae6", "scanner": "scanner-primary", "fingerprint": "26cbf55f32d4cc5d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dfc6b7476d0754e1", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/cobrowse/sessions/${id} (src/app/(dashboard)/cobrowse/[id]/page.tsx:129)"}, "properties": {"repobilityId": "f3144695f77475d5", "scanner": "scanner-primary", "fingerprint": "dfc6b7476d0754e1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f3e4bdcfbf61d986", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/cobrowse/sessions/${id} (src/app/(dashboard)/cobrowse/[id]/page.tsx:143)"}, "properties": {"repobilityId": "4af6eaf09cbae198", "scanner": "scanner-primary", "fingerprint": "f3e4bdcfbf61d986", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a7d0ae734ec667bb", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/cobrowse/sessions/${id} (src/app/(dashboard)/cobrowse/[id]/page.tsx:310)"}, "properties": {"repobilityId": "22e05261ff23e5dd", "scanner": "scanner-primary", "fingerprint": "a7d0ae734ec667bb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f0420ab04858babf", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/subscriptions-overview (src/app/(dashboard)/billing/subscriptions/page.tsx:127)"}, "properties": {"repobilityId": "c799489aa4ed63f9", "scanner": "scanner-primary", "fingerprint": "f0420ab04858babf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-462be21ebbebf628", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/tickets?limit=200 (src/app/(dashboard)/tickets/page.tsx:101)"}, "properties": {"repobilityId": "8ac22a3e20358e97", "scanner": "scanner-primary", "fingerprint": "462be21ebbebf628", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-faafc1a8baf8069a", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/tickets/${deleteItem.id} (src/app/(dashboard)/tickets/page.tsx:142)"}, "properties": {"repobilityId": "8abdff03d76a6a9a", "scanner": "scanner-primary", "fingerprint": "faafc1a8baf8069a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7c9b554309f3da10", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:196)"}, "properties": {"repobilityId": "8f1f15569dd89a62", "scanner": "scanner-primary", "fingerprint": "7c9b554309f3da10", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-25c90b742887939b", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users (src/app/(dashboard)/tickets/[id]/page.tsx:220)"}, "properties": {"repobilityId": "95d04d090e2af4ee", "scanner": "scanner-primary", "fingerprint": "25c90b742887939b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-33badde61394a44e", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/tickets/${ticketId}/siblings (src/app/(dashboard)/tickets/[id]/page.tsx:244)"}, "properties": {"repobilityId": "8d6f92e190ea2561", "scanner": "scanner-primary", "fingerprint": "33badde61394a44e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9408a667396f83c2", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/ticket-macros (src/app/(dashboard)/tickets/[id]/page.tsx:248)"}, "properties": {"repobilityId": "41d3ebb3c1d64af6", "scanner": "scanner-primary", "fingerprint": "9408a667396f83c2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e7586aa9bd52a614", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:254)"}, "properties": {"repobilityId": "8c6704018cfb58a6", "scanner": "scanner-primary", "fingerprint": "e7586aa9bd52a614", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8aa4a581d3bf693a", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:275)"}, "properties": {"repobilityId": "589f33e063b78b14", "scanner": "scanner-primary", "fingerprint": "8aa4a581d3bf693a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-596b2f710791fb6d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/tickets/${ticketId}/context (src/app/(dashboard)/tickets/[id]/page.tsx:287)"}, "properties": {"repobilityId": "5c6cc1f9d07a729a", "scanner": "scanner-primary", "fingerprint": "596b2f710791fb6d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bdf607e1641fb883", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:299)"}, "properties": {"repobilityId": "f2ba289a0f9432a2", "scanner": "scanner-primary", "fingerprint": "bdf607e1641fb883", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d993c03d004b2a38", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:308)"}, "properties": {"repobilityId": "121bc87168655630", "scanner": "scanner-primary", "fingerprint": "d993c03d004b2a38", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1f41ffc0a1cb6cd7", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/ticket-macros/${m.id}/apply (src/app/(dashboard)/tickets/[id]/page.tsx:320)"}, "properties": {"repobilityId": "92fc4f22153c0cea", "scanner": "scanner-primary", "fingerprint": "1f41ffc0a1cb6cd7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dd29efb191ab1984", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/tickets/${ticketId}/comments (src/app/(dashboard)/tickets/[id]/page.tsx:333)"}, "properties": {"repobilityId": "1884510ee60194c5", "scanner": "scanner-primary", "fingerprint": "dd29efb191ab1984", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-71d279bbeedb0180", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:350)"}, "properties": {"repobilityId": "7434322c5ec93aac", "scanner": "scanner-primary", "fingerprint": "71d279bbeedb0180", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6b51d038c4add28f", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:363)"}, "properties": {"repobilityId": "1c78f8bf39c8596e", "scanner": "scanner-primary", "fingerprint": "6b51d038c4add28f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-90e4764b8a8cc5e6", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:380)"}, "properties": {"repobilityId": "869c2679582356f9", "scanner": "scanner-primary", "fingerprint": "90e4764b8a8cc5e6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-98f16b317cf7531c", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/tickets/ai (src/app/(dashboard)/tickets/[id]/page.tsx:393)"}, "properties": {"repobilityId": "ce74bf6f55eec289", "scanner": "scanner-primary", "fingerprint": "98f16b317cf7531c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-71e3709d29768fda", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:413)"}, "properties": {"repobilityId": "ad3c97b56e3e8cc5", "scanner": "scanner-primary", "fingerprint": "71e3709d29768fda", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2175dfe25d1164db", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:427)"}, "properties": {"repobilityId": "08b1bfe615482cd3", "scanner": "scanner-primary", "fingerprint": "2175dfe25d1164db", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a84f640ac7bf498c", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:439)"}, "properties": {"repobilityId": "5fb126264709d793", "scanner": "scanner-primary", "fingerprint": "a84f640ac7bf498c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-88d707b3a3c2774c", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/ticket-macros/${m.id}/apply (src/app/(dashboard)/tickets/[id]/page.tsx:581)"}, "properties": {"repobilityId": "bbc3a0bf1d095a62", "scanner": "scanner-primary", "fingerprint": "88d707b3a3c2774c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-22b2328debb52f80", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/tickets/${ticketId} (src/app/(dashboard)/tickets/[id]/page.tsx:641)"}, "properties": {"repobilityId": "4ffa53f919de0d9a", "scanner": "scanner-primary", "fingerprint": "22b2328debb52f80", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bde61f1964c380d3", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/calculated-insights (src/app/(dashboard)/cdp/insights/page.tsx:248)"}, "properties": {"repobilityId": "a209627226700e08", "scanner": "scanner-primary", "fingerprint": "bde61f1964c380d3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-77fc2cbb5c496949", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/tasks (src/app/(dashboard)/cdp/insights/page.tsx:309)"}, "properties": {"repobilityId": "92126b8a1d34a9d2", "scanner": "scanner-primary", "fingerprint": "77fc2cbb5c496949", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-aaa2e06fea29373e", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/identity-merge-queue (src/app/(dashboard)/cdp/merge-queue/page.tsx:198)"}, "properties": {"repobilityId": "aaa35f593a4ff272", "scanner": "scanner-primary", "fingerprint": "aaa2e06fea29373e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ee1b695d262f3b01", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/identity-merge-queue/${id}/resolve (src/app/(dashboard)/cdp/merge-queue/page.tsx:224)"}, "properties": {"repobilityId": "6c5d8b25844e7729", "scanner": "scanner-primary", "fingerprint": "ee1b695d262f3b01", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-219ed475a61c021c", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/pages (src/app/(dashboard)/pages/page.tsx:92)"}, "properties": {"repobilityId": "21e9c91ced883772", "scanner": "scanner-primary", "fingerprint": "219ed475a61c021c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3cabb12ca2d5e41b", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/pages/submissions (src/app/(dashboard)/pages/page.tsx:104)"}, "properties": {"repobilityId": "959555e2d37ffa8d", "scanner": "scanner-primary", "fingerprint": "3cabb12ca2d5e41b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-508e6aefce35cd2d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/pages/${pageId}/analytics (src/app/(dashboard)/pages/page.tsx:118)"}, "properties": {"repobilityId": "cccced2ed6cffcf3", "scanner": "scanner-primary", "fingerprint": "508e6aefce35cd2d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-84249c6b614cfec0", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/pages (src/app/(dashboard)/pages/page.tsx:158)"}, "properties": {"repobilityId": "bf1db19bf4ef12f4", "scanner": "scanner-primary", "fingerprint": "84249c6b614cfec0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3d5573d24fd4bab4", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/pages/${page.id} (src/app/(dashboard)/pages/page.tsx:186)"}, "properties": {"repobilityId": "b59be5a98cae9a78", "scanner": "scanner-primary", "fingerprint": "3d5573d24fd4bab4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-da749fb21cf3f4b2", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/pages/${page.id}/publish (src/app/(dashboard)/pages/page.tsx:195)"}, "properties": {"repobilityId": "799e88c3a06b30af", "scanner": "scanner-primary", "fingerprint": "da749fb21cf3f4b2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fb4d7775f9534096", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/pages/${id} (src/app/(dashboard)/pages/page.tsx:211)"}, "properties": {"repobilityId": "5c2a0e5294250651", "scanner": "scanner-primary", "fingerprint": "fb4d7775f9534096", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-419b44fa4e7a099a", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/analytics/forecast?months=6 (src/app/(dashboard)/forecast/page.tsx:47)"}, "properties": {"repobilityId": "560881a33e8ece40", "scanner": "scanner-primary", "fingerprint": "419b44fa4e7a099a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b42472c67da51a64", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/sales-quotas?year=${year} (src/app/(dashboard)/forecast/page.tsx:48)"}, "properties": {"repobilityId": "a85546675ea68683", "scanner": "scanner-primary", "fingerprint": "b42472c67da51a64", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-30836f29b194ec40", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/pipelines (src/app/(dashboard)/forecast/page.tsx:49)"}, "properties": {"repobilityId": "9b136d887ba4216f", "scanner": "scanner-primary", "fingerprint": "30836f29b194ec40", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-403de72fc6f329de", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/deals?limit=200 (src/app/(dashboard)/forecast/page.tsx:50)"}, "properties": {"repobilityId": "de6cf9b0cd4abd97", "scanner": "scanner-primary", "fingerprint": "403de72fc6f329de", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c45acc2d78dd683c", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/forecast-snapshots?limit=50 (src/app/(dashboard)/forecast/snapshots/page.tsx:53)"}, "properties": {"repobilityId": "126ae2f29567cc96", "scanner": "scanner-primary", "fingerprint": "c45acc2d78dd683c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0b0f59dddbaa3a89", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/forecast-snapshots (src/app/(dashboard)/forecast/snapshots/page.tsx:75)"}, "properties": {"repobilityId": "f563e1849c5ae47c", "scanner": "scanner-primary", "fingerprint": "0b0f59dddbaa3a89", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6690e4c58aa20f5b", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/forecast-snapshots/${id} (src/app/(dashboard)/forecast/snapshots/page.tsx:106)"}, "properties": {"repobilityId": "1df8d5f991f26231", "scanner": "scanner-primary", "fingerprint": "6690e4c58aa20f5b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7bf1ec3e55b0ea49", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/deal-velocity?periodKey=${period} (src/app/(dashboard)/forecast/velocity/page.tsx:85)"}, "properties": {"repobilityId": "05108f82c23a631a", "scanner": "scanner-primary", "fingerprint": "7bf1ec3e55b0ea49", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-19f0ba8d6883207c", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/pipeline-waterfall?days=${days} (src/app/(dashboard)/forecast/waterfall/page.tsx:92)"}, "properties": {"repobilityId": "4a2525226a417e13", "scanner": "scanner-primary", "fingerprint": "19f0ba8d6883207c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-91759ac7d1cd5088", "level": "error", "message": {"text": "Dangling fetch: POST /api/budgeting/matrix-seed (src/app/(dashboard)/budgeting/page.tsx:1584)"}, "properties": {"repobilityId": "ad181f7f29fdf0dd", "scanner": "scanner-primary", "fingerprint": "91759ac7d1cd5088", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d69b272973cf6013", "level": "error", "message": {"text": "Dangling fetch: POST /api/budgeting/resolve-costs (src/app/(dashboard)/budgeting/page.tsx:4036)"}, "properties": {"repobilityId": "c08b2e02c42334c7", "scanner": "scanner-primary", "fingerprint": "d69b272973cf6013", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-75c89699f7be2a40", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/email-templates?limit=500 (src/app/(dashboard)/email-templates/page.tsx:80)"}, "properties": {"repobilityId": "7fc73f63466894af", "scanner": "scanner-primary", "fingerprint": "75c89699f7be2a40", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1acd299fdbb984c5", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/content-scores?entityType=email_template (src/app/(dashboard)/email-templates/page.tsx:98)"}, "properties": {"repobilityId": "a799bb6435ea0cfe", "scanner": "scanner-primary", "fingerprint": "1acd299fdbb984c5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a34339be40909e29", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/email-templates/${deleteId} (src/app/(dashboard)/email-templates/page.tsx:125)"}, "properties": {"repobilityId": "ec74f78ed051d6aa", "scanner": "scanner-primary", "fingerprint": "a34339be40909e29", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4a15a43f1c3e7988", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/email-log?${params} (src/app/(dashboard)/email-log/page.tsx:91)"}, "properties": {"repobilityId": "4ec66cbf01390552", "scanner": "scanner-primary", "fingerprint": "4a15a43f1c3e7988", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2746e2aaf4e57571", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/email-log/ai-analysis (src/app/(dashboard)/email-log/page.tsx:112)"}, "properties": {"repobilityId": "da7103ab903450e7", "scanner": "scanner-primary", "fingerprint": "2746e2aaf4e57571", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-600674782fb368c4", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/utility-customers?${params} (src/app/(dashboard)/energy/page.tsx:73)"}, "properties": {"repobilityId": "2bf1fdf54918a674", "scanner": "scanner-primary", "fingerprint": "600674782fb368c4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ce0a47b6d63ad6fe", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/metering-points?limit=1 (src/app/(dashboard)/energy/page.tsx:99)"}, "properties": {"repobilityId": "2f7086c1b18e0feb", "scanner": "scanner-primary", "fingerprint": "ce0a47b6d63ad6fe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d3f0c29b5b0dc3fe", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/outages?limit=1 (src/app/(dashboard)/energy/page.tsx:100)"}, "properties": {"repobilityId": "292e25536d79f304", "scanner": "scanner-primary", "fingerprint": "d3f0c29b5b0dc3fe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c8d4dd836ec0a234", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/outages?${params} (src/app/(dashboard)/energy/outages/page.tsx:77)"}, "properties": {"repobilityId": "0fec8b2eef982a5b", "scanner": "scanner-primary", "fingerprint": "c8d4dd836ec0a234", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a2964405e7a7e64e", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/utility-customers/${id} (src/app/(dashboard)/energy/[id]/page.tsx:106)"}, "properties": {"repobilityId": "c6659aa584912af5", "scanner": "scanner-primary", "fingerprint": "a2964405e7a7e64e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c4a040d4ac6f9c7c", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/service-calls?${params} (src/app/(dashboard)/energy/service-calls/page.tsx:77)"}, "properties": {"repobilityId": "364a8977d6c01ae6", "scanner": "scanner-primary", "fingerprint": "c4a040d4ac6f9c7c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1ba16bf82920a6d0", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/metering-points?${params} (src/app/(dashboard)/energy/metering/page.tsx:72)"}, "properties": {"repobilityId": "33cb9d0a6e22bd06", "scanner": "scanner-primary", "fingerprint": "1ba16bf82920a6d0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8649b4104705a74a", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/campaigns?limit=500 (src/app/(dashboard)/campaigns/page.tsx:87)"}, "properties": {"repobilityId": "0d1216eee472daa4", "scanner": "scanner-primary", "fingerprint": "8649b4104705a74a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7891627d76cb9876", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/campaigns/${deleteId} (src/app/(dashboard)/campaigns/page.tsx:102)"}, "properties": {"repobilityId": "b8489d31e6c73561", "scanner": "scanner-primary", "fingerprint": "7891627d76cb9876", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7dcf186028df9fc1", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/campaigns/${campaign.id}/send (src/app/(dashboard)/campaigns/page.tsx:112)"}, "properties": {"repobilityId": "fd8de36baa7723b7", "scanner": "scanner-primary", "fingerprint": "7dcf186028df9fc1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ef0d53ad913f42c6", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/campaigns/${campaignId} (src/app/(dashboard)/campaigns/page.tsx:296)"}, "properties": {"repobilityId": "58586d1dd3dacfa8", "scanner": "scanner-primary", "fingerprint": "ef0d53ad913f42c6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a80ca05c0da202ae", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/campaigns/${params.id} (src/app/(dashboard)/campaigns/[id]/page.tsx:59)"}, "properties": {"repobilityId": "c3f2eb3936e6845c", "scanner": "scanner-primary", "fingerprint": "a80ca05c0da202ae", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e3d63861120b79cf", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/campaigns/${params.id}/variants (src/app/(dashboard)/campaigns/[id]/page.tsx:67)"}, "properties": {"repobilityId": "707737fcc7dc1712", "scanner": "scanner-primary", "fingerprint": "e3d63861120b79cf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-746e1143af41cd22", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/campaigns/${params.id} (src/app/(dashboard)/campaigns/[id]/page.tsx:80)"}, "properties": {"repobilityId": "a6dbbcd2c30e1c74", "scanner": "scanner-primary", "fingerprint": "746e1143af41cd22", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d2384c79e5ab5307", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/campaigns/${campaign.id}/send (src/app/(dashboard)/campaigns/[id]/page.tsx:144)"}, "properties": {"repobilityId": "4fbbb122bbd93e95", "scanner": "scanner-primary", "fingerprint": "d2384c79e5ab5307", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-879d6d7ae0bd1083", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/campaigns/${campaign.id} (src/app/(dashboard)/campaigns/[id]/page.tsx:278)"}, "properties": {"repobilityId": "0ee65d65d5e358d8", "scanner": "scanner-primary", "fingerprint": "879d6d7ae0bd1083", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-65cb815726a36892", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/campaigns/${campaign.id} (src/app/(dashboard)/campaigns/[id]/page.tsx:303)"}, "properties": {"repobilityId": "efcda01a074c236a", "scanner": "scanner-primary", "fingerprint": "65cb815726a36892", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-112dbd88cd4f26ea", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/campaigns/${campaign.id}/send (src/app/(dashboard)/campaigns/[id]/page.tsx:313)"}, "properties": {"repobilityId": "9c1ae113d4038fc3", "scanner": "scanner-primary", "fingerprint": "112dbd88cd4f26ea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-aa1bf2cb87242f9c", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/campaigns/${params.id} (src/app/(dashboard)/campaigns/[id]/page.tsx:388)"}, "properties": {"repobilityId": "78578ad484b62260", "scanner": "scanner-primary", "fingerprint": "aa1bf2cb87242f9c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c82b36d71bd39a53", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/analytics/segments/ai-summary (src/app/(dashboard)/contacts/page.tsx:98)"}, "properties": {"repobilityId": "10a055f063697f61", "scanner": "scanner-primary", "fingerprint": "c82b36d71bd39a53", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4370aad2669c1064", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contacts?limit=500 (src/app/(dashboard)/contacts/list/page.tsx:127)"}, "properties": {"repobilityId": "ecd7320634d8dc13", "scanner": "scanner-primary", "fingerprint": "4370aad2669c1064", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3927286cf985ecee", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/contacts/${contactId} (src/app/(dashboard)/contacts/list/page.tsx:148)"}, "properties": {"repobilityId": "436b81eaaf79b046", "scanner": "scanner-primary", "fingerprint": "3927286cf985ecee", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a9a1ffad65222c29", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/contacts/${deleteItem.id} (src/app/(dashboard)/contacts/list/page.tsx:190)"}, "properties": {"repobilityId": "a645f5d5a9adaeef", "scanner": "scanner-primary", "fingerprint": "a9a1ffad65222c29", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8f41eee0f5ce8277", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/contacts/bulk (src/app/(dashboard)/contacts/list/page.tsx:210)"}, "properties": {"repobilityId": "c66652629475f058", "scanner": "scanner-primary", "fingerprint": "8f41eee0f5ce8277", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dd3f0fd4f35eed89", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contacts/${contactId}/engagement (src/app/(dashboard)/contacts/[id]/page.tsx:78)"}, "properties": {"repobilityId": "3a6e69c61047cb7f", "scanner": "scanner-primary", "fingerprint": "dd3f0fd4f35eed89", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cfa33fc6136c8e06", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/health-scores?entityType=contact&entityId=${id} (src/app/(dashboard)/contacts/[id]/page.tsx:156)"}, "properties": {"repobilityId": "55774c6301be66e9", "scanner": "scanner-primary", "fingerprint": "cfa33fc6136c8e06", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-36facc40f250c127", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/activities (src/app/(dashboard)/contacts/[id]/page.tsx:192)"}, "properties": {"repobilityId": "b26b5f3e8dcbfb48", "scanner": "scanner-primary", "fingerprint": "36facc40f250c127", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0b5fd685db9ad618", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/calls?contactId=${id}&limit=20 (src/app/(dashboard)/contacts/[id]/page.tsx:223)"}, "properties": {"repobilityId": "6323fc9d95661db1", "scanner": "scanner-primary", "fingerprint": "0b5fd685db9ad618", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-19ab171407b2a8d6", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contacts/${id} (src/app/(dashboard)/contacts/[id]/page.tsx:242)"}, "properties": {"repobilityId": "bd7f92f2b6daa916", "scanner": "scanner-primary", "fingerprint": "19ab171407b2a8d6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6d0e947af4271b07", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/companies?limit=500 (src/app/(dashboard)/contacts/[id]/page.tsx:275)"}, "properties": {"repobilityId": "66cae9d148225322", "scanner": "scanner-primary", "fingerprint": "6d0e947af4271b07", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3fd2ad0ea1ed8869", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/contacts/${id} (src/app/(dashboard)/contacts/[id]/page.tsx:289)"}, "properties": {"repobilityId": "019708ec1b974475", "scanner": "scanner-primary", "fingerprint": "3fd2ad0ea1ed8869", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-130d4dd75a3a73ea", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/ai/recommend (src/app/(dashboard)/contacts/[id]/page.tsx:466)"}, "properties": {"repobilityId": "044d3a816d9e4979", "scanner": "scanner-primary", "fingerprint": "130d4dd75a3a73ea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-de7ed3d95340a194", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/ai-configs (src/app/(dashboard)/ai-command-center/page.tsx:195)"}, "properties": {"repobilityId": "11c1be9471360417", "scanner": "scanner-primary", "fingerprint": "de7ed3d95340a194", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b5ce605c5428fae8", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/ai-sessions (src/app/(dashboard)/ai-command-center/page.tsx:196)"}, "properties": {"repobilityId": "43dde6c6f9d28f64", "scanner": "scanner-primary", "fingerprint": "b5ce605c5428fae8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-03f2328767137c73", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/ai-sessions/stats (src/app/(dashboard)/ai-command-center/page.tsx:197)"}, "properties": {"repobilityId": "cfd0ce18e25965be", "scanner": "scanner-primary", "fingerprint": "03f2328767137c73", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e18e3c8f9e0f3874", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/ai-alerts (src/app/(dashboard)/ai-command-center/page.tsx:198)"}, "properties": {"repobilityId": "e4f9815718360452", "scanner": "scanner-primary", "fingerprint": "e18e3c8f9e0f3874", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0677c8873f2ee973", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/ai-interaction-logs?limit=50 (src/app/(dashboard)/ai-command-center/page.tsx:199)"}, "properties": {"repobilityId": "e2a342e22de0e4ed", "scanner": "scanner-primary", "fingerprint": "0677c8873f2ee973", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ccd30620e27fa3f0", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/ai-guardrails (src/app/(dashboard)/ai-command-center/page.tsx:200)"}, "properties": {"repobilityId": "d91e321142cf4049", "scanner": "scanner-primary", "fingerprint": "ccd30620e27fa3f0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0a89945d128b6199", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/ai-configs/stats (src/app/(dashboard)/ai-command-center/page.tsx:216)"}, "properties": {"repobilityId": "b2c45cbb1440e8d0", "scanner": "scanner-primary", "fingerprint": "0a89945d128b6199", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f63a73f9feba3047", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/ai-configs/${deleteId} (src/app/(dashboard)/ai-command-center/page.tsx:237)"}, "properties": {"repobilityId": "68216799eedb2a22", "scanner": "scanner-primary", "fingerprint": "f63a73f9feba3047", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6409a52e6a9dbd1f", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/ai-configs/${id} (src/app/(dashboard)/ai-command-center/page.tsx:242)"}, "properties": {"repobilityId": "5d86457b14990ae9", "scanner": "scanner-primary", "fingerprint": "6409a52e6a9dbd1f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-61608f3bf1646532", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/ai-alerts (src/app/(dashboard)/ai-command-center/page.tsx:251)"}, "properties": {"repobilityId": "8e1a02283c54f066", "scanner": "scanner-primary", "fingerprint": "61608f3bf1646532", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fa8e1c5acc0fc101", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/ai-sessions/${id} (src/app/(dashboard)/ai-command-center/page.tsx:264)"}, "properties": {"repobilityId": "257bdec4183e77da", "scanner": "scanner-primary", "fingerprint": "fa8e1c5acc0fc101", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6347adc236be40f4", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/ai-guardrails (src/app/(dashboard)/ai-command-center/page.tsx:272)"}, "properties": {"repobilityId": "68defe6f18fc79e5", "scanner": "scanner-primary", "fingerprint": "6347adc236be40f4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d4e6fff7dad9b3b5", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/ai-guardrails?id=${id} (src/app/(dashboard)/ai-command-center/page.tsx:291)"}, "properties": {"repobilityId": "86ce1ea9acf77c6c", "scanner": "scanner-primary", "fingerprint": "d4e6fff7dad9b3b5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-10c655b2e09e79d5", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/offers/${deleteId} (src/app/(dashboard)/offers/page.tsx:92)"}, "properties": {"repobilityId": "543c0c7659037348", "scanner": "scanner-primary", "fingerprint": "10c655b2e09e79d5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d4bfa428589369b4", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/offers/${params.id} (src/app/(dashboard)/offers/[id]/page.tsx:68)"}, "properties": {"repobilityId": "253e1ba1f72d89be", "scanner": "scanner-primary", "fingerprint": "d4bfa428589369b4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cbd030c3eaad3f3f", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/companies/${json.data.companyId} (src/app/(dashboard)/offers/[id]/page.tsx:76)"}, "properties": {"repobilityId": "03780527a8380289", "scanner": "scanner-primary", "fingerprint": "cbd030c3eaad3f3f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c2fa57b50098993c", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/offers/${params.id} (src/app/(dashboard)/offers/[id]/page.tsx:96)"}, "properties": {"repobilityId": "05263bdd4d996ae2", "scanner": "scanner-primary", "fingerprint": "c2fa57b50098993c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-13c5aa5ca58dd407", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/offers/${params.id}/send (src/app/(dashboard)/offers/[id]/page.tsx:112)"}, "properties": {"repobilityId": "4e817ad15005bd1e", "scanner": "scanner-primary", "fingerprint": "13c5aa5ca58dd407", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6f2d0308f5ef5fa1", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/invoices/from-offer (src/app/(dashboard)/offers/[id]/page.tsx:140)"}, "properties": {"repobilityId": "efccf4cb57555ccb", "scanner": "scanner-primary", "fingerprint": "6f2d0308f5ef5fa1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-896f22c8321326c5", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users/me (src/app/(dashboard)/profile/page.tsx:76)"}, "properties": {"repobilityId": "910ae1e44e7b6257", "scanner": "scanner-primary", "fingerprint": "896f22c8321326c5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-116bdfa344c56274", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/users/me (src/app/(dashboard)/profile/page.tsx:174)"}, "properties": {"repobilityId": "61be4b5c13fdf2ed", "scanner": "scanner-primary", "fingerprint": "116bdfa344c56274", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8a2f3f34fd68c202", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/users/me/avatar (src/app/(dashboard)/profile/page.tsx:207)"}, "properties": {"repobilityId": "a385b75297442b4c", "scanner": "scanner-primary", "fingerprint": "8a2f3f34fd68c202", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-000d2bfa804a48e5", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/users/me/change-password (src/app/(dashboard)/profile/page.tsx:341)"}, "properties": {"repobilityId": "e8f2bfc2d8613acb", "scanner": "scanner-primary", "fingerprint": "000d2bfa804a48e5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6a6a523d77997e58", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/users/me/revoke-sessions (src/app/(dashboard)/profile/page.tsx:434)"}, "properties": {"repobilityId": "c388ddf3b077121e", "scanner": "scanner-primary", "fingerprint": "6a6a523d77997e58", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cb80470eb78fc525", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/users/me (src/app/(dashboard)/profile/page.tsx:525)"}, "properties": {"repobilityId": "b58b53f44f3c2477", "scanner": "scanner-primary", "fingerprint": "cb80470eb78fc525", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-19154ef64ea8d26d", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/contracts/search/semantic (src/app/(dashboard)/contracts/page.tsx:186)"}, "properties": {"repobilityId": "9d59cd50d6f9d122", "scanner": "scanner-primary", "fingerprint": "19154ef64ea8d26d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4924db6c88edd444", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contract-templates?limit=200&active=true (src/app/(dashboard)/contracts/page.tsx:298)"}, "properties": {"repobilityId": "fbf94039cbed6972", "scanner": "scanner-primary", "fingerprint": "4924db6c88edd444", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8496fd1aa0916231", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/contract-templates/${selectedTemplate.id}/generate (src/app/(dashboard)/contracts/page.tsx:341)"}, "properties": {"repobilityId": "257680a1cc0e4763", "scanner": "scanner-primary", "fingerprint": "8496fd1aa0916231", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7cc48201cbac865f", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/contracts/${detailContract.id}/submit-for-approval (src/app/(dashboard)/contracts/page.tsx:395)"}, "properties": {"repobilityId": "faa88a00e167863a", "scanner": "scanner-primary", "fingerprint": "7cc48201cbac865f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-46af496ed5946f1a", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contracts?${params.toString()} (src/app/(dashboard)/contracts/page.tsx:471)"}, "properties": {"repobilityId": "ce158af270237ac2", "scanner": "scanner-primary", "fingerprint": "46af496ed5946f1a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cb5e63db179f4972", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contract-tags (src/app/(dashboard)/contracts/page.tsx:485)"}, "properties": {"repobilityId": "4bcba6818375ac49", "scanner": "scanner-primary", "fingerprint": "cb5e63db179f4972", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d12025c897c87a23", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contracts/${contract.id} (src/app/(dashboard)/contracts/page.tsx:501)"}, "properties": {"repobilityId": "67c210cac6c52f06", "scanner": "scanner-primary", "fingerprint": "d12025c897c87a23", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dcf1144f3a52d998", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contracts/${contract.id}/files (src/app/(dashboard)/contracts/page.tsx:502)"}, "properties": {"repobilityId": "16f9530dac167858", "scanner": "scanner-primary", "fingerprint": "dcf1144f3a52d998", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cb0296ed88612639", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/invoices?contractId=${contract.id}&limit=50 (src/app/(dashboard)/contracts/page.tsx:503)"}, "properties": {"repobilityId": "172f3bfbffc9737b", "scanner": "scanner-primary", "fingerprint": "cb0296ed88612639", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-07fa078b54f2af6d", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/contract-tags (src/app/(dashboard)/contracts/page.tsx:525)"}, "properties": {"repobilityId": "1bb984e86f1f5738", "scanner": "scanner-primary", "fingerprint": "07fa078b54f2af6d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2155fb40bb00adad", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/contract-tags/${tagId} (src/app/(dashboard)/contracts/page.tsx:547)"}, "properties": {"repobilityId": "a442c890a91d4808", "scanner": "scanner-primary", "fingerprint": "2155fb40bb00adad", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a1e5800dee040469", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/contracts/${detailContract.id}/files (src/app/(dashboard)/contracts/page.tsx:562)"}, "properties": {"repobilityId": "78c78f12afa1d08b", "scanner": "scanner-primary", "fingerprint": "a1e5800dee040469", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-24efde6f89eb965b", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/contracts/${detailContract.id}/files/${fileId} (src/app/(dashboard)/contracts/page.tsx:581)"}, "properties": {"repobilityId": "a86c1a63895574a6", "scanner": "scanner-primary", "fingerprint": "24efde6f89eb965b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3b2444e11fa9a44d", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/contracts/${deleteId} (src/app/(dashboard)/contracts/page.tsx:597)"}, "properties": {"repobilityId": "f265af0a2ea57c60", "scanner": "scanner-primary", "fingerprint": "3b2444e11fa9a44d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c5ea2f73add745e4", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/contracts/${params.id}/reindex (src/app/(dashboard)/contracts/[id]/page.tsx:375)"}, "properties": {"repobilityId": "a3500923f44caf11", "scanner": "scanner-primary", "fingerprint": "c5ea2f73add745e4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ed94e584864511b9", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contracts/${params.id}/score-risk (src/app/(dashboard)/contracts/[id]/page.tsx:399)"}, "properties": {"repobilityId": "88916e5cbf8659f4", "scanner": "scanner-primary", "fingerprint": "ed94e584864511b9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fd95f1be76198e81", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/contracts/${params.id}/score-risk (src/app/(dashboard)/contracts/[id]/page.tsx:419)"}, "properties": {"repobilityId": "988e7d5fc83b9133", "scanner": "scanner-primary", "fingerprint": "fd95f1be76198e81", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7bf899a0b5082904", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contracts/${params.id}/redline${qs} (src/app/(dashboard)/contracts/[id]/page.tsx:451)"}, "properties": {"repobilityId": "8e22d7394b62f68a", "scanner": "scanner-primary", "fingerprint": "7bf899a0b5082904", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8e9798ef00bd91a0", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/contracts/${params.id}/redline (src/app/(dashboard)/contracts/[id]/page.tsx:480)"}, "properties": {"repobilityId": "9aea0e363e0cfdca", "scanner": "scanner-primary", "fingerprint": "8e9798ef00bd91a0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bae61492ac65bfef", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contracts/${params.id}/extract (src/app/(dashboard)/contracts/[id]/page.tsx:505)"}, "properties": {"repobilityId": "00725cb0378bf392", "scanner": "scanner-primary", "fingerprint": "bae61492ac65bfef", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d96de2f02c95439e", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/contracts/${params.id}/extract (src/app/(dashboard)/contracts/[id]/page.tsx:525)"}, "properties": {"repobilityId": "86cd18642f61d644", "scanner": "scanner-primary", "fingerprint": "d96de2f02c95439e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ca0f2abdd03f7648", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contracts/${params.id} (src/app/(dashboard)/contracts/[id]/page.tsx:548)"}, "properties": {"repobilityId": "a9b9a559a84b897e", "scanner": "scanner-primary", "fingerprint": "ca0f2abdd03f7648", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-73352bd64c752802", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contracts/${params.id}/versions (src/app/(dashboard)/contracts/[id]/page.tsx:562)"}, "properties": {"repobilityId": "3c41ec94c999f7ae", "scanner": "scanner-primary", "fingerprint": "73352bd64c752802", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4682e5c338438498", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contracts/${params.id}/esign (src/app/(dashboard)/contracts/[id]/page.tsx:588)"}, "properties": {"repobilityId": "74a2dc042052174d", "scanner": "scanner-primary", "fingerprint": "4682e5c338438498", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f0170e9c5f6e57b5", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contracts/${params.id}/deviations (src/app/(dashboard)/contracts/[id]/page.tsx:616)"}, "properties": {"repobilityId": "97c4968664504406", "scanner": "scanner-primary", "fingerprint": "f0170e9c5f6e57b5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3789831bec770ec2", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contracts/${params.id}/performance-obligations (src/app/(dashboard)/contracts/[id]/page.tsx:641)"}, "properties": {"repobilityId": "90e03ac6ec0822cb", "scanner": "scanner-primary", "fingerprint": "3789831bec770ec2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d4207ad7e76da1bf", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contracts/${params.id}/performance-obligations/${poId}/schedules (src/app/(dashboard)/contracts/[id]/page.tsx:661)"}, "properties": {"repobilityId": "88377bdd0255920a", "scanner": "scanner-primary", "fingerprint": "d4207ad7e76da1bf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8d583eed71f16a3c", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/contracts/${params.id}/performance-obligations/recalculate (src/app/(dashboard)/contracts/[id]/page.tsx:691)"}, "properties": {"repobilityId": "71197d59e1e7edc1", "scanner": "scanner-primary", "fingerprint": "8d583eed71f16a3c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-908ac4888e0b05f1", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/contracts/${params.id}/performance-obligations (src/app/(dashboard)/contracts/[id]/page.tsx:755)"}, "properties": {"repobilityId": "116d5989a2c619f4", "scanner": "scanner-primary", "fingerprint": "908ac4888e0b05f1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e5bb9fef40c15ae1", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contracts/${params.id}/milestones (src/app/(dashboard)/contracts/[id]/page.tsx:781)"}, "properties": {"repobilityId": "85f94a73361a52c2", "scanner": "scanner-primary", "fingerprint": "e5bb9fef40c15ae1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3eb780c0e1635641", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/contracts/${params.id}/milestones/${milestoneId} (src/app/(dashboard)/contracts/[id]/page.tsx:857)"}, "properties": {"repobilityId": "76e3744a721ac1d9", "scanner": "scanner-primary", "fingerprint": "3eb780c0e1635641", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e68c369bda20f73b", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/contracts/${params.id}/milestones/${milestoneId} (src/app/(dashboard)/contracts/[id]/page.tsx:877)"}, "properties": {"repobilityId": "2ce65c6d5c7f3bcc", "scanner": "scanner-primary", "fingerprint": "e68c369bda20f73b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-81c58c88abda6316", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/contracts/${params.id}/deviations/${flagId} (src/app/(dashboard)/contracts/[id]/page.tsx:894)"}, "properties": {"repobilityId": "1c5b5c6a2b8eb2d3", "scanner": "scanner-primary", "fingerprint": "81c58c88abda6316", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1ce6ca74cb20d636", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/contracts/${params.id}/deviations/rescan (src/app/(dashboard)/contracts/[id]/page.tsx:914)"}, "properties": {"repobilityId": "6acb5c41aab1ab74", "scanner": "scanner-primary", "fingerprint": "1ce6ca74cb20d636", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-49b37d76ec2b3f22", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/contracts/${params.id} (src/app/(dashboard)/contracts/[id]/page.tsx:946)"}, "properties": {"repobilityId": "388959559388b8e2", "scanner": "scanner-primary", "fingerprint": "49b37d76ec2b3f22", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-46a06f06a78c899a", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/contracts/${params.id}/submit-for-approval (src/app/(dashboard)/contracts/[id]/page.tsx:1019)"}, "properties": {"repobilityId": "6cbb8d25b4361938", "scanner": "scanner-primary", "fingerprint": "46a06f06a78c899a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f14d1a212d55fd0b", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/contracts/${params.id}/approvals/${stageOrder} (src/app/(dashboard)/contracts/[id]/page.tsx:1057)"}, "properties": {"repobilityId": "a18b2d757e0dd978", "scanner": "scanner-primary", "fingerprint": "f14d1a212d55fd0b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3795acd0f920ed9e", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/contracts/${params.id}/esign (src/app/(dashboard)/contracts/[id]/page.tsx:1151)"}, "properties": {"repobilityId": "bb7641be1f5013f6", "scanner": "scanner-primary", "fingerprint": "3795acd0f920ed9e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f5a9dec46b421d48", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/contracts/${params.id}/esign/${envelopeId}/send (src/app/(dashboard)/contracts/[id]/page.tsx:1173)"}, "properties": {"repobilityId": "6e8613f33f386064", "scanner": "scanner-primary", "fingerprint": "f5a9dec46b421d48", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a84a9d8b7c850259", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/contracts/${params.id}/amend (src/app/(dashboard)/contracts/[id]/page.tsx:1220)"}, "properties": {"repobilityId": "a8cf69edef65c818", "scanner": "scanner-primary", "fingerprint": "a84a9d8b7c850259", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a1bd8b00b7861846", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/contracts/${params.id}/create-invoice (src/app/(dashboard)/contracts/[id]/page.tsx:1339)"}, "properties": {"repobilityId": "22966dc81f4e0aa6", "scanner": "scanner-primary", "fingerprint": "a1bd8b00b7861846", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e48422b07f5d20d1", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/contracts/${id}/body (src/app/(dashboard)/contracts/[id]/editor/page.tsx:156)"}, "properties": {"repobilityId": "5964b43b4d44c334", "scanner": "scanner-primary", "fingerprint": "e48422b07f5d20d1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e03d84467600f50f", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contracts/${id}/editor (src/app/(dashboard)/contracts/[id]/editor/page.tsx:258)"}, "properties": {"repobilityId": "002809ec914e7352", "scanner": "scanner-primary", "fingerprint": "e03d84467600f50f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ee9f0c38d26f5492", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/contracts/${id}/import-docx (src/app/(dashboard)/contracts/[id]/editor/page.tsx:386)"}, "properties": {"repobilityId": "ceb47592dd027006", "scanner": "scanner-primary", "fingerprint": "ee9f0c38d26f5492", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ae162373c64167c7", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contracts/${id}/editor (src/app/(dashboard)/contracts/[id]/editor/page.tsx:393)"}, "properties": {"repobilityId": "9f0b701248ad48f2", "scanner": "scanner-primary", "fingerprint": "ae162373c64167c7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-68c36057eae11b2b", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/contracts/upload-image (src/app/(dashboard)/contracts/[id]/editor/page.tsx:460)"}, "properties": {"repobilityId": "af7b4497f97fce01", "scanner": "scanner-primary", "fingerprint": "68c36057eae11b2b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2351e26092fd2ee3", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contract-milestones?${sp} (src/app/(dashboard)/contracts/milestones/page.tsx:119)"}, "properties": {"repobilityId": "23436839e5d5d765", "scanner": "scanner-primary", "fingerprint": "2351e26092fd2ee3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-703759c58448ea92", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users/assignable (src/app/(dashboard)/contracts/templates/page.tsx:460)"}, "properties": {"repobilityId": "2f2a48b610e35064", "scanner": "scanner-primary", "fingerprint": "703759c58448ea92", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d1afab5cf9098ba7", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contract-clauses?limit=100 (src/app/(dashboard)/contracts/templates/page.tsx:468)"}, "properties": {"repobilityId": "b0649189979fb54d", "scanner": "scanner-primary", "fingerprint": "d1afab5cf9098ba7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-876d4fe674030793", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/contract-clauses/draft (src/app/(dashboard)/contracts/templates/page.tsx:673)"}, "properties": {"repobilityId": "6045f7870d3acacc", "scanner": "scanner-primary", "fingerprint": "876d4fe674030793", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-be30db08dafbf121", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/contract-clauses (src/app/(dashboard)/contracts/templates/page.tsx:702)"}, "properties": {"repobilityId": "50307ccadbe5c802", "scanner": "scanner-primary", "fingerprint": "be30db08dafbf121", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a81f067bd7c83114", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contract-templates?${params} (src/app/(dashboard)/contracts/templates/page.tsx:903)"}, "properties": {"repobilityId": "4a915bd611a25698", "scanner": "scanner-primary", "fingerprint": "a81f067bd7c83114", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d3b04d6733eec3d2", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contract-clauses?${params} (src/app/(dashboard)/contracts/templates/page.tsx:925)"}, "properties": {"repobilityId": "71122fff5f4516a6", "scanner": "scanner-primary", "fingerprint": "d3b04d6733eec3d2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4baeaead913ac55a", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/contract-templates/${deleteTemplateId} (src/app/(dashboard)/contracts/templates/page.tsx:947)"}, "properties": {"repobilityId": "f678af4927da06b6", "scanner": "scanner-primary", "fingerprint": "4baeaead913ac55a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-de050e928331210b", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/contract-clauses/${deleteClauseId} (src/app/(dashboard)/contracts/templates/page.tsx:961)"}, "properties": {"repobilityId": "71e9829d5abef344", "scanner": "scanner-primary", "fingerprint": "de050e928331210b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-08ada5d005926253", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/contract-clauses/${clauseId} (src/app/(dashboard)/contracts/templates/page.tsx:980)"}, "properties": {"repobilityId": "e794dc475e1292d6", "scanner": "scanner-primary", "fingerprint": "08ada5d005926253", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a1ff282737c7d3ca", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contract-lifecycle (src/app/(dashboard)/contracts/lifecycle/page.tsx:170)"}, "properties": {"repobilityId": "a48dadc90e73f3dd", "scanner": "scanner-primary", "fingerprint": "a1ff282737c7d3ca", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2c87be2affbaad61", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/contracts/${contractId}/approvals/${stageOrder} (src/app/(dashboard)/contracts/lifecycle/page.tsx:198)"}, "properties": {"repobilityId": "f4dba4f50a51a43d", "scanner": "scanner-primary", "fingerprint": "2c87be2affbaad61", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3e204b515d6e09d8", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contract-intake-submissions?limit=50 (src/app/(dashboard)/contracts/request/page.tsx:80)"}, "properties": {"repobilityId": "83b5fe35c6ad9b9a", "scanner": "scanner-primary", "fingerprint": "3e204b515d6e09d8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fa4524322555f427", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contract-intake-forms?isActive=true (src/app/(dashboard)/contracts/request/page.tsx:181)"}, "properties": {"repobilityId": "7a41703d8d36e2b3", "scanner": "scanner-primary", "fingerprint": "fa4524322555f427", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a15f3b52ec8ba831", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/contract-intake-forms/${selectedForm.id}/submit (src/app/(dashboard)/contracts/request/page.tsx:210)"}, "properties": {"repobilityId": "afacf11bf53d3b0e", "scanner": "scanner-primary", "fingerprint": "a15f3b52ec8ba831", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-41c5b96f4b25cd24", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/reports/ai-narrative (src/app/(dashboard)/reports/page.tsx:87)"}, "properties": {"repobilityId": "2cd439621c84463d", "scanner": "scanner-primary", "fingerprint": "41c5b96f4b25cd24", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c3cd90a197b02b7f", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/leads?status=${status}&limit=50 (src/app/(dashboard)/reports/page.tsx:235)"}, "properties": {"repobilityId": "97e0b5f4427f7b6c", "scanner": "scanner-primary", "fingerprint": "c3cd90a197b02b7f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a2094e61a61a2caf", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/reports (src/app/(dashboard)/reports/page.tsx:265)"}, "properties": {"repobilityId": "efe36472f1a408e1", "scanner": "scanner-primary", "fingerprint": "a2094e61a61a2caf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-60ce9a8c5283873b", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/reports/builder/preview (src/app/(dashboard)/reports/builder/page.tsx:285)"}, "properties": {"repobilityId": "e3230c06847c8b0c", "scanner": "scanner-primary", "fingerprint": "60ce9a8c5283873b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fb459586a279a51b", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/reports/builder (src/app/(dashboard)/reports/builder/page.tsx:317)"}, "properties": {"repobilityId": "082b05deab67d39b", "scanner": "scanner-primary", "fingerprint": "fb459586a279a51b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-da872518ba7e2e88", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/reports/builder (src/app/(dashboard)/reports/builder/page.tsx:361)"}, "properties": {"repobilityId": "afb76d9a81ddf3ef", "scanner": "scanner-primary", "fingerprint": "da872518ba7e2e88", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a78b9c5a90eb81b2", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/reports/builder/export (src/app/(dashboard)/reports/builder/page.tsx:410)"}, "properties": {"repobilityId": "da4e561a79eb4276", "scanner": "scanner-primary", "fingerprint": "a78b9c5a90eb81b2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b3d001b7563183c0", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/entitlements (src/app/(dashboard)/support/entitlements/page.tsx:94)"}, "properties": {"repobilityId": "0d24028fbd0ce7bf", "scanner": "scanner-primary", "fingerprint": "b3d001b7563183c0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1a0c6c8845477e91", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users/${session.user.id} (src/app/(dashboard)/support/agent-desktop/page.tsx:77)"}, "properties": {"repobilityId": "88da8edb5246abd7", "scanner": "scanner-primary", "fingerprint": "1a0c6c8845477e91", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6f1d15aa9cf0bb2b", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/users/me/availability (src/app/(dashboard)/support/agent-desktop/page.tsx:95)"}, "properties": {"repobilityId": "92c092867204eb85", "scanner": "scanner-primary", "fingerprint": "6f1d15aa9cf0bb2b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-095d9bc3dafaae8d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/tickets?limit=100 (src/app/(dashboard)/support/agent-desktop/page.tsx:113)"}, "properties": {"repobilityId": "d070b74e787ad4c1", "scanner": "scanner-primary", "fingerprint": "095d9bc3dafaae8d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e505c926e90f01af", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users?limit=50 (src/app/(dashboard)/support/agent-desktop/page.tsx:114)"}, "properties": {"repobilityId": "bbb06fffb7954720", "scanner": "scanner-primary", "fingerprint": "e505c926e90f01af", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-78b5738b8243d82d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/calls?${params} (src/app/(dashboard)/support/voip/page.tsx:88)"}, "properties": {"repobilityId": "20f84aed2d6c3965", "scanner": "scanner-primary", "fingerprint": "78b5738b8243d82d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-54130cd7d507c2bb", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/calls/test (src/app/(dashboard)/support/voip/page.tsx:105)"}, "properties": {"repobilityId": "34ad61246c8a0507", "scanner": "scanner-primary", "fingerprint": "54130cd7d507c2bb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5486f93cef48bf24", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/calendar/agent?from=${from}&to=${to} (src/app/(dashboard)/support/calendar/page.tsx:112)"}, "properties": {"repobilityId": "fec7e0bd6bbcccc5", "scanner": "scanner-primary", "fingerprint": "5486f93cef48bf24", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f1b8b7a26d259e0e", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/conversation-insights?days=${d} (src/app/(dashboard)/voip/insights/page.tsx:186)"}, "properties": {"repobilityId": "5054de44dbbca768", "scanner": "scanner-primary", "fingerprint": "f1b8b7a26d259e0e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1ab31b738d2de7b9", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/products (src/app/(dashboard)/products/page.tsx:88)"}, "properties": {"repobilityId": "8248fbf314070a1f", "scanner": "scanner-primary", "fingerprint": "1ab31b738d2de7b9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-878ccbbcb86dd3dd", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/products/${editItem.id} (src/app/(dashboard)/products/page.tsx:135)"}, "properties": {"repobilityId": "1a746a9bb5120277", "scanner": "scanner-primary", "fingerprint": "878ccbbcb86dd3dd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e3c0376b28a426e9", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/products (src/app/(dashboard)/products/page.tsx:137)"}, "properties": {"repobilityId": "ec3ed3395fb8dce6", "scanner": "scanner-primary", "fingerprint": "e3c0376b28a426e9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c4bcf8e8a28a37ba", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/products/${deleteItem.id} (src/app/(dashboard)/products/page.tsx:147)"}, "properties": {"repobilityId": "cc8997533bafc8ac", "scanner": "scanner-primary", "fingerprint": "c4bcf8e8a28a37ba", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-812ee40d6c4d82e1", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/products/${id} (src/app/(dashboard)/products/[id]/page.tsx:73)"}, "properties": {"repobilityId": "ec7758ca86a90f34", "scanner": "scanner-primary", "fingerprint": "812ee40d6c4d82e1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3265909e9604c90e", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/products/${id} (src/app/(dashboard)/products/[id]/page.tsx:102)"}, "properties": {"repobilityId": "f77873048f1ecf8c", "scanner": "scanner-primary", "fingerprint": "3265909e9604c90e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d9f0a205101ffa59", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/products/${id} (src/app/(dashboard)/products/[id]/page.tsx:123)"}, "properties": {"repobilityId": "9b441c3cf9237e2e", "scanner": "scanner-primary", "fingerprint": "d9f0a205101ffa59", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ee41a068b610a7ed", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/attribution-models/${m.id}/influences (src/app/(dashboard)/attribution/models/page.tsx:280)"}, "properties": {"repobilityId": "66f3f4dade323d0a", "scanner": "scanner-primary", "fingerprint": "ee41a068b610a7ed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c3aea3da34d7146f", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/attribution-models (src/app/(dashboard)/attribution/models/page.tsx:302)"}, "properties": {"repobilityId": "841113447b873212", "scanner": "scanner-primary", "fingerprint": "c3aea3da34d7146f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1eb3dfd42e5b3379", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/attribution-models/${editingId} (src/app/(dashboard)/attribution/models/page.tsx:410)"}, "properties": {"repobilityId": "4d6038fb12b53c78", "scanner": "scanner-primary", "fingerprint": "1eb3dfd42e5b3379", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7a267baab2bbcecb", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/attribution-models (src/app/(dashboard)/attribution/models/page.tsx:419)"}, "properties": {"repobilityId": "4b37ccab6fb8ae1c", "scanner": "scanner-primary", "fingerprint": "7a267baab2bbcecb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5229eadc70a91ba0", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/attribution-models/${m.id} (src/app/(dashboard)/attribution/models/page.tsx:446)"}, "properties": {"repobilityId": "bca9e6f8d44524bb", "scanner": "scanner-primary", "fingerprint": "5229eadc70a91ba0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-924ad8a360b60df4", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/attribution-models/${m.id} (src/app/(dashboard)/attribution/models/page.tsx:478)"}, "properties": {"repobilityId": "41d66c3af87e3728", "scanner": "scanner-primary", "fingerprint": "924ad8a360b60df4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c2f3e27faaf01223", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/attribution-models/${m.id}/recompute (src/app/(dashboard)/attribution/models/page.tsx:496)"}, "properties": {"repobilityId": "20d49f1941710d3d", "scanner": "scanner-primary", "fingerprint": "c2f3e27faaf01223", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2aa718eea0bffef9", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/segments?limit=500 (src/app/(dashboard)/segments/page.tsx:86)"}, "properties": {"repobilityId": "ad4da23e9595bcf6", "scanner": "scanner-primary", "fingerprint": "2aa718eea0bffef9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b3ef1833713a6409", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contacts?limit=1 (src/app/(dashboard)/segments/page.tsx:89)"}, "properties": {"repobilityId": "9d9b80eac1c7faaf", "scanner": "scanner-primary", "fingerprint": "b3ef1833713a6409", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dcd416e907814150", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/segments/${deleteId} (src/app/(dashboard)/segments/page.tsx:104)"}, "properties": {"repobilityId": "647660277b994ce7", "scanner": "scanner-primary", "fingerprint": "dcd416e907814150", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d35c0b924338c1da", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/citizens?${params} (src/app/(dashboard)/public-sector/page.tsx:66)"}, "properties": {"repobilityId": "01af96a6148b6752", "scanner": "scanner-primary", "fingerprint": "d35c0b924338c1da", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-18a7d51aab1818e7", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/public-sector-cases?limit=1 (src/app/(dashboard)/public-sector/page.tsx:92)"}, "properties": {"repobilityId": "2ccec7ee31141a02", "scanner": "scanner-primary", "fingerprint": "18a7d51aab1818e7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c0ea1981ab01d610", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/public-sector-licenses?limit=1 (src/app/(dashboard)/public-sector/page.tsx:93)"}, "properties": {"repobilityId": "9e47365cefed5028", "scanner": "scanner-primary", "fingerprint": "c0ea1981ab01d610", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6614c80f24893bba", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/public-sector-cases?${params} (src/app/(dashboard)/public-sector/cases/page.tsx:86)"}, "properties": {"repobilityId": "f80a104ed0663230", "scanner": "scanner-primary", "fingerprint": "6614c80f24893bba", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-410c7ee8ef508f53", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/public-sector-licenses?${params} (src/app/(dashboard)/public-sector/licenses/page.tsx:75)"}, "properties": {"repobilityId": "50e91d52f8603142", "scanner": "scanner-primary", "fingerprint": "410c7ee8ef508f53", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-39fdd77ec537ae0e", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/public-sector-grants?${params} (src/app/(dashboard)/public-sector/grants/page.tsx:78)"}, "properties": {"repobilityId": "c8c7ee4fa3fbf996", "scanner": "scanner-primary", "fingerprint": "39fdd77ec537ae0e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7aa718b3ece96fff", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/inbox${params} (src/app/(dashboard)/inbox/page.tsx:152)"}, "properties": {"repobilityId": "7c5f5e24f5ad7ebd", "scanner": "scanner-primary", "fingerprint": "7aa718b3ece96fff", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e5445a8a9891c4ce", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/ticket-macros (src/app/(dashboard)/inbox/page.tsx:207)"}, "properties": {"repobilityId": "f4a95ded355101d8", "scanner": "scanner-primary", "fingerprint": "e5445a8a9891c4ce", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ffa8773f1c8d0d2d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users/assignable (src/app/(dashboard)/inbox/page.tsx:216)"}, "properties": {"repobilityId": "29b07a90918ec9ca", "scanner": "scanner-primary", "fingerprint": "ffa8773f1c8d0d2d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-56d8604d76d3ec4e", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/inbox/folders (src/app/(dashboard)/inbox/page.tsx:225)"}, "properties": {"repobilityId": "5a41e278aea3f1a7", "scanner": "scanner-primary", "fingerprint": "56d8604d76d3ec4e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-061b1ba863c10413", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/inbox/folders (src/app/(dashboard)/inbox/page.tsx:237)"}, "properties": {"repobilityId": "e9fb72f0c947651b", "scanner": "scanner-primary", "fingerprint": "061b1ba863c10413", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0be7f57f24b7f5b3", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/inbox/folders/${id} (src/app/(dashboard)/inbox/page.tsx:260)"}, "properties": {"repobilityId": "c468bd259e9f5e63", "scanner": "scanner-primary", "fingerprint": "0be7f57f24b7f5b3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-124170dbd85687fd", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/inbox/conversations/${scid} (src/app/(dashboard)/inbox/page.tsx:282)"}, "properties": {"repobilityId": "6c2b69432752db32", "scanner": "scanner-primary", "fingerprint": "124170dbd85687fd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-790c2759d0e419f6", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contacts/${cid} (src/app/(dashboard)/inbox/page.tsx:417)"}, "properties": {"repobilityId": "5e213aedbc61d1be", "scanner": "scanner-primary", "fingerprint": "790c2759d0e419f6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f0b41864e9a81cc5", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/inbox/conversations/${scid}/notes (src/app/(dashboard)/inbox/page.tsx:433)"}, "properties": {"repobilityId": "322c196670d3fee2", "scanner": "scanner-primary", "fingerprint": "f0b41864e9a81cc5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9ffbe50fd17c2720", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/contacts/${cid} (src/app/(dashboard)/inbox/page.tsx:448)"}, "properties": {"repobilityId": "b00e9eb7d1bc1478", "scanner": "scanner-primary", "fingerprint": "9ffbe50fd17c2720", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1b1c8aaef63ef026", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/inbox/conversations/${scid} (src/app/(dashboard)/inbox/page.tsx:532)"}, "properties": {"repobilityId": "3286d4d26bb7c798", "scanner": "scanner-primary", "fingerprint": "1b1c8aaef63ef026", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9017706570067d2b", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/inbox/conversations/${scid} (src/app/(dashboard)/inbox/page.tsx:557)"}, "properties": {"repobilityId": "700a874322a045b6", "scanner": "scanner-primary", "fingerprint": "9017706570067d2b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-51e09245c67b941a", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/inbox/conversations/${scid} (src/app/(dashboard)/inbox/page.tsx:583)"}, "properties": {"repobilityId": "747219d6fa8414d9", "scanner": "scanner-primary", "fingerprint": "51e09245c67b941a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ce508c83815a30a2", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/inbox/conversations/${scid}/participants/${userId} (src/app/(dashboard)/inbox/page.tsx:640)"}, "properties": {"repobilityId": "2ce2599290adc0a7", "scanner": "scanner-primary", "fingerprint": "ce508c83815a30a2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cad5ae8f2af033b7", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/notifications (src/app/(dashboard)/inbox/page.tsx:656)"}, "properties": {"repobilityId": "72e52e5b3a265809", "scanner": "scanner-primary", "fingerprint": "cad5ae8f2af033b7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-04447fe94c4cbb92", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/inbox (src/app/(dashboard)/inbox/page.tsx:669)"}, "properties": {"repobilityId": "cd6e930fdbe16b86", "scanner": "scanner-primary", "fingerprint": "04447fe94c4cbb92", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0a468fd475328012", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/inbox/upload (src/app/(dashboard)/inbox/page.tsx:683)"}, "properties": {"repobilityId": "69a1f624d03e7dcd", "scanner": "scanner-primary", "fingerprint": "0a468fd475328012", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-32791b477c44004d", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/inbox (src/app/(dashboard)/inbox/page.tsx:726)"}, "properties": {"repobilityId": "c1e89a2dc8742c08", "scanner": "scanner-primary", "fingerprint": "32791b477c44004d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6a84774b84a7b0cf", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/inbox/analytics?${qs} (src/app/(dashboard)/inbox/analytics/page.tsx:87)"}, "properties": {"repobilityId": "3a189e0a41df9a2a", "scanner": "scanner-primary", "fingerprint": "6a84774b84a7b0cf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2212433d815a5654", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/inbox/analytics/frt?${qs} (src/app/(dashboard)/inbox/analytics/page.tsx:88)"}, "properties": {"repobilityId": "cbdfa05a826e8990", "scanner": "scanner-primary", "fingerprint": "2212433d815a5654", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-14d177c13aaa865e", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/inbox/analytics/team?${qs} (src/app/(dashboard)/inbox/analytics/page.tsx:89)"}, "properties": {"repobilityId": "06db7cc74a8f5e76", "scanner": "scanner-primary", "fingerprint": "14d177c13aaa865e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9c8caa405f6e90c0", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/inbox/analytics/temporal?${qs} (src/app/(dashboard)/inbox/analytics/page.tsx:90)"}, "properties": {"repobilityId": "851c57379f48cd3f", "scanner": "scanner-primary", "fingerprint": "9c8caa405f6e90c0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-49ac1334f6f04716", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/inbox/analytics/conversations?${params.toString()} (src/app/(dashboard)/inbox/analytics/page.tsx:127)"}, "properties": {"repobilityId": "352be91a4542f1ea", "scanner": "scanner-primary", "fingerprint": "49ac1334f6f04716", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0bac8d1ccd48c193", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/inbox${params} (src/app/(dashboard)/inbox/legacy/page.tsx:151)"}, "properties": {"repobilityId": "f6fec6e7137dd262", "scanner": "scanner-primary", "fingerprint": "0bac8d1ccd48c193", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-13f6d624569743bc", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contacts?limit=500 (src/app/(dashboard)/inbox/legacy/page.tsx:177)"}, "properties": {"repobilityId": "68ce712c4f2c9d4b", "scanner": "scanner-primary", "fingerprint": "13f6d624569743bc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-52aab4dbbec08205", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/inbox (src/app/(dashboard)/inbox/legacy/page.tsx:238)"}, "properties": {"repobilityId": "4896b63dcc24e616", "scanner": "scanner-primary", "fingerprint": "52aab4dbbec08205", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4965feb278d72a85", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/inbox (src/app/(dashboard)/inbox/legacy/page.tsx:263)"}, "properties": {"repobilityId": "00ae16461d926317", "scanner": "scanner-primary", "fingerprint": "4965feb278d72a85", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-08ddb10fd58d23f9", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/inbox (src/app/(dashboard)/inbox/legacy/page.tsx:296)"}, "properties": {"repobilityId": "939a1fa99089a90e", "scanner": "scanner-primary", "fingerprint": "08ddb10fd58d23f9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c5e611c692fa6082", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/inbox (src/app/(dashboard)/inbox/legacy/page.tsx:313)"}, "properties": {"repobilityId": "5fe8da7e7e294705", "scanner": "scanner-primary", "fingerprint": "c5e611c692fa6082", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-53d6b803b115842f", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/web-chat/sessions?${params} (src/app/(dashboard)/inbox/web-chat/page.tsx:133)"}, "properties": {"repobilityId": "f9d99f8aabfc3a0b", "scanner": "scanner-primary", "fingerprint": "53d6b803b115842f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6edcba251bc4460f", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/web-chat/sessions/${id} (src/app/(dashboard)/inbox/web-chat/page.tsx:158)"}, "properties": {"repobilityId": "b74c67c2656598d0", "scanner": "scanner-primary", "fingerprint": "6edcba251bc4460f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-918b975b0901b4b1", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users (src/app/(dashboard)/inbox/web-chat/page.tsx:169)"}, "properties": {"repobilityId": "850388543427e730", "scanner": "scanner-primary", "fingerprint": "918b975b0901b4b1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c1baeee727371750", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/web-chat/sessions/${selectedId}/typing (src/app/(dashboard)/inbox/web-chat/page.tsx:187)"}, "properties": {"repobilityId": "c7c059477502c91a", "scanner": "scanner-primary", "fingerprint": "c1baeee727371750", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cd67acd50e0df637", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/web-chat/sessions/${selectedId}/messages (src/app/(dashboard)/inbox/web-chat/page.tsx:210)"}, "properties": {"repobilityId": "dc50bbfa732c3cf3", "scanner": "scanner-primary", "fingerprint": "cd67acd50e0df637", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8b38934bddcdd685", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/web-chat/sessions/${id} (src/app/(dashboard)/inbox/web-chat/page.tsx:226)"}, "properties": {"repobilityId": "bd56ebc19064f8d1", "scanner": "scanner-primary", "fingerprint": "8b38934bddcdd685", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fa7c22f84ab9c085", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/web-chat/sessions/${id} (src/app/(dashboard)/inbox/web-chat/page.tsx:235)"}, "properties": {"repobilityId": "fa26f584ebbad13b", "scanner": "scanner-primary", "fingerprint": "fa7c22f84ab9c085", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-687b779de3e2860a", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/web-chat/sessions/${selectedId}/escalate (src/app/(dashboard)/inbox/web-chat/page.tsx:246)"}, "properties": {"repobilityId": "9bf86f5487695775", "scanner": "scanner-primary", "fingerprint": "687b779de3e2860a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-32cbbdacfa1d8109", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/web-chat/sessions/${selectedId}/typing (src/app/(dashboard)/inbox/web-chat/page.tsx:415)"}, "properties": {"repobilityId": "badddb19f31c89f2", "scanner": "scanner-primary", "fingerprint": "32cbbdacfa1d8109", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4391e3ed5d110345", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/inbox/chatbot-rules (src/app/(dashboard)/inbox/chatbot-rules/page.tsx:84)"}, "properties": {"repobilityId": "427bf5f581fced63", "scanner": "scanner-primary", "fingerprint": "4391e3ed5d110345", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8ad39270e5209074", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/settings/ai-features (src/app/(dashboard)/inbox/chatbot-rules/page.tsx:85)"}, "properties": {"repobilityId": "1bee29821e7c46f7", "scanner": "scanner-primary", "fingerprint": "8ad39270e5209074", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9fdc528ca68694c5", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/settings/ai-features (src/app/(dashboard)/inbox/chatbot-rules/page.tsx:104)"}, "properties": {"repobilityId": "57a66f0769f806a3", "scanner": "scanner-primary", "fingerprint": "9fdc528ca68694c5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-21ca5426d4704279", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/inbox/chatbot-rules (src/app/(dashboard)/inbox/chatbot-rules/page.tsx:124)"}, "properties": {"repobilityId": "e85aa1084737beb6", "scanner": "scanner-primary", "fingerprint": "21ca5426d4704279", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fa4840e2a6e75bb1", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/inbox/chatbot-rules/${id} (src/app/(dashboard)/inbox/chatbot-rules/page.tsx:146)"}, "properties": {"repobilityId": "7e207faca9448ab1", "scanner": "scanner-primary", "fingerprint": "fa4840e2a6e75bb1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0549cd8bc0fb651c", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/inbox/chatbot-rules/${id} (src/app/(dashboard)/inbox/chatbot-rules/page.tsx:154)"}, "properties": {"repobilityId": "77b1c792f125519b", "scanner": "scanner-primary", "fingerprint": "0549cd8bc0fb651c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b6a63665227c3b6f", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/social/accounts (src/app/(dashboard)/social-monitoring/page.tsx:105)"}, "properties": {"repobilityId": "f77072e7a2ed6e59", "scanner": "scanner-primary", "fingerprint": "b6a63665227c3b6f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bc6a7a5799646f41", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/social/mentions?${params} (src/app/(dashboard)/social-monitoring/page.tsx:115)"}, "properties": {"repobilityId": "735dff285590a923", "scanner": "scanner-primary", "fingerprint": "bc6a7a5799646f41", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-87d0eafddd610714", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/social/accounts (src/app/(dashboard)/social-monitoring/page.tsx:150)"}, "properties": {"repobilityId": "2164de09c3dfbd92", "scanner": "scanner-primary", "fingerprint": "87d0eafddd610714", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b2a62e06a579c4ed", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/social/accounts/${id} (src/app/(dashboard)/social-monitoring/page.tsx:169)"}, "properties": {"repobilityId": "dfca4a95c8c70530", "scanner": "scanner-primary", "fingerprint": "b2a62e06a579c4ed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-645110756e1f2948", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/social/accounts/${a.id}/poll (src/app/(dashboard)/social-monitoring/page.tsx:180)"}, "properties": {"repobilityId": "f07ae4f8a56d724c", "scanner": "scanner-primary", "fingerprint": "645110756e1f2948", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e810a7720d7dfdb0", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/social/enable-inbox (src/app/(dashboard)/social-monitoring/page.tsx:208)"}, "properties": {"repobilityId": "0328d81d4874f25e", "scanner": "scanner-primary", "fingerprint": "e810a7720d7dfdb0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6222c70411a8fa0a", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/social/enable-inbox (src/app/(dashboard)/social-monitoring/page.tsx:220)"}, "properties": {"repobilityId": "385467bf56382c24", "scanner": "scanner-primary", "fingerprint": "6222c70411a8fa0a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5e4535b9cd874ff2", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/social/import-conversations (src/app/(dashboard)/social-monitoring/page.tsx:242)"}, "properties": {"repobilityId": "6eb010ac02e14d1e", "scanner": "scanner-primary", "fingerprint": "5e4535b9cd874ff2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-aad95006739fbc71", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/social/accounts/${id}/poll (src/app/(dashboard)/social-monitoring/page.tsx:257)"}, "properties": {"repobilityId": "70a9f714e545f974", "scanner": "scanner-primary", "fingerprint": "aad95006739fbc71", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-513f7f2d5d2cc81b", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/social/mentions (src/app/(dashboard)/social-monitoring/page.tsx:269)"}, "properties": {"repobilityId": "920e9776d9d8192d", "scanner": "scanner-primary", "fingerprint": "513f7f2d5d2cc81b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-906cb598254a639c", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/social/mentions/${id}/convert-to-ticket (src/app/(dashboard)/social-monitoring/page.tsx:278)"}, "properties": {"repobilityId": "a45762534f52141f", "scanner": "scanner-primary", "fingerprint": "906cb598254a639c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6bffa6527ff5ab9d", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/social/mentions/${m.id}/convert-to-lead (src/app/(dashboard)/social-monitoring/page.tsx:317)"}, "properties": {"repobilityId": "79812d9116755638", "scanner": "scanner-primary", "fingerprint": "6bffa6527ff5ab9d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2c7fbf7753b6670c", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/social/mentions/${id}/reply (src/app/(dashboard)/social-monitoring/page.tsx:333)"}, "properties": {"repobilityId": "0efdd4aebe033cba", "scanner": "scanner-primary", "fingerprint": "2c7fbf7753b6670c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-804386bf96610f4b", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/social/mentions/${id}/convert-to-task (src/app/(dashboard)/social-monitoring/page.tsx:352)"}, "properties": {"repobilityId": "008c36df5d9f7131", "scanner": "scanner-primary", "fingerprint": "804386bf96610f4b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7f02a350984d02eb", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/social/accounts/${editKeywordsId} (src/app/(dashboard)/social-monitoring/page.tsx:374)"}, "properties": {"repobilityId": "83c9f268d037597a", "scanner": "scanner-primary", "fingerprint": "7f02a350984d02eb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5b20cd206724ee1e", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/quotes?${params.toString()} (src/app/(dashboard)/quotes/page.tsx:84)"}, "properties": {"repobilityId": "87223b6acbee3568", "scanner": "scanner-primary", "fingerprint": "5b20cd206724ee1e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d3616fc6943e104a", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/quotes/${quoteId} (src/app/(dashboard)/quotes/[id]/page.tsx:155)"}, "properties": {"repobilityId": "41f45bf555846328", "scanner": "scanner-primary", "fingerprint": "d3616fc6943e104a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-04bfc46c18250d3a", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/quotes/${quoteId} (src/app/(dashboard)/quotes/[id]/page.tsx:232)"}, "properties": {"repobilityId": "9c6468e7690c0b99", "scanner": "scanner-primary", "fingerprint": "04bfc46c18250d3a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-80395fdaf3f2665d", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/quotes/${quoteId} (src/app/(dashboard)/quotes/[id]/page.tsx:268)"}, "properties": {"repobilityId": "ac736587fdf90cb3", "scanner": "scanner-primary", "fingerprint": "80395fdaf3f2665d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9b73d1ab0f641ad0", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/quotes/${quoteId} (src/app/(dashboard)/quotes/[id]/page.tsx:304)"}, "properties": {"repobilityId": "16ff1955c9224287", "scanner": "scanner-primary", "fingerprint": "9b73d1ab0f641ad0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f5adf0bfbc618f47", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/lead-scoring (src/app/(dashboard)/ai-scoring/page.tsx:59)"}, "properties": {"repobilityId": "1fee087b42d2c357", "scanner": "scanner-primary", "fingerprint": "f5adf0bfbc618f47", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-48a4b1b4d9848cdc", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/lead-scoring (src/app/(dashboard)/ai-scoring/page.tsx:72)"}, "properties": {"repobilityId": "b3a9d748357e6aa8", "scanner": "scanner-primary", "fingerprint": "48a4b1b4d9848cdc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d091ea881cec295b", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/lead-scoring (src/app/(dashboard)/ai-scoring/page.tsx:89)"}, "properties": {"repobilityId": "f919dba6af4b240a", "scanner": "scanner-primary", "fingerprint": "d091ea881cec295b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-95e6134ce673e5cf", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/pipelines (src/app/(dashboard)/deals/page.tsx:108)"}, "properties": {"repobilityId": "db1e54da589adf78", "scanner": "scanner-primary", "fingerprint": "95e6134ce673e5cf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c6e8da51226e337f", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/deals/bulk (src/app/(dashboard)/deals/page.tsx:143)"}, "properties": {"repobilityId": "46d2cfea74664e8a", "scanner": "scanner-primary", "fingerprint": "c6e8da51226e337f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-48218414bc07e1da", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/deals/${dealId} (src/app/(dashboard)/deals/page.tsx:176)"}, "properties": {"repobilityId": "2cbcae0342393816", "scanner": "scanner-primary", "fingerprint": "48218414bc07e1da", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0f54f9de1349fb95", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/deals/ai-analysis (src/app/(dashboard)/deals/page.tsx:233)"}, "properties": {"repobilityId": "8e95acace8657b10", "scanner": "scanner-primary", "fingerprint": "0f54f9de1349fb95", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-62d61eb3ac0b1ba6", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/deals/${dealId} (src/app/(dashboard)/deals/page.tsx:308)"}, "properties": {"repobilityId": "32bf927a090b5a45", "scanner": "scanner-primary", "fingerprint": "62d61eb3ac0b1ba6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7bb61e223c01f97d", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/deals/${deleteId} (src/app/(dashboard)/deals/page.tsx:334)"}, "properties": {"repobilityId": "d3c673eece1c1261", "scanner": "scanner-primary", "fingerprint": "7bb61e223c01f97d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1c62b7ddb47083f4", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/deals/${dealId}/next-steps (src/app/(dashboard)/deals/page.tsx:964)"}, "properties": {"repobilityId": "d734dd964eb02848", "scanner": "scanner-primary", "fingerprint": "1c62b7ddb47083f4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-150971f21b84832d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/analytics/deal-prediction?dealId=${dealId} (src/app/(dashboard)/deals/[id]/page.tsx:119)"}, "properties": {"repobilityId": "aa8085c4442fa3e4", "scanner": "scanner-primary", "fingerprint": "150971f21b84832d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fd515286c55f136a", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/ai/next-actions?limit=3 (src/app/(dashboard)/deals/[id]/page.tsx:120)"}, "properties": {"repobilityId": "0947c921f5f8f1f6", "scanner": "scanner-primary", "fingerprint": "fd515286c55f136a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-09e4413be53a8843", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/deals/${dealId}/next-steps (src/app/(dashboard)/deals/[id]/page.tsx:285)"}, "properties": {"repobilityId": "d6cc605addedc920", "scanner": "scanner-primary", "fingerprint": "09e4413be53a8843", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-987f5c77ca3d67d1", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/deals/${dealId}/next-steps (src/app/(dashboard)/deals/[id]/page.tsx:294)"}, "properties": {"repobilityId": "976ddf73d1ffa033", "scanner": "scanner-primary", "fingerprint": "987f5c77ca3d67d1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3d347abdec6141d7", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/deals/${id} (src/app/(dashboard)/deals/[id]/page.tsx:409)"}, "properties": {"repobilityId": "8e6de272fb0b0423", "scanner": "scanner-primary", "fingerprint": "3d347abdec6141d7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b6827d97cf8f6915", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/deals/${id}/next-steps (src/app/(dashboard)/deals/[id]/page.tsx:418)"}, "properties": {"repobilityId": "b4c57f2b8eecbbcb", "scanner": "scanner-primary", "fingerprint": "b6827d97cf8f6915", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5604d94051a0f30e", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/deals/${id}/offers (src/app/(dashboard)/deals/[id]/page.tsx:427)"}, "properties": {"repobilityId": "5f318559a34beb4f", "scanner": "scanner-primary", "fingerprint": "5604d94051a0f30e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cf6fc4c93fb47553", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/invoices?dealId=${id}&limit=1 (src/app/(dashboard)/deals/[id]/page.tsx:428)"}, "properties": {"repobilityId": "397a1b884333a612", "scanner": "scanner-primary", "fingerprint": "cf6fc4c93fb47553", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-26f49133bbe09fae", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/pipelines/${pipelineId} (src/app/(dashboard)/deals/[id]/page.tsx:440)"}, "properties": {"repobilityId": "dba0e428efda2c98", "scanner": "scanner-primary", "fingerprint": "26f49133bbe09fae", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-342926285b34931e", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/deals/${id} (src/app/(dashboard)/deals/[id]/page.tsx:454)"}, "properties": {"repobilityId": "d2207fd4ff2b4a05", "scanner": "scanner-primary", "fingerprint": "342926285b34931e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c335da2700e6c218", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/pipeline-stages?target=${newStage} (src/app/(dashboard)/deals/[id]/page.tsx:471)"}, "properties": {"repobilityId": "c59c3d9f63a93940", "scanner": "scanner-primary", "fingerprint": "c335da2700e6c218", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-13b74fe160eb8de2", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/pipeline-stages/${targetStage.id}/rules (src/app/(dashboard)/deals/[id]/page.tsx:477)"}, "properties": {"repobilityId": "8dbc5af18c405d4c", "scanner": "scanner-primary", "fingerprint": "13b74fe160eb8de2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8fd4c690b228a588", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/deals/${id} (src/app/(dashboard)/deals/[id]/page.tsx:507)"}, "properties": {"repobilityId": "b29d03838b9ad563", "scanner": "scanner-primary", "fingerprint": "8fd4c690b228a588", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a86b54587fa016a5", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/deals/${id} (src/app/(dashboard)/deals/[id]/page.tsx:528)"}, "properties": {"repobilityId": "2c7cc2996d99854c", "scanner": "scanner-primary", "fingerprint": "a86b54587fa016a5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f013fe2d80ce219d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/forms?limit=200 (src/app/(dashboard)/forms/page.tsx:46)"}, "properties": {"repobilityId": "dcac4b768af9c375", "scanner": "scanner-primary", "fingerprint": "f013fe2d80ce219d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8d6f6ad2219826cb", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/forms (src/app/(dashboard)/forms/page.tsx:162)"}, "properties": {"repobilityId": "4e93c34583a9664c", "scanner": "scanner-primary", "fingerprint": "8d6f6ad2219826cb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c8d0d205559b130b", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/campaigns?limit=500 (src/app/(dashboard)/forms/[id]/page.tsx:53)"}, "properties": {"repobilityId": "d8ee16f8d50928aa", "scanner": "scanner-primary", "fingerprint": "c8d0d205559b130b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d7543dc17f124b02", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/forms/${id} (src/app/(dashboard)/forms/[id]/page.tsx:64)"}, "properties": {"repobilityId": "7249954c8bb18923", "scanner": "scanner-primary", "fingerprint": "d7543dc17f124b02", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1e27612652563750", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/forms/${id} (src/app/(dashboard)/forms/[id]/page.tsx:105)"}, "properties": {"repobilityId": "1856fa6da60ff2b8", "scanner": "scanner-primary", "fingerprint": "1e27612652563750", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e10dc3c1315146d4", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/forms/${id}/publish (src/app/(dashboard)/forms/[id]/page.tsx:145)"}, "properties": {"repobilityId": "0f2b7af8449412f3", "scanner": "scanner-primary", "fingerprint": "e10dc3c1315146d4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cb1d06e1fd55ea9a", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/divisions (src/app/(dashboard)/boards/page.tsx:98)"}, "properties": {"repobilityId": "26b60cf1fdaddaa4", "scanner": "scanner-primary", "fingerprint": "cb1d06e1fd55ea9a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5abfb70af1102888", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users/assignable (src/app/(dashboard)/boards/page.tsx:210)"}, "properties": {"repobilityId": "9b7704ca38155e54", "scanner": "scanner-primary", "fingerprint": "5abfb70af1102888", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-34e9dd2422631bfa", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/divisions (src/app/(dashboard)/boards/page.tsx:227)"}, "properties": {"repobilityId": "6df8ec88c92e1509", "scanner": "scanner-primary", "fingerprint": "34e9dd2422631bfa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8521a4799c65fa27", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/board-permissions (src/app/(dashboard)/boards/page.tsx:242)"}, "properties": {"repobilityId": "cd8df5763a1d3470", "scanner": "scanner-primary", "fingerprint": "8521a4799c65fa27", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-19da9446c2a2a0a9", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users/assignable (src/app/(dashboard)/boards/page.tsx:344)"}, "properties": {"repobilityId": "c0dcf9b4ac0017d8", "scanner": "scanner-primary", "fingerprint": "19da9446c2a2a0a9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-92ceeba7aa5d555a", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/board-permissions?divisionId=${encodeURIComponent(division.id)} (src/app/(dashboard)/boards/page.tsx:345)"}, "properties": {"repobilityId": "b8da9e013cbb2963", "scanner": "scanner-primary", "fingerprint": "92ceeba7aa5d555a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1f0ff55118d407b2", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/divisions/${division.id}/columns (src/app/(dashboard)/boards/page.tsx:371)"}, "properties": {"repobilityId": "c0615d444aaa79e6", "scanner": "scanner-primary", "fingerprint": "1f0ff55118d407b2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9e55bc9eff137cd9", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/divisions/${division.id} (src/app/(dashboard)/boards/page.tsx:385)"}, "properties": {"repobilityId": "edc62376fc506bd3", "scanner": "scanner-primary", "fingerprint": "9e55bc9eff137cd9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6f177886955d602c", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/board-permissions (src/app/(dashboard)/boards/page.tsx:401)"}, "properties": {"repobilityId": "4eaf3a31e42ac902", "scanner": "scanner-primary", "fingerprint": "6f177886955d602c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2d15aca68bcdc34f", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/board-permissions?userId=${encodeURIComponent(userId)}&divisionId=${encodeURIComponent(division.id)} (src/app/(dashboard)/boards/page.tsx:408)"}, "properties": {"repobilityId": "5ede4ba23b9ae27f", "scanner": "scanner-primary", "fingerprint": "2d15aca68bcdc34f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-48ecee487bdef358", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/divisions/${division.id}/import-tasks (src/app/(dashboard)/boards/page.tsx:434)"}, "properties": {"repobilityId": "19016952163e1871", "scanner": "scanner-primary", "fingerprint": "48ecee487bdef358", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bc0adab96c665c36", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/divisions/${division.id} (src/app/(dashboard)/boards/page.tsx:455)"}, "properties": {"repobilityId": "e7d14d0047d58ffe", "scanner": "scanner-primary", "fingerprint": "bc0adab96c665c36", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-44d245c23dfb0e4d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/tasks?divisionId=${encodeURIComponent(divisionId)}&limit=200 (src/app/(dashboard)/boards/[divisionId]/page.tsx:215)"}, "properties": {"repobilityId": "975827e20ce3c934", "scanner": "scanner-primary", "fingerprint": "44d245c23dfb0e4d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-58bb8c280a92c8a1", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/divisions (src/app/(dashboard)/boards/[divisionId]/page.tsx:226)"}, "properties": {"repobilityId": "3ea2fa7f37f73dec", "scanner": "scanner-primary", "fingerprint": "58bb8c280a92c8a1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-56ac5a1ca8d20b56", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/tasks/${taskId} (src/app/(dashboard)/boards/[divisionId]/page.tsx:340)"}, "properties": {"repobilityId": "4923d0b6fa8ae98e", "scanner": "scanner-primary", "fingerprint": "56ac5a1ca8d20b56", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8aa761eea400baa8", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/tasks/${taskId} (src/app/(dashboard)/boards/[divisionId]/page.tsx:361)"}, "properties": {"repobilityId": "983ba32c122cbd71", "scanner": "scanner-primary", "fingerprint": "8aa761eea400baa8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-135cac985f20e4c2", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/tasks (src/app/(dashboard)/boards/[divisionId]/page.tsx:438)"}, "properties": {"repobilityId": "e1257cb50c235eb8", "scanner": "scanner-primary", "fingerprint": "135cac985f20e4c2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cd66898655569fd2", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/tasks/${id} (src/app/(dashboard)/boards/[divisionId]/page.tsx:448)"}, "properties": {"repobilityId": "be9174f23ced03e1", "scanner": "scanner-primary", "fingerprint": "cd66898655569fd2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c15217f2a7077e1f", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users/assignable (src/app/(dashboard)/boards/[divisionId]/page.tsx:459)"}, "properties": {"repobilityId": "f3af4972ba3964ae", "scanner": "scanner-primary", "fingerprint": "c15217f2a7077e1f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a120b7c1bfc95b19", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/users/assignable (src/app/(dashboard)/boards/[divisionId]/page.tsx:934)"}, "properties": {"repobilityId": "c3d87479a918d80e", "scanner": "scanner-primary", "fingerprint": "a120b7c1bfc95b19", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a0d0c8d3fa3556ea", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/tasks (src/app/(dashboard)/boards/[divisionId]/page.tsx:957)"}, "properties": {"repobilityId": "6a09454bfa789c16", "scanner": "scanner-primary", "fingerprint": "a0d0c8d3fa3556ea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3af25c0f73f96d0b", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/divisions (src/app/(dashboard)/boards/[divisionId]/settings/page.tsx:54)"}, "properties": {"repobilityId": "29a71b9bdbd0da41", "scanner": "scanner-primary", "fingerprint": "3af25c0f73f96d0b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d5129afea9affedc", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/divisions/${divisionId}/columns (src/app/(dashboard)/boards/[divisionId]/settings/page.tsx:74)"}, "properties": {"repobilityId": "6e8298c01170b1ff", "scanner": "scanner-primary", "fingerprint": "d5129afea9affedc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8cc6081a9671e78d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/companies?category=client&limit=500 (src/app/(dashboard)/companies/page.tsx:106)"}, "properties": {"repobilityId": "e572c4fb1cd995ed", "scanner": "scanner-primary", "fingerprint": "8cc6081a9671e78d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c0d087d11600e038", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/companies/bulk (src/app/(dashboard)/companies/page.tsx:129)"}, "properties": {"repobilityId": "c75539bb5db23d3a", "scanner": "scanner-primary", "fingerprint": "c0d087d11600e038", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-247ac938aaf83c50", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/companies/${companyId} (src/app/(dashboard)/companies/page.tsx:168)"}, "properties": {"repobilityId": "7e6392592d84fc77", "scanner": "scanner-primary", "fingerprint": "247ac938aaf83c50", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-74feec98d1bcb5f2", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/companies/${deleteItem.id} (src/app/(dashboard)/companies/page.tsx:209)"}, "properties": {"repobilityId": "a81fccea57c36dab", "scanner": "scanner-primary", "fingerprint": "74feec98d1bcb5f2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-48870b82c0de12ca", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/companies/${params.id} (src/app/(dashboard)/companies/[id]/page.tsx:102)"}, "properties": {"repobilityId": "c933f32f53d07ce8", "scanner": "scanner-primary", "fingerprint": "48870b82c0de12ca", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a7929dcd38e34d58", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/pricing/profiles?companyId=${params.id}&all=true (src/app/(dashboard)/companies/[id]/page.tsx:115)"}, "properties": {"repobilityId": "5c2aa8592489c772", "scanner": "scanner-primary", "fingerprint": "a7929dcd38e34d58", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d3d62611ac4a8eeb", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/pricing/additional-sales?profileId=${profile.id} (src/app/(dashboard)/companies/[id]/page.tsx:120)"}, "properties": {"repobilityId": "6652bbc86fe1b651", "scanner": "scanner-primary", "fingerprint": "d3d62611ac4a8eeb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-152603f577a22913", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/companies/${params.id}/timeline (src/app/(dashboard)/companies/[id]/page.tsx:131)"}, "properties": {"repobilityId": "60d836cade1d9fd0", "scanner": "scanner-primary", "fingerprint": "152603f577a22913", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-69727addea1c2930", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/calls?companyId=${params.id}&limit=20 (src/app/(dashboard)/companies/[id]/page.tsx:142)"}, "properties": {"repobilityId": "0305407dcd6ebf2a", "scanner": "scanner-primary", "fingerprint": "69727addea1c2930", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cdb2b35002b278c6", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/pricing/data (src/app/(dashboard)/pricing/page.tsx:158)"}, "properties": {"repobilityId": "28a6fe5cc8fbeaa3", "scanner": "scanner-primary", "fingerprint": "cdb2b35002b278c6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-51e006ba63c10982", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/pricing/additional-sales?limit=500 (src/app/(dashboard)/pricing/page.tsx:168)"}, "properties": {"repobilityId": "6ee40d35e739a672", "scanner": "scanner-primary", "fingerprint": "51e006ba63c10982", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8035906c15a6e0e9", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/pricing/profiles?all=true (src/app/(dashboard)/pricing/page.tsx:177)"}, "properties": {"repobilityId": "84afa5b4442ba3be", "scanner": "scanner-primary", "fingerprint": "8035906c15a6e0e9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-02e085d2d9e78407", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/deals?limit=500&stage=WON (src/app/(dashboard)/pricing/page.tsx:186)"}, "properties": {"repobilityId": "74d808d3e3bb0fd0", "scanner": "scanner-primary", "fingerprint": "02e085d2d9e78407", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-628c5f76362e7626", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/pricing/export (src/app/(dashboard)/pricing/page.tsx:326)"}, "properties": {"repobilityId": "9a187a8f59076d0f", "scanner": "scanner-primary", "fingerprint": "628c5f76362e7626", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f790e9300ae407fa", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/pricing/company/${encodeURIComponent(code)} (src/app/(dashboard)/pricing/page.tsx:353)"}, "properties": {"repobilityId": "2175b6c4c9ec0af0", "scanner": "scanner-primary", "fingerprint": "f790e9300ae407fa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8262652eb702a06a", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/pricing/delete/${encodeURIComponent(code)} (src/app/(dashboard)/pricing/page.tsx:365)"}, "properties": {"repobilityId": "b4680455e9cd0a36", "scanner": "scanner-primary", "fingerprint": "8262652eb702a06a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2f282b424a18f746", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/pricing/additional-sales (src/app/(dashboard)/pricing/page.tsx:978)"}, "properties": {"repobilityId": "03ddd6f6ba4a81d2", "scanner": "scanner-primary", "fingerprint": "2f282b424a18f746", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-29518f8a2f2fe5de", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/deals/${deal.id}/add-to-pricing (src/app/(dashboard)/pricing/page.tsx:1049)"}, "properties": {"repobilityId": "3c14007edeb78ca7", "scanner": "scanner-primary", "fingerprint": "29518f8a2f2fe5de", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e1695062ffc281ef", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/pricing/additional-sales/${sale.id} (src/app/(dashboard)/pricing/page.tsx:1184)"}, "properties": {"repobilityId": "f9fe1180f77f7487", "scanner": "scanner-primary", "fingerprint": "e1695062ffc281ef", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6a77669139d6ad3e", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/invoices/stats (src/app/(dashboard)/invoices/page.tsx:117)"}, "properties": {"repobilityId": "38488e06489a3ebf", "scanner": "scanner-primary", "fingerprint": "6a77669139d6ad3e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-541b5625c39e685c", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/invoices/${deleteId} (src/app/(dashboard)/invoices/page.tsx:152)"}, "properties": {"repobilityId": "61fe8e8d7d0b9969", "scanner": "scanner-primary", "fingerprint": "541b5625c39e685c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6b4dba79d3bdf673", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/invoices/${editInvoice.id} (src/app/(dashboard)/invoices/page.tsx:183)"}, "properties": {"repobilityId": "b5554f83897ab9f3", "scanner": "scanner-primary", "fingerprint": "6b4dba79d3bdf673", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4efea89af215e12d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/recurring-invoices (src/app/(dashboard)/invoices/recurring/page.tsx:123)"}, "properties": {"repobilityId": "f58cd0b13d91abcd", "scanner": "scanner-primary", "fingerprint": "4efea89af215e12d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9f58a7a7c25793c1", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/companies?limit=500 (src/app/(dashboard)/invoices/recurring/page.tsx:139)"}, "properties": {"repobilityId": "7e9f52bdc652ed0c", "scanner": "scanner-primary", "fingerprint": "9f58a7a7c25793c1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bc83dc8546a811a8", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/recurring-invoices (src/app/(dashboard)/invoices/recurring/page.tsx:179)"}, "properties": {"repobilityId": "56847381f603ef39", "scanner": "scanner-primary", "fingerprint": "bc83dc8546a811a8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ddfb621c1b63ebe3", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/recurring-invoices/${rule.id} (src/app/(dashboard)/invoices/recurring/page.tsx:199)"}, "properties": {"repobilityId": "4a6a0cb9b2f27fdf", "scanner": "scanner-primary", "fingerprint": "ddfb621c1b63ebe3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ad392ab59a495680", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/recurring-invoices/${deleteId} (src/app/(dashboard)/invoices/recurring/page.tsx:212)"}, "properties": {"repobilityId": "ba08d04afec6d3e5", "scanner": "scanner-primary", "fingerprint": "ad392ab59a495680", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1d8352b7c7f54450", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/recurring-invoices/generate (src/app/(dashboard)/invoices/recurring/page.tsx:224)"}, "properties": {"repobilityId": "fec121ce1a4423b2", "scanner": "scanner-primary", "fingerprint": "1d8352b7c7f54450", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4a0be4792902830f", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/recurring-invoices/${id} (src/app/(dashboard)/invoices/recurring/page.tsx:259)"}, "properties": {"repobilityId": "8f69348bab380bac", "scanner": "scanner-primary", "fingerprint": "4a0be4792902830f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ab6c568a36d19fbc", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/invoices/${invoiceId} (src/app/(dashboard)/invoices/[id]/page.tsx:391)"}, "properties": {"repobilityId": "afd4f360ac3c6cd5", "scanner": "scanner-primary", "fingerprint": "ab6c568a36d19fbc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ef4e7ef25effc5c1", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/audit-log?entityType=invoice&entityId=${invoiceId} (src/app/(dashboard)/invoices/[id]/page.tsx:418)"}, "properties": {"repobilityId": "a8d3a4209000d5d4", "scanner": "scanner-primary", "fingerprint": "ef4e7ef25effc5c1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fa429beace4280f0", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/invoices/${invoiceId}/chain (src/app/(dashboard)/invoices/[id]/page.tsx:442)"}, "properties": {"repobilityId": "014a00d523f3b88d", "scanner": "scanner-primary", "fingerprint": "fa429beace4280f0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-98a3856cf3cc62e0", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/invoices/${invoiceId}/chain (src/app/(dashboard)/invoices/[id]/page.tsx:521)"}, "properties": {"repobilityId": "526d0a3249f804b2", "scanner": "scanner-primary", "fingerprint": "98a3856cf3cc62e0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3c4a5d765bb7e0d4", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/journeys/${chainData.journey.id} (src/app/(dashboard)/invoices/[id]/page.tsx:549)"}, "properties": {"repobilityId": "6a1b03136ab24acf", "scanner": "scanner-primary", "fingerprint": "3c4a5d765bb7e0d4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-13b32489aec9f951", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/invoices/${invoiceId}/chain (src/app/(dashboard)/invoices/[id]/page.tsx:570)"}, "properties": {"repobilityId": "09fb94ae1ef4fd57", "scanner": "scanner-primary", "fingerprint": "13b32489aec9f951", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ebc86bc527cbeb5c", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/invoices/${invoiceId}/chain (src/app/(dashboard)/invoices/[id]/page.tsx:596)"}, "properties": {"repobilityId": "b49ae28b4c177d09", "scanner": "scanner-primary", "fingerprint": "ebc86bc527cbeb5c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a01808bd86cedaba", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/invoices/${invoiceId} (src/app/(dashboard)/invoices/[id]/page.tsx:679)"}, "properties": {"repobilityId": "bc899db722182328", "scanner": "scanner-primary", "fingerprint": "a01808bd86cedaba", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e13b367d37f0973e", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/invoices/${invoiceId}/duplicate (src/app/(dashboard)/invoices/[id]/page.tsx:692)"}, "properties": {"repobilityId": "3c84f8886e871f10", "scanner": "scanner-primary", "fingerprint": "e13b367d37f0973e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c475e21d6ad04ff3", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/invoices/${invoiceId} (src/app/(dashboard)/invoices/[id]/page.tsx:722)"}, "properties": {"repobilityId": "f190c4606a1c4c3b", "scanner": "scanner-primary", "fingerprint": "c475e21d6ad04ff3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bae0e54cb2d2f987", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/invoices/${invoiceId}/payments (src/app/(dashboard)/invoices/[id]/page.tsx:760)"}, "properties": {"repobilityId": "8e00dd3084a2f4d6", "scanner": "scanner-primary", "fingerprint": "bae0e54cb2d2f987", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f62259f914774fb7", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/invoices/${invoiceId}/send (src/app/(dashboard)/invoices/[id]/page.tsx:795)"}, "properties": {"repobilityId": "0b99347125e7a713", "scanner": "scanner-primary", "fingerprint": "f62259f914774fb7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ba4ae3540f42c185", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/invoices/${invoiceId} (src/app/(dashboard)/invoices/[id]/edit/page.tsx:93)"}, "properties": {"repobilityId": "e55d959bddca69bc", "scanner": "scanner-primary", "fingerprint": "ba4ae3540f42c185", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7625796a941e9124", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/companies?limit=500 (src/app/(dashboard)/invoices/[id]/edit/page.tsx:138)"}, "properties": {"repobilityId": "a221791a18a5b384", "scanner": "scanner-primary", "fingerprint": "7625796a941e9124", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-61cb64bdac7b1f90", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/deals?limit=500 (src/app/(dashboard)/invoices/[id]/edit/page.tsx:139)"}, "properties": {"repobilityId": "739fc76dbdae866f", "scanner": "scanner-primary", "fingerprint": "61cb64bdac7b1f90", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d60ec6bc009a91bc", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/products?limit=500 (src/app/(dashboard)/invoices/[id]/edit/page.tsx:140)"}, "properties": {"repobilityId": "dc36fb614bdf2323", "scanner": "scanner-primary", "fingerprint": "d60ec6bc009a91bc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-393859a6a9e7102e", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contacts?companyId=${company} (src/app/(dashboard)/invoices/[id]/edit/page.tsx:146)"}, "properties": {"repobilityId": "e0ff30de185d2aef", "scanner": "scanner-primary", "fingerprint": "393859a6a9e7102e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7a5df3d48c1d3c20", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contracts?companyId=${company}&limit=100 (src/app/(dashboard)/invoices/[id]/edit/page.tsx:152)"}, "properties": {"repobilityId": "5e945ba65d53ebce", "scanner": "scanner-primary", "fingerprint": "7a5df3d48c1d3c20", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7c69742b7024bdee", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/invoices/${invoiceId} (src/app/(dashboard)/invoices/[id]/edit/page.tsx:227)"}, "properties": {"repobilityId": "717e6ebc2175bac2", "scanner": "scanner-primary", "fingerprint": "7c69742b7024bdee", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0c97b18dcb9a162e", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/companies?limit=500 (src/app/(dashboard)/invoices/create/page.tsx:148)"}, "properties": {"repobilityId": "bb2d93c185ecf0fe", "scanner": "scanner-primary", "fingerprint": "0c97b18dcb9a162e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-297e9bb6b670d096", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/deals?companyId=${company}&limit=100 (src/app/(dashboard)/invoices/create/page.tsx:161)"}, "properties": {"repobilityId": "91374867fcdde9be", "scanner": "scanner-primary", "fingerprint": "297e9bb6b670d096", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ca48ae598d394ff0", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/products?limit=500 (src/app/(dashboard)/invoices/create/page.tsx:170)"}, "properties": {"repobilityId": "43ed1c514a65c2e6", "scanner": "scanner-primary", "fingerprint": "ca48ae598d394ff0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-30ba52edc59cae71", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/invoices/next-number (src/app/(dashboard)/invoices/create/page.tsx:179)"}, "properties": {"repobilityId": "a9a847d5d4d1e510", "scanner": "scanner-primary", "fingerprint": "30ba52edc59cae71", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f0189797210d61af", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contacts?companyId=${company} (src/app/(dashboard)/invoices/create/page.tsx:194)"}, "properties": {"repobilityId": "53cc79b62f165d9a", "scanner": "scanner-primary", "fingerprint": "f0189797210d61af", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-53896ae309cd2dff", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/contracts?companyId=${company}&limit=100 (src/app/(dashboard)/invoices/create/page.tsx:207)"}, "properties": {"repobilityId": "cb2aac91416910d9", "scanner": "scanner-primary", "fingerprint": "53896ae309cd2dff", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9e26a00940d97c53", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/invoices (src/app/(dashboard)/invoices/create/page.tsx:390)"}, "properties": {"repobilityId": "99c5e89a58596252", "scanner": "scanner-primary", "fingerprint": "9e26a00940d97c53", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bfe2632d1c37d894", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/pitch/${token} (src/app/pitch/[token]/page.tsx:13)"}, "properties": {"repobilityId": "9a38117593f7cdd7", "scanner": "scanner-primary", "fingerprint": "bfe2632d1c37d894", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1df3cbfe61a67ab0", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/sign/${encodeURIComponent(rawToken)} (src/app/sign/[token]/page.tsx:236)"}, "properties": {"repobilityId": "dced774daf10a845", "scanner": "scanner-primary", "fingerprint": "1df3cbfe61a67ab0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-acee95bafb80cc20", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/sign/${encodeURIComponent(rawToken)} (src/app/sign/[token]/page.tsx:285)"}, "properties": {"repobilityId": "c62680854f9b1eac", "scanner": "scanner-primary", "fingerprint": "acee95bafb80cc20", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6590d08246a5bf16", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/sign/${encodeURIComponent(rawToken)}/decline (src/app/sign/[token]/page.tsx:307)"}, "properties": {"repobilityId": "6c41a124b54895c1", "scanner": "scanner-primary", "fingerprint": "6590d08246a5bf16", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a55a75a77fcee6f9", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/public/surveys/${slug} (src/app/s/[slug]/survey-form.tsx:73)"}, "properties": {"repobilityId": "20e38341e5e814d7", "scanner": "scanner-primary", "fingerprint": "a55a75a77fcee6f9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-45f5c263f3231eb6", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/public/web-chat/messages?sessionId=${parsed.sessionId}&after=0 (src/app/embed/chat/[key]/embed-chat-client.tsx:69)"}, "properties": {"repobilityId": "e3c82b8d96b16d4a", "scanner": "scanner-primary", "fingerprint": "45f5c263f3231eb6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b25cf911a3b91b11", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/public/web-chat/session (src/app/embed/chat/[key]/embed-chat-client.tsx:92)"}, "properties": {"repobilityId": "f3f7c6beba622e69", "scanner": "scanner-primary", "fingerprint": "b25cf911a3b91b11", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4bfcb6eb6d0c7738", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/public/web-chat/typing?sessionId=${sessionId} (src/app/embed/chat/[key]/embed-chat-client.tsx:125)"}, "properties": {"repobilityId": "6ad935a25a9694bd", "scanner": "scanner-primary", "fingerprint": "4bfcb6eb6d0c7738", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-82354c5112805835", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/public/web-chat/messages?sessionId=${sessionId}&after=${lastTs} (src/app/embed/chat/[key]/embed-chat-client.tsx:141)"}, "properties": {"repobilityId": "64e80f2b25e83518", "scanner": "scanner-primary", "fingerprint": "82354c5112805835", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6c7abd557790e2d2", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/public/web-chat/upload (src/app/embed/chat/[key]/embed-chat-client.tsx:175)"}, "properties": {"repobilityId": "73d6741a934a72d5", "scanner": "scanner-primary", "fingerprint": "6c7abd557790e2d2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d18fbdfdda30bc1a", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/public/web-chat/message (src/app/embed/chat/[key]/embed-chat-client.tsx:202)"}, "properties": {"repobilityId": "591c1e6174ed7804", "scanner": "scanner-primary", "fingerprint": "d18fbdfdda30bc1a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-379ee51dc68bc95c", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/public/web-chat/typing (src/app/embed/chat/[key]/embed-chat-client.tsx:356)"}, "properties": {"repobilityId": "277dfdc539785bf5", "scanner": "scanner-primary", "fingerprint": "379ee51dc68bc95c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ac2a29760532272f", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/admin/plans (src/app/admin/tenants/new/page.tsx:55)"}, "properties": {"repobilityId": "e938af6fe4c05659", "scanner": "scanner-primary", "fingerprint": "ac2a29760532272f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a502157687a4ef8e", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/upload-logo (src/app/admin/tenants/new/page.tsx:76)"}, "properties": {"repobilityId": "7b1b3c8cd4f6d222", "scanner": "scanner-primary", "fingerprint": "a502157687a4ef8e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-176bf602900766e9", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/tenants (src/app/admin/tenants/new/page.tsx:137)"}, "properties": {"repobilityId": "2e5aed8402bc8016", "scanner": "scanner-primary", "fingerprint": "176bf602900766e9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0f721927565e18cd", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/admin/tenants/${tenantId} (src/app/admin/tenants/[id]/tenant-actions.tsx:41)"}, "properties": {"repobilityId": "a0891bf2c2353f1c", "scanner": "scanner-primary", "fingerprint": "0f721927565e18cd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-09e5eadf2880827b", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/admin/tenants/${tenantId} (src/app/admin/tenants/[id]/tenant-actions.tsx:47)"}, "properties": {"repobilityId": "42c374bd52e90da9", "scanner": "scanner-primary", "fingerprint": "09e5eadf2880827b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2ba0ba20088032fb", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/admin/tenants/${tenantId} (src/app/admin/tenants/[id]/tenant-actions.tsx:65)"}, "properties": {"repobilityId": "f9fa0daa2ea12855", "scanner": "scanner-primary", "fingerprint": "2ba0ba20088032fb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-89dde253a4a3cd39", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/tenants/${tenantId}/cancel-deletion (src/app/admin/tenants/[id]/tenant-actions.tsx:83)"}, "properties": {"repobilityId": "3129a374f1f5f766", "scanner": "scanner-primary", "fingerprint": "89dde253a4a3cd39", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-18f6b3eade711002", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/admin/tenants/${tenantId}?force=true&confirm=${encodeURIComponent(slugConfirm)} (src/app/admin/tenants/[id]/tenant-actions.tsx:100)"}, "properties": {"repobilityId": "bc7408bc002e3c23", "scanner": "scanner-primary", "fingerprint": "18f6b3eade711002", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9a6ac5d1e9524482", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/tenants/${tenantId}/clear-demo (src/app/admin/tenants/[id]/tenant-actions.tsx:126)"}, "properties": {"repobilityId": "adc468432e3b2ebd", "scanner": "scanner-primary", "fingerprint": "9a6ac5d1e9524482", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fb0b92c353d303ab", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/admin/tenants/${tenantId}/export (src/app/admin/tenants/[id]/tenant-actions.tsx:148)"}, "properties": {"repobilityId": "f78746e4344b1dc4", "scanner": "scanner-primary", "fingerprint": "fb0b92c353d303ab", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d9c3a50205d98069", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/admin/tenants/${tenantId} (src/app/admin/tenants/[id]/edit/page.tsx:113)"}, "properties": {"repobilityId": "ea9ed790b944f9db", "scanner": "scanner-primary", "fingerprint": "d9c3a50205d98069", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fe35695ab501e0a2", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/upload-logo (src/app/admin/tenants/[id]/edit/page.tsx:167)"}, "properties": {"repobilityId": "c9756c6887a71971", "scanner": "scanner-primary", "fingerprint": "fe35695ab501e0a2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0dd2e220be3e6813", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/admin/tenants/${tenantId} (src/app/admin/tenants/[id]/edit/page.tsx:204)"}, "properties": {"repobilityId": "fa74bc74ad2d4b2a", "scanner": "scanner-primary", "fingerprint": "0dd2e220be3e6813", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2c20f65c56d2cd89", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/admin/plans/${p.id} (src/app/admin/plans/plans-client.tsx:61)"}, "properties": {"repobilityId": "704d189a61c7b04e", "scanner": "scanner-primary", "fingerprint": "2c20f65c56d2cd89", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4577c2b12b14f4d3", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/public/portal-auth (src/app/portal/layout.tsx:37)"}, "properties": {"repobilityId": "54fd42906d8eb1d7", "scanner": "scanner-primary", "fingerprint": "4577c2b12b14f4d3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-13cf9dec6ecda2fd", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/public/portal-auth (src/app/portal/login/page.tsx:27)"}, "properties": {"repobilityId": "724b3a0fcbbfb473", "scanner": "scanner-primary", "fingerprint": "13cf9dec6ecda2fd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-93c50444a1647415", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/public/portal-kb (src/app/portal/knowledge-base/page.tsx:31)"}, "properties": {"repobilityId": "4268a2216467642a", "scanner": "scanner-primary", "fingerprint": "93c50444a1647415", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f5ad018ffe82314e", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/public/portal-kb?id=${article.id} (src/app/portal/knowledge-base/page.tsx:39)"}, "properties": {"repobilityId": "89afbea8d02c2708", "scanner": "scanner-primary", "fingerprint": "f5ad018ffe82314e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6eb8f985908bbeee", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/public/portal-unsubscribe (src/app/portal/unsubscribe/page.tsx:31)"}, "properties": {"repobilityId": "5b3dc7dab9df266f", "scanner": "scanner-primary", "fingerprint": "6eb8f985908bbeee", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-caab10d4f7c32445", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/public/portal-chat (src/app/portal/chat/page.tsx:50)"}, "properties": {"repobilityId": "891ae6ab7a3594d5", "scanner": "scanner-primary", "fingerprint": "caab10d4f7c32445", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f4dd0203e3f09a91", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/public/portal-auth/set-password?token=${token} (src/app/portal/set-password/page.tsx:54)"}, "properties": {"repobilityId": "392d22aee0f83abe", "scanner": "scanner-primary", "fingerprint": "f4dd0203e3f09a91", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-663e31aa1c55dca9", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/public/portal-auth/set-password (src/app/portal/set-password/page.tsx:77)"}, "properties": {"repobilityId": "664f31dfa2c2da7c", "scanner": "scanner-primary", "fingerprint": "663e31aa1c55dca9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3852fdb259bf6a41", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/public/portal-tickets (src/app/portal/tickets/page.tsx:64)"}, "properties": {"repobilityId": "95b64647f8f04961", "scanner": "scanner-primary", "fingerprint": "3852fdb259bf6a41", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f2e09d449ccd03ae", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/public/portal-config (src/app/portal/tickets/page.tsx:74)"}, "properties": {"repobilityId": "19be8273ba007442", "scanner": "scanner-primary", "fingerprint": "f2e09d449ccd03ae", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0d368ab9c4f26f0a", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/public/portal-tickets (src/app/portal/tickets/page.tsx:97)"}, "properties": {"repobilityId": "0401ab8f206ff437", "scanner": "scanner-primary", "fingerprint": "0d368ab9c4f26f0a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b576337f3bfe3029", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/public/portal-tickets/${ticketId} (src/app/portal/tickets/[id]/page.tsx:75)"}, "properties": {"repobilityId": "d16a6da7a2543e30", "scanner": "scanner-primary", "fingerprint": "b576337f3bfe3029", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5ba647ddabc9ad68", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/public/portal-tickets/${ticketId} (src/app/portal/tickets/[id]/page.tsx:105)"}, "properties": {"repobilityId": "7ae66190d5748ba4", "scanner": "scanner-primary", "fingerprint": "5ba647ddabc9ad68", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b4e14139890b96b0", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/public/portal-tickets/${ticketId} (src/app/portal/tickets/[id]/page.tsx:122)"}, "properties": {"repobilityId": "f3b3a7def94ffe89", "scanner": "scanner-primary", "fingerprint": "b4e14139890b96b0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3c8ca1b61714f460", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/public/portal-auth/register (src/app/portal/register/page.tsx:24)"}, "properties": {"repobilityId": "aabbf221a5953b71", "scanner": "scanner-primary", "fingerprint": "3c8ca1b61714f460", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ab3fad6b729ba3d9", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/auth/reset-password (src/app/(auth)/reset-password/page.tsx:76)"}, "properties": {"repobilityId": "cff6fde856312d8f", "scanner": "scanner-primary", "fingerprint": "ab3fad6b729ba3d9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-66bac20d896c1159", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/settings/auth-methods (src/app/(auth)/login/page.tsx:35)"}, "properties": {"repobilityId": "76a2d02b90e1fcd3", "scanner": "scanner-primary", "fingerprint": "66bac20d896c1159", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-20e15384b75637b9", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/public/tenant-branding?slug=${match[1]} (src/app/(auth)/login/page.tsx:46)"}, "properties": {"repobilityId": "4da02a3eecb72682", "scanner": "scanner-primary", "fingerprint": "20e15384b75637b9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a84eccb2cd9ddd80", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/auth/2fa (src/app/(auth)/login/setup-2fa/page.tsx:37)"}, "properties": {"repobilityId": "2d548d61bb3c9984", "scanner": "scanner-primary", "fingerprint": "a84eccb2cd9ddd80", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b9a0ba141195ceb2", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/auth/2fa (src/app/(auth)/login/setup-2fa/page.tsx:62)"}, "properties": {"repobilityId": "9726d1dba9e5011c", "scanner": "scanner-primary", "fingerprint": "b9a0ba141195ceb2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-55fb2cd9d57cee3c", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/auth/resend-sms-2fa (src/app/(auth)/login/verify-2fa/page.tsx:78)"}, "properties": {"repobilityId": "c8028b0b5f15f231", "scanner": "scanner-primary", "fingerprint": "55fb2cd9d57cee3c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f332b9f73e44525f", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/auth/forgot-password (src/app/(auth)/forgot-password/page.tsx:22)"}, "properties": {"repobilityId": "5bbb8fc2cd67c6b9", "scanner": "scanner-primary", "fingerprint": "f332b9f73e44525f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-362eee9fc84b339e", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/demo-request (src/app/(marketing)/demo/page.tsx:43)"}, "properties": {"repobilityId": "66d162d23e2b9497", "scanner": "scanner-primary", "fingerprint": "362eee9fc84b339e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c728db1a3881b33a", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/demo-request (src/app/(marketing)/contact/page.tsx:117)"}, "properties": {"repobilityId": "fddc32e97579f8b8", "scanner": "scanner-primary", "fingerprint": "c728db1a3881b33a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b48bf58d008c5d90", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/public/form-submit (src/app/(public)/_custom-domain/page.tsx:229)"}, "properties": {"repobilityId": "4683e4ccb9895b95", "scanner": "scanner-primary", "fingerprint": "b48bf58d008c5d90", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-77b33f2c9b164bbe", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/public/form-submit (src/app/(public)/p/[slug]/page.tsx:117)"}, "properties": {"repobilityId": "d8f5cf5c2e56dfef", "scanner": "scanner-primary", "fingerprint": "77b33f2c9b164bbe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c3f4c1131f0aae37", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/public/events/${params.id}/register (src/app/(public)/events/[id]/register/page.tsx:27)"}, "properties": {"repobilityId": "78981a7e477a3f6e", "scanner": "scanner-primary", "fingerprint": "c3f4c1131f0aae37", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7bd1c274146329e1", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/public/events/${params.id}/register (src/app/(public)/events/[id]/register/page.tsx:40)"}, "properties": {"repobilityId": "b2133f6b1dcdf831", "scanner": "scanner-primary", "fingerprint": "7bd1c274146329e1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-72ed912509101346", "level": "error", "message": {"text": "Dangling fetch: POST https://api.resend.com/emails (src/lib/email.ts:90)"}, "properties": {"repobilityId": "20c3320460f19728", "scanner": "scanner-primary", "fingerprint": "72ed912509101346", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-468a1b29553aa322", "level": "error", "message": {"text": "Dangling fetch: POST https://api.postmarkapp.com/email (src/lib/email.ts:134)"}, "properties": {"repobilityId": "777a53f3d4455569", "scanner": "scanner-primary", "fingerprint": "468a1b29553aa322", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-beb7c020b912b4ba", "level": "error", "message": {"text": "Dangling fetch: POST https://graph.facebook.com/v20.0/me/messages?access_token=${pageAccessToken} (src/lib/facebook.ts:10)"}, "properties": {"repobilityId": "dcd70dc9bef06bb6", "scanner": "scanner-primary", "fingerprint": "beb7c020b912b4ba", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4747374aa21d2c3e", "level": "error", "message": {"text": "Dangling fetch: POST https://graph.facebook.com/v20.0/me/messages?access_token=${pageAccessToken} (src/lib/facebook.ts:33)"}, "properties": {"repobilityId": "fa4695c7655adcb3", "scanner": "scanner-primary", "fingerprint": "4747374aa21d2c3e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-885d0d04046920ed", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/push/vapid-key (src/lib/push-client.ts:36)"}, "properties": {"repobilityId": "1a33e923a394e8fc", "scanner": "scanner-primary", "fingerprint": "885d0d04046920ed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cab84be416bcae50", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/push/subscribe (src/lib/push-client.ts:58)"}, "properties": {"repobilityId": "7e6f88c007d70400", "scanner": "scanner-primary", "fingerprint": "cab84be416bcae50", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2ef9072201ab63ea", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/push/subscribe?endpoint=${encodeURIComponent(sub.endpoint)} (src/lib/push-client.ts:75)"}, "properties": {"repobilityId": "211d9c13640caa1d", "scanner": "scanner-primary", "fingerprint": "2ef9072201ab63ea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-76b8fa4efd524e60", "level": "error", "message": {"text": "Dangling fetch: GET https://api.vk.com/method/messages.send?${params} (src/lib/vkontakte.ts:15)"}, "properties": {"repobilityId": "5b18810751b90139", "scanner": "scanner-primary", "fingerprint": "76b8fa4efd524e60", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5ccbc53c94665e8f", "level": "error", "message": {"text": "Dangling fetch: POST https://api.telegram.org/bot${ch.botToken}/sendMessage (src/lib/chatbot-autoreply.ts:78)"}, "properties": {"repobilityId": "f7b4b34b8f870e7e", "scanner": "scanner-primary", "fingerprint": "5ccbc53c94665e8f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-94b279ae8e2b5537", "level": "error", "message": {"text": "Dangling fetch: POST https://api.telegram.org/bot${tgChannel.botToken}/sendMessage (src/lib/journey-engine.ts:188)"}, "properties": {"repobilityId": "a647b505d7cb8a6a", "scanner": "scanner-primary", "fingerprint": "94b279ae8e2b5537", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-82cae28aaaffa8ad", "level": "error", "message": {"text": "Dangling fetch: POST https://api.voyageai.com/v1/embeddings (src/lib/ai/embeddings.ts:15)"}, "properties": {"repobilityId": "53c6b8c0611b70e8", "scanner": "scanner-primary", "fingerprint": "82cae28aaaffa8ad", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-662d3e4494105374", "level": "error", "message": {"text": "Dangling fetch: POST https://api.telegram.org/bot${BOT_TOKEN}/sendMessage (src/lib/finance/telegram-notify.ts:127)"}, "properties": {"repobilityId": "b83a6501895b4a77", "scanner": "scanner-primary", "fingerprint": "662d3e4494105374", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c7c2494f91116290", "level": "error", "message": {"text": "Dangling fetch: POST https://api.twitter.com/2/oauth2/token (src/lib/social/twitter-poller.ts:47)"}, "properties": {"repobilityId": "2fa2ea1aea353e86", "scanner": "scanner-primary", "fingerprint": "c7c2494f91116290", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c66381db03f2e36a", "level": "error", "message": {"text": "Dangling fetch: POST https://open.tiktokapis.com/v2/oauth/token/ (src/lib/social/tiktok-poller.ts:25)"}, "properties": {"repobilityId": "a27c2eb4ba8b852d", "scanner": "scanner-primary", "fingerprint": "c66381db03f2e36a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d6c87d1f615fd053", "level": "error", "message": {"text": "Dangling fetch: POST https://open.tiktokapis.com/v2/video/list/?fields=id,title,create_time,view_count,like_count,comment_count,share_count (src/lib/social/tiktok-poller.ts:60)"}, "properties": {"repobilityId": "4e0ed878ceb3d01d", "scanner": "scanner-primary", "fingerprint": "d6c87d1f615fd053", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-467f5409d43693e7", "level": "error", "message": {"text": "Dangling fetch: POST https://oauth2.googleapis.com/token (src/lib/social/youtube-poller.ts:23)"}, "properties": {"repobilityId": "2b7d15f7f4de130b", "scanner": "scanner-primary", "fingerprint": "467f5409d43693e7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-54177c57534d1b7f", "level": "error", "message": {"text": "Dangling fetch: GET /api/budgeting/department-owners (src/lib/budgeting/hooks.ts:463)"}, "properties": {"repobilityId": "6a1a66e949ad0bf8", "scanner": "scanner-primary", "fingerprint": "54177c57534d1b7f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ea62ebbfdfbb24d3", "level": "error", "message": {"text": "Dangling fetch: POST /api/budgeting/department-owners (src/lib/budgeting/hooks.ts:479)"}, "properties": {"repobilityId": "8cc204cfe5c3e338", "scanner": "scanner-primary", "fingerprint": "ea62ebbfdfbb24d3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4e1e88adca6222e9", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/budgeting/department-owners?id=${id} (src/lib/budgeting/hooks.ts:499)"}, "properties": {"repobilityId": "008d45714e26264e", "scanner": "scanner-primary", "fingerprint": "4e1e88adca6222e9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-96fcb64080fdf10b", "level": "error", "message": {"text": "Dangling fetch: GET /api/budgeting/plans/${planId}/comments (src/lib/budgeting/hooks.ts:528)"}, "properties": {"repobilityId": "fba34efef048ced4", "scanner": "scanner-primary", "fingerprint": "96fcb64080fdf10b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cd1b289379148f0f", "level": "error", "message": {"text": "Dangling fetch: POST /api/budgeting/plans/${data.planId}/comments (src/lib/budgeting/hooks.ts:544)"}, "properties": {"repobilityId": "54007d3cf4c52242", "scanner": "scanner-primary", "fingerprint": "cd1b289379148f0f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-033a92243145b557", "level": "error", "message": {"text": "Dangling fetch: GET /api/budgeting/plans/${planId}/versions (src/lib/budgeting/hooks.ts:566)"}, "properties": {"repobilityId": "e8b243f6ff42d3ed", "scanner": "scanner-primary", "fingerprint": "033a92243145b557", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-41daa5e65967cc64", "level": "error", "message": {"text": "Dangling fetch: POST /api/budgeting/plans/${planId}/create-version (src/lib/budgeting/hooks.ts:592)"}, "properties": {"repobilityId": "face88e1c92ff55b", "scanner": "scanner-primary", "fingerprint": "41daa5e65967cc64", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-53a62176fbdcd0b0", "level": "error", "message": {"text": "Dangling fetch: GET /api/budgeting/plans/${planIdA}/diff?compareWith=${planIdB} (src/lib/budgeting/hooks.ts:612)"}, "properties": {"repobilityId": "6f2c7cd50c9585fe", "scanner": "scanner-primary", "fingerprint": "53a62176fbdcd0b0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-86012dc5c698921e", "level": "error", "message": {"text": "Dangling fetch: POST /api/budgeting/exchange-rates (src/lib/budgeting/hooks.ts:678)"}, "properties": {"repobilityId": "706e8bd154da4ef8", "scanner": "scanner-primary", "fingerprint": "86012dc5c698921e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-20b9257cfd888956", "level": "error", "message": {"text": "Dangling fetch: GET /api/budgeting/integrations (src/lib/budgeting/hooks.ts:700)"}, "properties": {"repobilityId": "010f8621d7cd249b", "scanner": "scanner-primary", "fingerprint": "20b9257cfd888956", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-495f304adf9b9c33", "level": "error", "message": {"text": "Dangling fetch: POST /api/budgeting/integrations (src/lib/budgeting/hooks.ts:716)"}, "properties": {"repobilityId": "136e0d4c52e5cf97", "scanner": "scanner-primary", "fingerprint": "495f304adf9b9c33", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2a7d12e097ace5a9", "level": "error", "message": {"text": "Dangling fetch: POST /api/budgeting/import-csv (src/lib/budgeting/hooks.ts:736)"}, "properties": {"repobilityId": "abe61223c3a91fb2", "scanner": "scanner-primary", "fingerprint": "2a7d12e097ace5a9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-713e49aecf8428e4", "level": "error", "message": {"text": "Dangling fetch: POST /api/budgeting/rolling (src/lib/budgeting/hooks.ts:777)"}, "properties": {"repobilityId": "b064ce9492add443", "scanner": "scanner-primary", "fingerprint": "713e49aecf8428e4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d1de572be10b5ea9", "level": "error", "message": {"text": "Dangling fetch: GET /api/budgeting/rolling?planId=${planId} (src/lib/budgeting/hooks.ts:798)"}, "properties": {"repobilityId": "076f17033f4b322c", "scanner": "scanner-primary", "fingerprint": "d1de572be10b5ea9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b83dbfe454d5ac10", "level": "error", "message": {"text": "Dangling fetch: POST /api/budgeting/rolling/auto-forecast (src/lib/budgeting/hooks.ts:833)"}, "properties": {"repobilityId": "19a456ba737df4a2", "scanner": "scanner-primary", "fingerprint": "b83dbfe454d5ac10", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-24d8a45f699d557b", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/budgeting/rolling (src/lib/budgeting/hooks.ts:853)"}, "properties": {"repobilityId": "6fd7a2285636f4a0", "scanner": "scanner-primary", "fingerprint": "24d8a45f699d557b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-57eafdc05491e4b1", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/budgeting/rolling (src/lib/budgeting/hooks.ts:873)"}, "properties": {"repobilityId": "dd58ab9fb7e6686b", "scanner": "scanner-primary", "fingerprint": "57eafdc05491e4b1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-35c42c1b255d9ba2", "level": "error", "message": {"text": "Dangling fetch: GET /api/budgeting/cash-flow?year=${year} (src/lib/budgeting/hooks.ts:895)"}, "properties": {"repobilityId": "e27edb5247762a11", "scanner": "scanner-primary", "fingerprint": "35c42c1b255d9ba2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9af2a49e4c0f6c35", "level": "error", "message": {"text": "Dangling fetch: POST /api/budgeting/cash-flow (src/lib/budgeting/hooks.ts:927)"}, "properties": {"repobilityId": "5c9b39c52f3feacc", "scanner": "scanner-primary", "fingerprint": "9af2a49e4c0f6c35", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-aa9b05efe98ef044", "level": "error", "message": {"text": "Dangling fetch: GET /api/budgeting/cash-flow/alerts?year=${year} (src/lib/budgeting/hooks.ts:947)"}, "properties": {"repobilityId": "5b811a605026f922", "scanner": "scanner-primary", "fingerprint": "aa9b05efe98ef044", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a751c1eff9d4d9ee", "level": "error", "message": {"text": "Dangling fetch: POST /api/budgeting/cash-flow/alerts (src/lib/budgeting/hooks.ts:967)"}, "properties": {"repobilityId": "5b6eaca99cdfd49a", "scanner": "scanner-primary", "fingerprint": "a751c1eff9d4d9ee", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d1d040759cabe997", "level": "error", "message": {"text": "Dangling fetch: GET /api/budgeting/cash-flow/plan-fact?year=${year} (src/lib/budgeting/hooks.ts:1006)"}, "properties": {"repobilityId": "cbd43a0164f00335", "scanner": "scanner-primary", "fingerprint": "d1d040759cabe997", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-76984275c759330f", "level": "error", "message": {"text": "Dangling fetch: POST /api/budgeting/cash-flow/generate (src/lib/budgeting/hooks.ts:1022)"}, "properties": {"repobilityId": "54b1f3f9eaba5f1d", "scanner": "scanner-primary", "fingerprint": "76984275c759330f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c29dff2df2ddbd32", "level": "error", "message": {"text": "Dangling fetch: POST https://rest.nexmo.com/sms/json (src/lib/sms/providers/vonage.ts:46)"}, "properties": {"repobilityId": "976d8f77e2c0eed3", "scanner": "scanner-primary", "fingerprint": "c29dff2df2ddbd32", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-31e384f8995a56fe", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/settings/field-permissions?entityType=${entityType} (src/hooks/use-field-permissions.ts:14)"}, "properties": {"repobilityId": "8695abbe8f5baa5f", "scanner": "scanner-primary", "fingerprint": "31e384f8995a56fe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dc2e2be410046e67", "level": "note", "message": {"text": "Unused endpoint: POST /analytics"}, "properties": {"repobilityId": "10827095c346fc7e", "scanner": "scanner-primary", "fingerprint": "dc2e2be410046e67", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0bb400842435764a", "level": "note", "message": {"text": "Unused endpoint: POST /score-lead"}, "properties": {"repobilityId": "4f0e4de9ba612505", "scanner": "scanner-primary", "fingerprint": "0bb400842435764a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-df42ea338ee415f8", "level": "note", "message": {"text": "Unused endpoint: POST /suggest-reply"}, "properties": {"repobilityId": "f36427d386ff7707", "scanner": "scanner-primary", "fingerprint": "df42ea338ee415f8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fca11d494725d7c3", "level": "note", "message": {"text": "Unused endpoint: POST /analyze"}, "properties": {"repobilityId": "ff6b4bb25a26a017", "scanner": "scanner-primary", "fingerprint": "fca11d494725d7c3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cff8da5fbc19c76d", "level": "note", "message": {"text": "Unused endpoint: POST /chat"}, "properties": {"repobilityId": "dcb2189cba9c6455", "scanner": "scanner-primary", "fingerprint": "cff8da5fbc19c76d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}