{"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-6bbfeb973c64af1e", "name": "Possibly dead Python function: run_single_query", "shortDescription": {"text": "Possibly dead Python function: run_single_query"}, "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-60f0b82d8f57a02e", "name": "Possibly dead Python function: do_GET", "shortDescription": {"text": "Possibly dead Python function: do_GET"}, "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-673167fae453e113", "name": "Possibly dead Python function: do_POST", "shortDescription": {"text": "Possibly dead Python function: do_POST"}, "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-ccc5592eff2c6749", "name": "Possibly dead Python function: log_message", "shortDescription": {"text": "Possibly dead Python function: log_message"}, "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-a372f84dbc49452b", "name": "Possibly dead Python function: decorator", "shortDescription": {"text": "Possibly dead Python function: decorator"}, "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-1866a463bf5ced56", "name": "Possibly dead Python function: sort_key", "shortDescription": {"text": "Possibly dead Python function: sort_key"}, "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-9bf4924255da0c99", "name": "Possibly dead Python function: patched_get_inherited", "shortDescription": {"text": "Possibly dead Python function: patched_get_inherited"}, "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-d49f2758d969fc86", "name": "Possibly dead Python function: revert_insertion", "shortDescription": {"text": "Possibly dead Python function: revert_insertion"}, "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-2729fe7100c2e71d", "name": "Possibly dead Python function: revert_deletion", "shortDescription": {"text": "Possibly dead Python function: revert_deletion"}, "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-6c40d1bd93daa14e", "name": "Possibly dead Python function: suggest_deletion", "shortDescription": {"text": "Possibly dead Python function: suggest_deletion"}, "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-7c95ba5605e8df28", "name": "Possibly dead Python function: add_comment", "shortDescription": {"text": "Possibly dead Python function: add_comment"}, "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-5f22c3628e356e4b", "name": "Possibly dead Python function: reply_to_comment", "shortDescription": {"text": "Possibly dead Python function: reply_to_comment"}, "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-80ee980d4cf02f6f", "name": "Possibly dead Python function: split_run", "shortDescription": {"text": "Possibly dead Python function: split_run"}, "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-683ca148abd32a24", "name": "Possibly dead Python function: check_line_spacing", "shortDescription": {"text": "Possibly dead Python function: check_line_spacing"}, "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-de642291d414decf", "name": "Possibly dead Python function: check_image_overflow", "shortDescription": {"text": "Possibly dead Python function: check_image_overflow"}, "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-229e3b485782131f", "name": "Possibly dead Python function: check_font_fallback", "shortDescription": {"text": "Possibly dead Python function: check_font_fallback"}, "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-ca31f8d2852e44a3", "name": "Possibly dead Python function: check_heading_levels", "shortDescription": {"text": "Possibly dead Python function: check_heading_levels"}, "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-55abef3ce39d12a7", "name": "Possibly dead Python function: check_shading_type", "shortDescription": {"text": "Possibly dead Python function: check_shading_type"}, "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-d2e0bda16d071ad0", "name": "Possibly dead Python function: check_cover_overflow", "shortDescription": {"text": "Possibly dead Python function: check_cover_overflow"}, "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-b9fbec77ad8ade45", "name": "Possibly dead Python function: startElementNS", "shortDescription": {"text": "Possibly dead Python function: startElementNS"}, "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-4f3236e041c0a7f9", "name": "Possibly dead Python function: decorator", "shortDescription": {"text": "Possibly dead Python function: decorator"}, "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-c13722ec84319e99", "name": "Possibly dead Python function: resolve_palette", "shortDescription": {"text": "Possibly dead Python function: resolve_palette"}, "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-c230664754de9098", "name": "Possibly dead Python function: list_available", "shortDescription": {"text": "Possibly dead Python function: list_available"}, "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-8543973ff3aeeef1", "name": "Possibly dead Python function: apply_palette", "shortDescription": {"text": "Possibly dead Python function: apply_palette"}, "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-af24c7b98092dc9c", "name": "Possibly dead Python function: use_palette", "shortDescription": {"text": "Possibly dead Python function: use_palette"}, "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-946fa17958897d86", "name": "Possibly dead Python function: use_palette_explicit", "shortDescription": {"text": "Possibly dead Python function: use_palette_explicit"}, "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-3642c7bf5317884b", "name": "Possibly dead Python function: font_caption", "shortDescription": {"text": "Possibly dead Python function: font_caption"}, "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-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f160e890a66a681d", "name": "Stray `console.log` in TS/JS \u2014 instrumentation.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 instrumentation.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-1c14467b84e9f4fe", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-stores-domains.js:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-stores-domains.js:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7fbc2e54d45a0ff5", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-dietary-type.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-dietary-type.ts:21"}, "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-f2ef1cf3fd0c22ee", "name": "Stray `console.log` in TS/JS \u2014 scripts/ensure-super-admin.js:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ensure-super-admin.js:26"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1608dad2d0c96fe8", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-uploads.js:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-uploads.js:54"}, "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-29f2e0737d996d86", "name": "Stray `console.log` in TS/JS \u2014 examples/websocket/server.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/websocket/server.ts:50"}, "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-0aae82b665702bce", "name": "Stray `console.log` in TS/JS \u2014 skills/image-understand/scripts/image-understand.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/image-understand/scripts/image-understand.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-295912dd8a0d18db", "name": "Stray `console.log` in TS/JS \u2014 skills/video-understand/scripts/video-understand.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/video-understand/scripts/video-understand.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-ae01f1abe6520256", "name": "Stray `console.log` in TS/JS \u2014 skills/TTS/tts.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/TTS/tts.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-58d995da8f139672", "name": "Stray `console.log` in TS/JS \u2014 skills/podcast-generate/generate.ts:512", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/podcast-generate/generate.ts:512"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9a565911cf8b3c33", "name": "TODO/FIXME marker in shipping code \u2014 skills/storyboard-manager/index.js:4", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 skills/storyboard-manager/index.js:4"}, "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-a90d7bf35896f35a", "name": "Stray `console.log` in TS/JS \u2014 skills/storyboard-manager/index.js:2", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/storyboard-manager/index.js:2"}, "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-ba1892ab20c790bc", "name": "Stray `console.log` in TS/JS \u2014 skills/ASR/scripts/asr.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/ASR/scripts/asr.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-ddb20c593851935a", "name": "Stray `console.log` in TS/JS \u2014 skills/ppt/scripts/html2pptx.js:1244", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/ppt/scripts/html2pptx.js:1244"}, "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-a9aa2969ace0fdf3", "name": "Stray `console.log` in TS/JS \u2014 skills/image-edit/scripts/image-edit.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/image-edit/scripts/image-edit.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-17a3de3369a2e3ae", "name": "Stray `console.log` in TS/JS \u2014 skills/LLM/scripts/chat.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/LLM/scripts/chat.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-2334cd44b4b63869", "name": "Stray `console.log` in TS/JS \u2014 skills/web-reader/scripts/web-reader.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/web-reader/scripts/web-reader.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-a11cde24c5b10cb4", "name": "Stray `console.log` in TS/JS \u2014 skills/stock-analysis-skill/src/index.ts:69", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/stock-analysis-skill/src/index.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-9766af958ac56239", "name": "Stray `console.log` in TS/JS \u2014 skills/web-search/scripts/web_search.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/web-search/scripts/web_search.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-3676bfb9868b6a61", "name": "Stray `console.log` in TS/JS \u2014 skills/image-generation/scripts/image-generation.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/image-generation/scripts/image-generation.ts:16"}, "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-b1a7a69040fa1efe", "name": "Stray `console.log` in TS/JS \u2014 skills/pdf/scripts/html2poster.js:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/pdf/scripts/html2poster.js: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-0fb35b4ab9b39c00", "name": "Stray `console.log` in TS/JS \u2014 skills/pdf/scripts/html2pdf-next.js:106", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/pdf/scripts/html2pdf-next.js:106"}, "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-82833f9c72f198ff", "name": "Stray `console.log` in TS/JS \u2014 skills/pdf/scripts/cover_validate.js:77", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/pdf/scripts/cover_validate.js: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-81d7d7455a11d7c0", "name": "Stray `console.log` in TS/JS \u2014 skills/video-generation/scripts/video.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/video-generation/scripts/video.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-548938e3e8940042", "name": "Stray `console.log` in TS/JS \u2014 skills/VLM/scripts/vlm.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/VLM/scripts/vlm.ts:50"}, "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-7012190a46988712", "name": "Stray `console.log` in TS/JS \u2014 public/sw.js:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 public/sw.js:60"}, "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-a127b841baac283d", "name": "Stray `console.log` in TS/JS \u2014 mini-services/realtime-service/index.ts:130", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 mini-services/realtime-service/index.ts:130"}, "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-3706b6458ccc29fc", "name": "Stray `console.log` in TS/JS \u2014 src/proxy.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/proxy.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-9193e2a375c66366", "name": "Stray `console.log` in TS/JS \u2014 src/scripts/seed-runner.ts:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/scripts/seed-runner.ts:5"}, "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-7a827664014e1b9c", "name": "Stray `console.log` in TS/JS \u2014 src/components/cache-buster.tsx:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/components/cache-buster.tsx:62"}, "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-b24e80e2307c2653", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/engines/ecommerce-engine.tsx:93", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/engines/ecommerce-engine.tsx:93"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8441fff71ca065bd", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/engines/engine-hub.tsx:210", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/engines/engine-hub.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-ceb8669dfeb0bd6a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/engines/pickup-drop-engine.tsx:142", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/engines/pickup-drop-engine.tsx:142"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-63260180729a6b7c", "name": "Stray `console.log` in TS/JS \u2014 src/components/auth/auth-provider.tsx:226", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/components/auth/auth-provider.tsx:226"}, "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-d835b33b765a96b6", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/shared/activity-feed.tsx:278", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/shared/activity-feed.tsx:278"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5f8b995e940bd55c", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ui/chart.tsx:83", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ui/chart.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-54465305e8744c41", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/customer/layout/customer-layout.tsx:99", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/customer/layout/customer-layout.tsx:99"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-834a76f7a4928497", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/customer/cart/customer-cart.tsx:207", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/customer/cart/customer-cart.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-10413ae28483d72a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/customer/home/customer-home.tsx:262", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/customer/home/customer-home.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-1597b61feba30f9f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/customer/wishlist/customer-wishlist.tsx:169", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/customer/wishlist/customer-wishlist.tsx:169"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-daddba314c0351e2", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/customer/profile/customer-profile.tsx:215", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/customer/profile/customer-profile.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-9f871dc8e10117ef", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/customer/checkout/customer-checkout.tsx:303", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/customer/checkout/customer-checkout.tsx:303"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2aaee277007a29e5", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/customer/store-picker/store-picker-modal.tsx:187", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/customer/store-picker/store-picker-modal.tsx:187"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f54dbca335042c66", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/customer/invoices/customer-invoice-detail.tsx:232", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/customer/invoices/customer-invoice-detail.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-05abcaaf309eaff5", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/products-view.tsx:39", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/products-view.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-fed70c2dc683ec9a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/sidebar.tsx:90", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/sidebar.tsx:90"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8150c1b1857be10a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/product-import-view.tsx:671", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/product-import-view.tsx:671"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c2bde765995f65f1", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/businesses-view.tsx:29", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/businesses-view.tsx:29"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1212a0b3d8c4fa44", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/staff-view.tsx:589", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/staff-view.tsx:589"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-24f8a43e820edaa7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/mobile-apps-view.tsx:300", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/mobile-apps-view.tsx:300"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3b68c7170e397ce3", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/release-management-view.tsx:98", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/release-management-view.tsx:98"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d754807f2f636e8c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/audit-logs-view.tsx:471", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/audit-logs-view.tsx:471"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4fa0b3212a998a92", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/support-view.tsx:105", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/support-view.tsx:105"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1c9327f6484d2056", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/pos-view.tsx:46", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/pos-view.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-689dea3b8c6e2f05", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/header.tsx:39", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/header.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-745c7dd93ec1dfc5", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/sales-view.tsx:85", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/sales-view.tsx:85"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9e468dd33665cd3c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/platform-overview.tsx:134", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/platform-overview.tsx:134"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ed556fe5dfeac784", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/inventory-view.tsx:162", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/inventory-view.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-241b0007f8a9adcd", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/backup-monitoring-view.tsx:152", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/backup-monitoring-view.tsx:152"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f4364082e86976d1", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/deployment-pipeline-view.tsx:131", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/deployment-pipeline-view.tsx:131"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5b18cc2c4059b311", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/loyalty-view.tsx:147", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/loyalty-view.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-37786cae78d85491", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/mobile-versions-view.tsx:108", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/mobile-versions-view.tsx:108"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-28ecd6c2afded2c4", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/architecture-view.tsx:256", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/architecture-view.tsx:256"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2f1affa4335f4349", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/grocery/pos-terminal.tsx:420", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/grocery/pos-terminal.tsx:420"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-19f7a910f2993ae1", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/grocery/admin-dashboard.tsx:379", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/grocery/admin-dashboard.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-20cf567ed084b634", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/grocery/grocery-store.tsx:507", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/grocery/grocery-store.tsx:507"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6c52b4e7810d05dd", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/layout/app-sidebar.tsx:339", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/layout/app-sidebar.tsx:339"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d02a81ce6759ba0d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/layout/admin-header.tsx:76", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/layout/admin-header.tsx:76"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ce016d3e8d53b96b", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/users/platform-users-view.tsx:660", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/users/platform-users-view.tsx:660"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-80c15dfe3dc94bca", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/account-billing/drawers/create-invoice-dialog.", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/account-billing/drawers/create-invoice-dialog.tsx:154"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-34a58a8f70e115bf", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/account-billing/drawers/account-drawer.tsx:284", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/account-billing/drawers/account-drawer.tsx:284"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3d3138f70ac1de98", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/account-billing/tabs/services-tab.tsx:135", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/account-billing/tabs/services-tab.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-91fbb7b5153379f5", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/account-billing/invoice-preview/invoice-previe", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/account-billing/invoice-preview/invoice-preview-panel.tsx:320"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0bdbc7d87a2a761f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/notifications/notification-center.tsx:258", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/notifications/notification-center.tsx:258"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b320d64d7dbc4425", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/notifications/notifications-view.tsx:560", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/notifications/notifications-view.tsx:560"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-57fa5517a58ebd55", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/leads/lead-detail-enhanced.tsx:342", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/leads/lead-detail-enhanced.tsx:342"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-125e3895d1e12f88", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/leads/leads-view.tsx:719", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/leads/leads-view.tsx:719"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f2c2eb38d69abb14", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/leads/follow-up-reminders.tsx:273", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/leads/follow-up-reminders.tsx:273"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2de1678dcf2372cc", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/addons/addons-view.tsx:242", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/addons/addons-view.tsx:242"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4b6ff0fe7c862e9b", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/shared/impersonation-bar.tsx:30", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/shared/impersonation-bar.tsx:30"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d46cfe7c3bb726cc", "name": "Stray `console.log` in TS/JS \u2014 src/components/admin/revenue-ops/ownership-base-view.tsx:191", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/components/admin/revenue-ops/ownership-base-view.tsx:191"}, "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-2fe71280f341404d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/audit/audit-log-viewer.tsx:610", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/audit/audit-log-viewer.tsx:610"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-abd4a55cfdab138b", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/businesses/businesses-view.tsx:767", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/businesses/businesses-view.tsx:767"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2a4c570983f72898", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/brand-studio/brand-studio-view.tsx:292", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/brand-studio/brand-studio-view.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-d6fb9abd0d51c118", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/imports/business-import-view.tsx:320", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/imports/business-import-view.tsx:320"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-37ebb816615ad3eb", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/imports/leads-import-view.tsx:596", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/imports/leads-import-view.tsx:596"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-632c28a64f63b2f3", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/onboarding/onboarding-view.tsx:709", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/onboarding/onboarding-view.tsx:709"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-24b7dc90ab53ff56", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/sales/sales-view.tsx:966", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/sales/sales-view.tsx:966"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-455ef31451509c14", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/payment-plugins/payment-plugins-view.tsx:172", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/payment-plugins/payment-plugins-view.tsx:172"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fa6435e256aa93b7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/subscriptions/subscriptions-view.tsx:917", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/subscriptions/subscriptions-view.tsx:917"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4f4ad8c546259917", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/domains/domains-view.tsx:438", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/domains/domains-view.tsx:438"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-15228e214594445a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/workflow/workflow-config-view.tsx:115", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/workflow/workflow-config-view.tsx:115"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0975c544ee8df955", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/workflow/workflow-engine-view.tsx:323", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/workflow/workflow-engine-view.tsx:323"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-481f203bd1090a4c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/delivery/layout/delivery-layout.tsx:33", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/delivery/layout/delivery-layout.tsx:33"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9746882d8cbbc336", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/layout/business-sidebar.tsx:314", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/layout/business-sidebar.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-03eb6aece523a1bb", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/layout/store-selector.tsx:73", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/layout/store-selector.tsx:73"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-99e976ca02bd710f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/layout/business-context-bar.tsx:105", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/layout/business-context-bar.tsx:105"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-db0b6c19f75a74a6", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/layout/business-header.tsx:80", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/layout/business-header.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-39191d4e6b772090", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/users/user-creation-view.tsx:566", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/users/user-creation-view.tsx:566"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d8babc60160d56cc", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/users/user-management-view.tsx:319", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/users/user-management-view.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-f1a4452afc04a458", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/stores/stores-view.tsx:525", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/stores/stores-view.tsx:525"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3a1b15c2d391a595", "name": "Stray `console.log` in TS/JS \u2014 src/components/business/orders/orders-view.tsx:422", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/components/business/orders/orders-view.tsx:422"}, "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-57eeb8eb151d3cf2", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/orders/new-order-alert.tsx:281", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/orders/new-order-alert.tsx:281"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e85e6950fb0194cd", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/orders/create-order-dialog.tsx:679", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/orders/create-order-dialog.tsx:679"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b2cd03f6a90558d1", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/apps/apps-view.tsx:203", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/apps/apps-view.tsx:203"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8c86e82d8d1dadb5", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/dashboard/business-dashboard.tsx:543", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/dashboard/business-dashboard.tsx:543"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-08ef86e79cab3151", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/workspace/workspace-overview.tsx:207", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/workspace/workspace-overview.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-c944be0213848d27", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/customers/bulk-customer-upload.tsx:649", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/customers/bulk-customer-upload.tsx:649"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6bd4cbc1c73fe48d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/customers/customers-view.tsx:1045", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/customers/customers-view.tsx:1045"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ff680ed3ae5eb477", "name": "Stray `console.log` in TS/JS \u2014 src/components/business/customers/customers-view.tsx:399", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/components/business/customers/customers-view.tsx:399"}, "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-73dcf734705f2a16", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/categories/categories-view.tsx:367", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/categories/categories-view.tsx:367"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7ba00fb0082ff7e9", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/pos/thermal-receipt-v2.tsx:332", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/pos/thermal-receipt-v2.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-e0cac9660704e220", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/pos/pos-view.tsx:491", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/pos/pos-view.tsx:491"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8949e74167a650ab", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/pos/pos-enterprise.tsx:157", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/pos/pos-enterprise.tsx:157"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0e399a32990be130", "name": "Stray `console.log` in TS/JS \u2014 src/components/business/pos/pos-enterprise.tsx:844", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/components/business/pos/pos-enterprise.tsx:844"}, "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-766c38358e8427a4", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/products/products-view.tsx:909", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/products/products-view.tsx:909"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8c4dbc522e658386", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/pos/thermal-receipt.tsx:279", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/pos/thermal-receipt.tsx:279"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1e1ff2c1cfabb1da", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/pos/print-styles.tsx:11", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/pos/print-styles.tsx:11"}, "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-ba54335cc53493d2", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/pos/pos-production.tsx:495", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/pos/pos-production.tsx:495"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bc2ef4881ccca265", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/storefront/web/storefront-checkout.tsx:269", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/storefront/web/storefront-checkout.tsx:269"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c8e3106009e79e90", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/storefront/web/storefront-store-picker.tsx:296", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/storefront/web/storefront-store-picker.tsx:296"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5c5fb4fe97ca945a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/storefront/web/storefront-product-card.tsx:203", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/storefront/web/storefront-product-card.tsx:203"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6278ef9b66f5f4f0", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/storefront/web/storefront-layout.tsx:258", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/storefront/web/storefront-layout.tsx:258"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9635cae4e8e3d910", "name": "Stray `console.log` in TS/JS \u2014 src/components/storefront/web/storefront-home.tsx:136", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/components/storefront/web/storefront-home.tsx:136"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-800d11392309b100", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/storefront/web/storefront-product.tsx:547", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/storefront/web/storefront-product.tsx:547"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8babeb45f4d597c6", "name": "Stray `console.log` in TS/JS \u2014 src/components/storefront/web/storefront-product.tsx:160", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/components/storefront/web/storefront-product.tsx:160"}, "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-388114a1d7e60b3d", "name": "Stray `console.log` in TS/JS \u2014 src/components/storefront/web/storefront-category.tsx:101", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/components/storefront/web/storefront-category.tsx:101"}, "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-290e87bc6818eeb5", "name": "Stray `console.log` in TS/JS \u2014 src/app/page.tsx:356", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/page.tsx:356"}, "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-c5c2bdb2aa2ca539", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:89", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:89"}, "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-8721014020b3c924", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/deploy/route.ts:137", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/deploy/route.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-d87bef1b6e66ae98", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/admin/account-billing/[businessId]/invoices/[id]/pdf/route.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/admin/account-billing/[businessId]/invoices/[id]/pdf/route.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-8650a3c7904c1657", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/admin/revenue-ops/ownership/businesses/route.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/admin/revenue-ops/ownership/businesses/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-bfb562a8b9f65d6f", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/business/logo/upload/route.ts:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/business/logo/upload/route.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-65f57065f396cb80", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/core/upload/route.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/upload/route.ts:52"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-efb268743c9c2c44", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/core/auth/verify-otp/route.ts:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/auth/verify-otp/route.ts:64"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d2a6cabe9e341a11", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/core/auth/login/route.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/auth/login/route.ts:44"}, "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-6028637c1ee3fab4", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/core/auth/forgot-password/reset/route.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/auth/forgot-password/reset/route.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-b7eb0e21ed444a8c", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/core/auth/forgot-password/verify/route.ts:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/auth/forgot-password/verify/route.ts:54"}, "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-4bb7be587f6c23be", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/core/auth/forgot-password/send-otp/route.ts:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/auth/forgot-password/send-otp/route.ts:43"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-54f6838b50fd64ff", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/core/auth/set-password/route.ts:74", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/auth/set-password/route.ts:74"}, "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-c58731e10275c0e1", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/core/auth/send-otp/route.ts:127", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/auth/send-otp/route.ts:127"}, "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-54dc70059f042e34", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/core/businesses/[businessId]/customers/route.ts:83", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/businesses/[businessId]/customers/route.ts:83"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-23c33d7b9c4b8e46", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/core/businesses/[businessId]/customers/[customerId]/disable-login/route.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/businesses/[businessId]/customers/[customerId]/disable-login/route.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-92a8d63baa2f08d4", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/core/businesses/[businessId]/customers/[customerId]/reset-password/route.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/businesses/[businessId]/customers/[customerId]/reset-password/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-6ef2e86d75f8ebd4", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/core/businesses/[businessId]/customers/[customerId]/enable-login/route.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/businesses/[businessId]/customers/[customerId]/enable-login/route.ts:51"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f097080317048971", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/core/businesses/[businessId]/customers/[customerId]/send-password-reset/route", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/businesses/[businessId]/customers/[customerId]/send-password-reset/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-a2120d199b3e233a", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/core/businesses/[businessId]/customers/[customerId]/force-password-change/rou", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/businesses/[businessId]/customers/[customerId]/force-password-change/route.ts:50"}, "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-da2993cb6a7e16c3", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/core/businesses/[businessId]/invoices/[invoiceId]/pdf/route.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/businesses/[businessId]/invoices/[invoiceId]/pdf/route.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-157c1d63a5fa4634", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/core/payments/razorpay/webhook/route.ts:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/payments/razorpay/webhook/route.ts:60"}, "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-b7888abb4217adee", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/core/storefront/orders/[orderId]/invoice/pdf/route.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/storefront/orders/[orderId]/invoice/pdf/route.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-02ee7fe9b64f48a1", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/core/storefront/auth/login-password/route.ts:162", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/storefront/auth/login-password/route.ts:162"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ee9bc3b0c4d0009b", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/core/storefront/auth/forgot-password/route.ts:98", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/storefront/auth/forgot-password/route.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-13321deb9b71141f", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/core/storefront/auth/set-password/route.ts:114", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/storefront/auth/set-password/route.ts:114"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3da05b911627ccc2", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/core/storefront/auth/check-customer/route.ts:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/storefront/auth/check-customer/route.ts:82"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c0e2df1867d9cca8", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/core/storefront/auth/change-password/route.ts:129", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/storefront/auth/change-password/route.ts:129"}, "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-d5eaadbe1ae526cb", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/core/storefront/auth/reset-password-via-token/route.ts:100", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/storefront/auth/reset-password-via-token/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-49493259ee2daab5", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/core/storefront/products/route.ts:266", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/storefront/products/route.ts:266"}, "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-80f77ff9e7ce274d", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/debug/storefront-products/route.ts:106", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/debug/storefront-products/route.ts:106"}, "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-e7ab1bc2f4c84d22", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/debug/product-image/route.ts:116", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/debug/product-image/route.ts:116"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-153f4d711016c8a2", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/delete-account/page.tsx:120", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/delete-account/page.tsx:120"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-104170c2372c7dce", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/offer-letter-print/[id]/page.tsx:822", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/offer-letter-print/[id]/page.tsx:822"}, "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-74bdc555f5267903", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/annexure-print/[id]/page.tsx:487", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/annexure-print/[id]/page.tsx:487"}, "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-6f80c9a29ece0477", "name": "Stray `console.log` in TS/JS \u2014 src/lib/email-service.ts:210", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/email-service.ts:210"}, "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-77b4adb25325bbdf", "name": "TODO/FIXME marker in shipping code \u2014 src/lib/error-handler.ts:389", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/lib/error-handler.ts:389"}, "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-04237e74cf9b1c08", "name": "Stray `console.log` in TS/JS \u2014 src/lib/seed.ts:151", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/seed.ts:151"}, "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-a1040dffa8ce4ebf", "name": "Stray `console.log` in TS/JS \u2014 src/lib/performance.ts:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/performance.ts:92"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bf514edf94b47c37", "name": "TODO/FIXME marker in shipping code \u2014 src/lib/core/notification.ts:555", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/lib/core/notification.ts:555"}, "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-d642fb7c58e1130f", "name": "Stray `console.log` in TS/JS \u2014 src/hooks/use-toast-notifications.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/hooks/use-toast-notifications.ts:38"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f1eaecc745adcc84", "name": "Possible secret in scripts/ensure-super-admin.js", "shortDescription": {"text": "Possible secret in scripts/ensure-super-admin.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-f3fc3e0f00dc80d0", "name": "Insecure pattern 'eval_used' in skills/skill-vetter/SKILL.md:43", "shortDescription": {"text": "Insecure pattern 'eval_used' in skills/skill-vetter/SKILL.md:43"}, "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-45ca0e03381c8bd4", "name": "Insecure pattern 'exec_used' in skills/skill-vetter/SKILL.md:43", "shortDescription": {"text": "Insecure pattern 'exec_used' in skills/skill-vetter/SKILL.md:43"}, "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-7c034fd5f0863166", "name": "Insecure pattern 'direct_innerhtml_assignment' in skills/skill-creator/assets/eval_review.html:69", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in skills/skill-creator/assets/eval_review.html:69"}, "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-e760833c08c5b3e2", "name": "Insecure pattern 'direct_innerhtml_assignment' in skills/skill-creator/eval-viewer/viewer.html:766", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in skills/skill-creator/eval-viewer/viewer.html:766"}, "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-3cbb2c0342a52154", "name": "Insecure pattern 'node_child_process' in skills/web-shader-extractor/scripts/fetch-rendered-dom.mjs:19", "shortDescription": {"text": "Insecure pattern 'node_child_process' in skills/web-shader-extractor/scripts/fetch-rendered-dom.mjs:19"}, "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-d0f47ea49566f89a", "name": "Insecure pattern 'node_child_process' in skills/pdf/scripts/html2poster.js:36", "shortDescription": {"text": "Insecure pattern 'node_child_process' in skills/pdf/scripts/html2poster.js:36"}, "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-85898b39797273b6", "name": "Insecure pattern 'node_child_process' in skills/pdf/scripts/html2pdf-next.js:25", "shortDescription": {"text": "Insecure pattern 'node_child_process' in skills/pdf/scripts/html2pdf-next.js:25"}, "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-1e721a18a7f59464", "name": "Insecure pattern 'cors_wildcard' in mini-services/realtime-service/index.ts:96", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in mini-services/realtime-service/index.ts:96"}, "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-6f38a33241735455", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/ui/chart.tsx:83", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/ui/chart.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-4372ff2b53a3603c", "name": "Insecure pattern 'local_storage_auth_token' in src/components/customer/auth/customer-auth.tsx:60", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in src/components/customer/auth/customer-auth.tsx:60"}, "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-beccea3cd08b3460", "name": "Insecure pattern 'document_write' in src/components/customer/invoices/customer-invoice-detail.tsx:147", "shortDescription": {"text": "Insecure pattern 'document_write' in src/components/customer/invoices/customer-invoice-detail.tsx:147"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0c12acf59deccf9c", "name": "Insecure pattern 'weak_hash' in src/components/dashboard/play-store-view.tsx:138", "shortDescription": {"text": "Insecure pattern 'weak_hash' in src/components/dashboard/play-store-view.tsx:138"}, "fullDescription": {"text": "Found a known-risky pattern (weak_hash). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-81471d24e2168b24", "name": "Insecure pattern 'document_write' in src/components/admin/account-billing/document-preview/document-preview-panel.tsx:13", "shortDescription": {"text": "Insecure pattern 'document_write' in src/components/admin/account-billing/document-preview/document-preview-panel.tsx:136"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-03538a2aa6b3eb35", "name": "Insecure pattern 'document_write' in src/components/admin/account-billing/tabs/invoices-tab.tsx:124", "shortDescription": {"text": "Insecure pattern 'document_write' in src/components/admin/account-billing/tabs/invoices-tab.tsx:124"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e5cd980918f0246c", "name": "Insecure pattern 'document_write' in src/components/admin/account-billing/invoice-preview/invoice-preview-panel.tsx:219", "shortDescription": {"text": "Insecure pattern 'document_write' in src/components/admin/account-billing/invoice-preview/invoice-preview-panel.tsx:219"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b00fbcec1c5bb016", "name": "Insecure pattern 'document_write' in src/components/admin/leads/quote-proposal-view.tsx:723", "shortDescription": {"text": "Insecure pattern 'document_write' in src/components/admin/leads/quote-proposal-view.tsx:723"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8f44bef882578c45", "name": "Insecure pattern 'document_write' in src/components/admin/commission/commission-view.tsx:222", "shortDescription": {"text": "Insecure pattern 'document_write' in src/components/admin/commission/commission-view.tsx:222"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b0e77d7ac78f4f9c", "name": "Insecure pattern 'document_write' in src/components/admin/documents/proposal-documents-view.tsx:217", "shortDescription": {"text": "Insecure pattern 'document_write' in src/components/admin/documents/proposal-documents-view.tsx:217"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7e14ff1fced09eee", "name": "Possible secret in src/components/admin/demo-tenants/demo-tenants-view.tsx", "shortDescription": {"text": "Possible secret in src/components/admin/demo-tenants/demo-tenants-view.tsx"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-7e7b68136d086ad1", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/pos/print-styles.tsx:11", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/pos/print-styles.tsx:11"}, "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-fd6ede6e66a4c3f4", "name": "Possible secret in src/components/storefront/web/storefront-auth.tsx", "shortDescription": {"text": "Possible secret in src/components/storefront/web/storefront-auth.tsx"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-9aaf1b4b2add67c2", "name": "Insecure pattern 'local_storage_auth_token' in src/components/storefront/web/storefront-auth.tsx:197", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in src/components/storefront/web/storefront-auth.tsx:197"}, "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-ecb267b0f1379722", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:89", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:89"}, "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-cdc67f270da69037", "name": "Insecure pattern 'local_storage_auth_token' in src/app/reset-password/page.tsx:83", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in src/app/reset-password/page.tsx:83"}, "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-60f84696da35af34", "name": "Insecure pattern 'node_child_process' in src/app/api/deploy/route.ts:35", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/app/api/deploy/route.ts:35"}, "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-5cdd0313651c22a0", "name": "Possible secret in src/app/api/core/demo-tenants/route.ts", "shortDescription": {"text": "Possible secret in src/app/api/core/demo-tenants/route.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-e16c8cbbced0a939", "name": "Possible secret in src/app/api/core/seed/route.ts", "shortDescription": {"text": "Possible secret in src/app/api/core/seed/route.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-4357568aeb787f31", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/offer-letter-print/[id]/page.tsx:822", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/offer-letter-print/[id]/page.tsx:822"}, "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-ad47b648ac47751f", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/annexure-print/[id]/page.tsx:487", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/annexure-print/[id]/page.tsx:487"}, "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-993d7e968e6bcad7", "name": "Insecure pattern 'local_storage_auth_token' in src/hooks/use-api.ts:225", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in src/hooks/use-api.ts:225"}, "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-8f454b753634844e", "name": "Very large file: skills/ppt/scripts/html2pptx.js (1336 lines)", "shortDescription": {"text": "Very large file: skills/ppt/scripts/html2pptx.js (1336 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-19a149687ba084bb", "name": "Very large file: skills/ppt/scripts/pdf.py (2046 lines)", "shortDescription": {"text": "Very large file: skills/ppt/scripts/pdf.py (2046 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-20b24fdd8dedeba9", "name": "Very large file: skills/docx/scripts/document.py (1333 lines)", "shortDescription": {"text": "Very large file: skills/docx/scripts/document.py (1333 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-885d2ea68b84a7c9", "name": "Very large file: skills/xlsx/xlsx.py (1299 lines)", "shortDescription": {"text": "Very large file: skills/xlsx/xlsx.py (1299 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-807d6f5cf8607d0b", "name": "Very large file: skills/pdf/scripts/toc_validate.py (2075 lines)", "shortDescription": {"text": "Very large file: skills/pdf/scripts/toc_validate.py (2075 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-56bc3f95aef7a60c", "name": "Very large file: skills/pdf/scripts/pdf.py (2959 lines)", "shortDescription": {"text": "Very large file: skills/pdf/scripts/pdf.py (2959 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-2af1e0e48859b610", "name": "Very large file: skills/pdf/scripts/poster_validate.py (1337 lines)", "shortDescription": {"text": "Very large file: skills/pdf/scripts/poster_validate.py (1337 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-13c4c33c888bfa84", "name": "Very large file: skills/pdf/scripts/design_engine.py (2816 lines)", "shortDescription": {"text": "Very large file: skills/pdf/scripts/design_engine.py (2816 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-1680257075b89925", "name": "Very large file: src/components/admin/settings/settings-view.tsx (1672 lines)", "shortDescription": {"text": "Very large file: src/components/admin/settings/settings-view.tsx (1672 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-1559776981a3a93e", "name": "Very large file: src/components/admin/users/platform-users-view.tsx (1232 lines)", "shortDescription": {"text": "Very large file: src/components/admin/users/platform-users-view.tsx (1232 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d35057dea6da4b07", "name": "Very large file: src/components/admin/leads/leads-view.tsx (1133 lines)", "shortDescription": {"text": "Very large file: src/components/admin/leads/leads-view.tsx (1133 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-0cc5f3c11dd49476", "name": "Very large file: src/components/admin/leads/quote-proposal-view.tsx (1179 lines)", "shortDescription": {"text": "Very large file: src/components/admin/leads/quote-proposal-view.tsx (1179 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-a27132526279df91", "name": "Very large file: src/components/admin/businesses/businesses-view.tsx (1987 lines)", "shortDescription": {"text": "Very large file: src/components/admin/businesses/businesses-view.tsx (1987 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4fb9da7039aa1f6d", "name": "Very large file: src/components/admin/brand-studio/brand-studio-view.tsx (1503 lines)", "shortDescription": {"text": "Very large file: src/components/admin/brand-studio/brand-studio-view.tsx (1503 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-07280dcdef0bcc0d", "name": "Very large file: src/components/admin/imports/leads-import-view.tsx (1037 lines)", "shortDescription": {"text": "Very large file: src/components/admin/imports/leads-import-view.tsx (1037 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-1e4fdb1462721fb8", "name": "Very large file: src/components/admin/sales/sales-view.tsx (1463 lines)", "shortDescription": {"text": "Very large file: src/components/admin/sales/sales-view.tsx (1463 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-01e60a4a8e4400f7", "name": "Very large file: src/components/admin/commission/commission-view.tsx (1869 lines)", "shortDescription": {"text": "Very large file: src/components/admin/commission/commission-view.tsx (1869 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-0509fababd64440d", "name": "Very large file: src/components/admin/subscriptions/subscriptions-view.tsx (1265 lines)", "shortDescription": {"text": "Very large file: src/components/admin/subscriptions/subscriptions-view.tsx (1265 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-023e457dfaf000b7", "name": "Very large file: src/components/business/orders/orders-view.tsx (1503 lines)", "shortDescription": {"text": "Very large file: src/components/business/orders/orders-view.tsx (1503 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-77c86b93051543f8", "name": "Very large file: src/components/business/operations/delivery-partners-view.tsx (1153 lines)", "shortDescription": {"text": "Very large file: src/components/business/operations/delivery-partners-view.tsx (1153 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-e3e8ad4074d65ef8", "name": "Very large file: src/components/business/customers/customers-view.tsx (2123 lines)", "shortDescription": {"text": "Very large file: src/components/business/customers/customers-view.tsx (2123 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-366282ab0c8a5540", "name": "Very large file: src/components/business/pos/pos-view.tsx (1320 lines)", "shortDescription": {"text": "Very large file: src/components/business/pos/pos-view.tsx (1320 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-b318e47ccf64e048", "name": "Very large file: src/components/business/pos/pos-enterprise.tsx (1321 lines)", "shortDescription": {"text": "Very large file: src/components/business/pos/pos-enterprise.tsx (1321 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-b90a00bba9eee26d", "name": "Very large file: src/components/business/products/products-view.tsx (1705 lines)", "shortDescription": {"text": "Very large file: src/components/business/products/products-view.tsx (1705 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ac87770a21433698", "name": "Very large file: src/components/pos/pos-production.tsx (1431 lines)", "shortDescription": {"text": "Very large file: src/components/pos/pos-production.tsx (1431 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-567e32272ca57c0a", "name": "Very large file: src/lib/seed.ts (1139 lines)", "shortDescription": {"text": "Very large file: src/lib/seed.ts (1139 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-f6485d8c1c0ea199", "name": "Very large file: src/lib/demo-data.ts (1606 lines)", "shortDescription": {"text": "Very large file: src/lib/demo-data.ts (1606 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "0 test file(s) for 869 source file(s) (ratio 0.00). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-11eb9745477dd0e5", "name": "Node manifest has dependencies but no lockfile: skills/podcast-generate/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: skills/podcast-generate/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dd6f2e3e788daecc", "name": "Node manifest has dependencies but no lockfile: skills/stock-analysis-skill/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: skills/stock-analysis-skill/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 1147 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 829 placeholder/mock markers across 143 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-11825279136b53a3", "name": "CI is configured but no tests are detected", "shortDescription": {"text": "CI is configured but no tests are detected"}, "fullDescription": {"text": "A CI pipeline exists, but the scan found no test files to gate. Opus labeled this generated-code pattern as config theater: release machinery exists, but it has little behavioral signal."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: tests, lockfile. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing tests, lockfile. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5bc8819ae419d646", "name": "Agent authority lacks a verifier contract: skills/skill-vetter/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/skill-vetter/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-008fedc96cf1e09a", "name": "Agent authority lacks a verifier contract: skills/skill-finder-cn/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/skill-finder-cn/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-5084f4df945060af", "name": "Agent authority lacks a verifier contract: skills/aminer-academic-search/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/aminer-academic-search/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-84798c2926ea8e96", "name": "Agent instruction contains unpinned remote install: skills/agent-browser/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/agent-browser/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d3466b87cba16628", "name": "Agent authority lacks a verifier contract: skills/podcast-generate/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/podcast-generate/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-d1eccd47941133f6", "name": "Agent instruction/config may expose a secret: skills/ASR/SKILL.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: skills/ASR/SKILL.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-244aac486fe1e359", "name": "Agent authority lacks a verifier contract: skills/web-shader-extractor/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/web-shader-extractor/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-22f4e4f808522ffb", "name": "Agent instruction contains unpinned remote install: skills/ppt/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/ppt/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6087e7f713141630", "name": "Agent authority lacks a verifier contract: skills/ppt/.claude/settings.local.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/ppt/.claude/settings.local.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-396b44a71970fa07", "name": "Agent instruction/config may expose a secret: skills/web-reader/SKILL.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: skills/web-reader/SKILL.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5408a3f73f9ceb3b", "name": "Agent authority lacks a verifier contract: skills/ui-ux-pro-max/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/ui-ux-pro-max/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-97b428c395732faf", "name": "Agent instruction/config may expose a secret: skills/web-search/SKILL.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: skills/web-search/SKILL.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d5552e495c2e5b4e", "name": "Agent authority lacks a verifier contract: skills/aminer-daily-paper/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/aminer-daily-paper/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-e1cc9f4f4dbda38f", "name": "Agent instruction/config may expose a secret: skills/image-generation/SKILL.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: skills/image-generation/SKILL.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9943681876a3a424", "name": "Agent instruction contains unpinned remote install: skills/fullstack-dev/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/fullstack-dev/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c1453cb0652ab567", "name": "Agent authority lacks a verifier contract: skills/gift-evaluator/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/gift-evaluator/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-6d90d349e0c3b0d1", "name": "Commented-code block (5 lines) in ecosystem.config.js:11", "shortDescription": {"text": "Commented-code block (5 lines) in ecosystem.config.js: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-9428a35a45736a06", "name": "Legacy-named symbol `store_storeCode_constraint_v1` in instrumentation.ts:21", "shortDescription": {"text": "Legacy-named symbol `store_storeCode_constraint_v1` in instrumentation.ts:21"}, "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-c4d7f064f9297ab1", "name": "Commented-code block (6 lines) in next.config.js:12", "shortDescription": {"text": "Commented-code block (6 lines) in next.config.js: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-b1ec34d876675f6b", "name": "Commented-code block (6 lines) in scripts/repair-delivery-users.mjs:4", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/repair-delivery-users.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-32851bf2f20eed5b", "name": "Commented-code block (5 lines) in scripts/diagnose-delivery-login.mjs:4", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/diagnose-delivery-login.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-f81a392662b0a8dd", "name": "Commented-code block (5 lines) in skills/skill-creator/scripts/improve_description.py:147", "shortDescription": {"text": "Commented-code block (5 lines) in skills/skill-creator/scripts/improve_description.py: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-2df39936564ffc2d", "name": "Network/subprocess call without timeout or try/except \u2014 skills/skill-creator/scripts/run_eval.py:85", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/skill-creator/scripts/run_eval.py:85"}, "fullDescription": {"text": "`subprocess.Popen(...)` 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-1f108110b8c97add", "name": "Commented-code block (5 lines) in skills/ppt/scripts/html2pptx.js:826", "shortDescription": {"text": "Commented-code block (5 lines) in skills/ppt/scripts/html2pptx.js:826"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ba8c49307db501d4", "name": "Legacy-named symbol `form_fill_legacy` in skills/ppt/scripts/pdf.py:1240", "shortDescription": {"text": "Legacy-named symbol `form_fill_legacy` in skills/ppt/scripts/pdf.py:1240"}, "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-5fd9d83bbda20b00", "name": "Network/subprocess call without timeout or try/except \u2014 skills/ppt/scripts/pdf.py:378", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/ppt/scripts/pdf.py:378"}, "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-09a95a0577b71ef0", "name": "Commented-code block (6 lines) in skills/ppt/scripts/thumbnail.py:32", "shortDescription": {"text": "Commented-code block (6 lines) in skills/ppt/scripts/thumbnail.py: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-f876c19fc88bc08f", "name": "Network/subprocess call without timeout or try/except \u2014 skills/ppt/scripts/thumbnail.py:183", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/ppt/scripts/thumbnail.py:183"}, "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-c03753aeb70c874f", "name": "Network/subprocess call without timeout or try/except \u2014 skills/ppt/ooxml/scripts/validation/redlining.py:153", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/ppt/ooxml/scripts/validation/redlining.py:153"}, "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-8e8b1c847d947706", "name": "Legacy-named symbol `xml_copy` in skills/ppt/ooxml/scripts/validation/base.py:769", "shortDescription": {"text": "Legacy-named symbol `xml_copy` in skills/ppt/ooxml/scripts/validation/base.py:769"}, "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-aa5046b687bdc575", "name": "Network/subprocess call without timeout or try/except \u2014 skills/xlsx/xlsx.py:261", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/xlsx/xlsx.py:261"}, "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-e87ffc873a2ef11e", "name": "Legacy-named symbol `find_toc_field_boundaries_v2` in skills/pdf/scripts/toc_validate.py:306", "shortDescription": {"text": "Legacy-named symbol `find_toc_field_boundaries_v2` in skills/pdf/scripts/toc_validate.py: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-4d6022b5f119e24e", "name": "Commented-code block (6 lines) in skills/pdf/scripts/html2pdf-next.js:282", "shortDescription": {"text": "Commented-code block (6 lines) in skills/pdf/scripts/html2pdf-next.js:282"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bc45e82aaac44004", "name": "Commented-code block (6 lines) in skills/pdf/scripts/cover_validate.js:105", "shortDescription": {"text": "Commented-code block (6 lines) in skills/pdf/scripts/cover_validate.js: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-e89d50e15758800f", "name": "Legacy-named symbol `form_fill_legacy` in skills/pdf/scripts/pdf.py:1330", "shortDescription": {"text": "Legacy-named symbol `form_fill_legacy` in skills/pdf/scripts/pdf.py:1330"}, "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-743e311198f7d1b3", "name": "Network/subprocess call without timeout or try/except \u2014 skills/pdf/scripts/pdf.py:389", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/pdf/scripts/pdf.py:389"}, "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-eb8b87cb1fbabb7f", "name": "Commented-code block (6 lines) in skills/pdf/scripts/design_engine.py:343", "shortDescription": {"text": "Commented-code block (6 lines) in skills/pdf/scripts/design_engine.py:343"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-95862d2fb8d9eafd", "name": "Commented-code block (5 lines) in public/sw.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in public/sw.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eab30f5b9e120405", "name": "Commented-code block (14 lines) in mini-services/realtime-service/index.ts:5", "shortDescription": {"text": "Commented-code block (14 lines) in mini-services/realtime-service/index.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-22501105d39969bb", "name": "Commented-code block (5 lines) in src/proxy.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/proxy.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-728236439c576914", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/stores/auth-store.ts:330", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/stores/auth-store.ts:330"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-572b6e41cbeaca8b", "name": "Commented-code block (6 lines) in src/components/cache-buster.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/cache-buster.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-76ffd07f772a2e7d", "name": "Commented-code block (5 lines) in src/components/auth/auth-provider.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/auth/auth-provider.tsx: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-d6ce12778e8b5c7c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/auth/session-provider.tsx:99", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/auth/session-provider.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-e1bd6e9381e0d929", "name": "Commented-code block (6 lines) in src/components/shared/notification-bell.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/shared/notification-bell.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-992de55aba9bd37f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/shared/notification-bell.tsx:201", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/shared/notification-bell.tsx:201"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-721d796bac486d75", "name": "Commented-code block (5 lines) in src/components/ui/connection-status.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/ui/connection-status.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-448f70fc42ea6a20", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/customer/auth/customer-login.tsx:55", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/customer/auth/customer-login.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-dd548d7b8ed0b6b5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/customer/auth/customer-register.tsx:65", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/customer/auth/customer-register.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-73db4d239da86827", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/customer/auth/customer-auth.tsx:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/customer/auth/customer-auth.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-0b441cfe23f3211b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/customer/checkout/customer-checkout.tsx:99", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/customer/checkout/customer-checkout.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-7ffbc1fc1d9e7b8a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/customer/store-picker/store-picker-modal.tsx:72", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/customer/store-picker/store-picker-modal.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-2e90f769258ea07b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/staff-view.tsx:261", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/staff-view.tsx:261"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7e29113c8d10fa11", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/tax-view.tsx:114", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/tax-view.tsx:114"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8e9f5d8ec04e9918", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/ops-dashboard-view.tsx:111", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/ops-dashboard-view.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-2ad2a946ce8a7809", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/grocery/admin-dashboard.tsx:123", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/grocery/admin-dashboard.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-a028d61c3cff5e2f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/users/platform-users-view.tsx:106", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/users/platform-users-view.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-e55ad32f9cc9eec8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/account-billing/tabs/invoices-tab.tsx:90", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/account-billing/tabs/invoices-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-05430516bf69ad46", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/account-billing/tabs/accounts-tab.tsx:68", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/account-billing/tabs/accounts-tab.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-3e4e7d1cd47ea75e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/account-billing/tabs/payments-tab.tsx:56", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/account-billing/tabs/payments-tab.tsx: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-dff7c59ddd791708", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/account-billing/tabs/services-tab.tsx:58", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/account-billing/tabs/services-tab.tsx: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-c51dbb741f2ae71c", "name": "Commented-code block (5 lines) in src/components/admin/notifications/notification-center.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/admin/notifications/notification-center.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ef9dff9d45feada9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/leads/leads-view.tsx:299", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/leads/leads-view.tsx:299"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ecc51f394238c767", "name": "Legacy-named symbol `product_intro_v2` in src/components/admin/leads/crm-data.ts:113", "shortDescription": {"text": "Legacy-named symbol `product_intro_v2` in src/components/admin/leads/crm-data.ts:113"}, "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-40e3ada8f4802f20", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/leads/sales-rep-performance.tsx:60", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/leads/sales-rep-performance.tsx:60"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-169e6e13dd630ae2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/addons/addons-view.tsx:90", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/addons/addons-view.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-169bfea3532f4e28", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/revenue-ops/revenue-commission-processing.tsx:110", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/revenue-ops/revenue-commission-processing.tsx:110"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cfcf5bed61a09d51", "name": "Commented-code block (5 lines) in src/components/admin/audit/audit-log-viewer.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/admin/audit/audit-log-viewer.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c1e3f37e07ee55b2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/businesses/businesses-view.tsx:473", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/businesses/businesses-view.tsx:473"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-393adee723531668", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/websites/quantix-website-view.tsx:140", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/websites/quantix-website-view.tsx:140"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6f0b383af05130b3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/payment-plugins/payment-plugins-view.tsx:148", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/payment-plugins/payment-plugins-view.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-0c8faf8c54208862", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/commission/commission-view.tsx:727", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/commission/commission-view.tsx:727"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d6f0a3f951a6b60b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/subscriptions/subscriptions-view.tsx:314", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/subscriptions/subscriptions-view.tsx:314"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-624b96878258237f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/rbac/permission-matrix-view.tsx:137", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/rbac/permission-matrix-view.tsx:137"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f7349341ff28e15e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/invoices/platform-invoices-view.tsx:149", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/invoices/platform-invoices-view.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-a56a3f5b7070f381", "name": "Commented-code block (5 lines) in src/components/delivery/auth/delivery-login.tsx:12", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/delivery/auth/delivery-login.tsx:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-223403abe43259d9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/settings/store-settings.tsx:92", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/settings/store-settings.tsx:92"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7161c8ee5392f7bc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/users/user-creation-view.tsx:114", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/users/user-creation-view.tsx:114"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2f26471ccf360fc6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/stores/stores-view.tsx:252", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/stores/stores-view.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-ce47d8ee47aed09b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/orders/orders-view.tsx:469", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/orders/orders-view.tsx:469"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ee7c0d88ddfacf95", "name": "Commented-code block (7 lines) in src/components/business/orders/new-order-alert.tsx:8", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/business/orders/new-order-alert.tsx:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ec63b323921da5f1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/orders/create-order-dialog.tsx:395", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/orders/create-order-dialog.tsx:395"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6c654f99d55700f8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/operations/delivery-partners-view.tsx:232", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/operations/delivery-partners-view.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-0739b747b54d4158", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/dashboard/business-dashboard.tsx:115", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/dashboard/business-dashboard.tsx:115"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-583dd6e805028b86", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/workspace/workspace-overview.tsx:74", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/workspace/workspace-overview.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-51cec7895040c6a5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/customers/customers-view.tsx:400", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/customers/customers-view.tsx:400"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-062c8b128e158460", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/categories/categories-view.tsx:241", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/categories/categories-view.tsx:241"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9ffdb3b134e29977", "name": "Commented-code block (7 lines) in src/components/business/pos/thermal-receipt-v2.tsx:3", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/business/pos/thermal-receipt-v2.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-01745b412fdd2e4e", "name": "Legacy-named symbol `quantix_pos_prefs_v1` in src/components/business/pos/pos-enterprise.tsx:803", "shortDescription": {"text": "Legacy-named symbol `quantix_pos_prefs_v1` in src/components/business/pos/pos-enterprise.tsx:803"}, "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-f9e25156d0e7e000", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/pos/pos-enterprise.tsx:821", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/pos/pos-enterprise.tsx:821"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-01fbb2aba6133132", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/branding/branding-view.tsx:106", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/branding/branding-view.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-7cb6d3eec1aac81c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/products/products-view.tsx:210", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/products/products-view.tsx:210"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f5312d80d9da061a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/payment/gateway-config-view.tsx:147", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/payment/gateway-config-view.tsx:147"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4a20bf3548ba77c9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/invoices/business-invoices-view.tsx:112", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/invoices/business-invoices-view.tsx:112"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eab2586facd8f8b1", "name": "Commented-code block (5 lines) in src/components/pos/thermal-receipt.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/pos/thermal-receipt.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d67fdb7bcdfdb97b", "name": "Commented-code block (5 lines) in src/components/pos/print-styles.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/pos/print-styles.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0136dd03f66c03fa", "name": "Commented-code block (5 lines) in src/components/pos/pos-production.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/pos/pos-production.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-347110785bd48846", "name": "Commented-code block (6 lines) in src/components/pos/thermal-print-dialog.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/pos/thermal-print-dialog.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-911d317b1daad829", "name": "Commented-code block (6 lines) in src/components/storefront/pwa-meta-updater.tsx:5", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/storefront/pwa-meta-updater.tsx:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-70ea15a2bf1bba43", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/storefront/web/storefront-checkout.tsx:331", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/storefront/web/storefront-checkout.tsx:331"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7cbf569d02aa65dc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/storefront/web/storefront-password.tsx:84", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/storefront/web/storefront-password.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-618bfe9cfbe0d3a7", "name": "Commented-code block (7 lines) in src/components/storefront/web/storefront-auth.tsx:20", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/storefront/web/storefront-auth.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-6672a0b1409c477a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/storefront/web/storefront-auth.tsx:165", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/storefront/web/storefront-auth.tsx:165"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e262c9b3503f0b07", "name": "Commented-code block (5 lines) in src/components/storefront/web/storefront-home.tsx:357", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/storefront/web/storefront-home.tsx:357"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ecad1262f5fe4a3c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/storefront/web/storefront-home.tsx:132", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/storefront/web/storefront-home.tsx:132"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0ef719e5d123e82b", "name": "Commented-code block (5 lines) in src/components/storefront/web/storefront-banner.tsx:10", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/storefront/web/storefront-banner.tsx:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0fe069a70672a6f4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/storefront/web/storefront-product.tsx:154", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/storefront/web/storefront-product.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-5a7132ab569caf68", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/storefront/web/storefront-category.tsx:72", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/storefront/web/storefront-category.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-c642144456a2987d", "name": "Commented-code block (7 lines) in src/components/storefront/web/product-image.tsx:6", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/storefront/web/product-image.tsx: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-2b3cb6709c5f8c44", "name": "Commented-code block (6 lines) in src/app/page.tsx:17", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/page.tsx:17"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-68fda19923efae1d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/page.tsx:50", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/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-13e554026799cede", "name": "Commented-code block (9 lines) in src/app/reset-password/page.tsx:9", "shortDescription": {"text": "Commented-code block (9 lines) in src/app/reset-password/page.tsx:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5ecdbf21e6fd7ed4", "name": "Commented-code block (5 lines) in src/app/api/v1/admin/app-version/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/admin/app-version/route.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-38dc36cffce71384", "name": "Commented-code block (5 lines) in src/app/api/v1/admin/banners/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/admin/banners/route.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-ee48eee8a01e83a9", "name": "Commented-code block (5 lines) in src/app/api/v1/admin/banners/[bannerId]/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/admin/banners/[bannerId]/route.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-c1e80eac6bfa8dbc", "name": "Commented-code block (5 lines) in src/app/api/v1/storefront/promotions/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/storefront/promotions/route.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-0958a33313f91bec", "name": "Commented-code block (5 lines) in src/app/api/v1/devices/unregister/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/v1/devices/unregister/route.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-cb02dea3db3e1415", "name": "Commented-code block (6 lines) in src/app/api/customer/auth/refresh/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/customer/auth/refresh/route.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-3acd72aacb1ccc5c", "name": "Commented-code block (9 lines) in src/app/api/customer/auth/me/route.ts:1", "shortDescription": {"text": "Commented-code block (9 lines) in src/app/api/customer/auth/me/route.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-11bf078bca28e58f", "name": "Commented-code block (7 lines) in src/app/api/deploy/route.ts:9", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/deploy/route.ts:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1ad32a94f652ad44", "name": "Commented-code block (7 lines) in src/app/api/deploy/status/route.ts:8", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/deploy/status/route.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d2e0d9a3d8d01cd4", "name": "Commented-code block (5 lines) in src/app/api/assets/logo/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/assets/logo/route.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-59c3c357b0a3d624", "name": "Commented-code block (7 lines) in src/app/api/admin/sales-team/route.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/admin/sales-team/route.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-a1b69332d86f9ed1", "name": "Commented-code block (5 lines) in src/app/api/admin/leads/mtd-report/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/admin/leads/mtd-report/route.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-7019fe41a0669ccb", "name": "Commented-code block (5 lines) in src/app/api/admin/leads/proposal/generate/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/admin/leads/proposal/generate/route.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-f4d76b29301f19c4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/admin/leads/proposal/generate/route.ts:58", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/admin/leads/proposal/generate/route.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-763763cf5941a04f", "name": "Commented-code block (6 lines) in src/app/api/admin/import/api-integrations/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/admin/import/api-integrations/route.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-938aa667c6b9d57e", "name": "Commented-code block (7 lines) in src/app/api/admin/import/leads/route.ts:5", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/admin/import/leads/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-b932ad55b43e4da0", "name": "Commented-code block (7 lines) in src/app/api/admin/import/businesses/route.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/admin/import/businesses/route.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-c3816b0d2bef1e88", "name": "Commented-code block (5 lines) in src/app/api/admin/billing/renewals/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/admin/billing/renewals/route.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-7508105e45e7a64b", "name": "Commented-code block (7 lines) in src/app/api/admin/billing/[businessId]/record-payment/route.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/admin/billing/[businessId]/record-payment/route.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-b7b5cd385ee4abbb", "name": "Commented-code block (5 lines) in src/app/api/admin/billing/[businessId]/mark-received/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/admin/billing/[businessId]/mark-received/route.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-0a9516febfa729bd", "name": "Commented-code block (5 lines) in src/app/api/admin/billing/invoices/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/admin/billing/invoices/route.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-50ff435cae21d660", "name": "Commented-code block (5 lines) in src/app/api/admin/billing/invoices/[invoiceId]/email/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/admin/billing/invoices/[invoiceId]/email/route.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-27ebd0b02c134feb", "name": "Commented-code block (6 lines) in src/app/api/admin/billing/invoices/[invoiceId]/download/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/admin/billing/invoices/[invoiceId]/download/route.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-167fac1524861d1b", "name": "Commented-code block (7 lines) in src/app/api/admin/billing/proof-upload/route.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/admin/billing/proof-upload/route.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-51c16bc5bf5b4943", "name": "Commented-code block (5 lines) in src/app/api/admin/businesses/[businessId]/reset-password/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/admin/businesses/[businessId]/reset-password/route.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-da78a1362909040f", "name": "Commented-code block (6 lines) in src/app/api/admin/businesses/[businessId]/addons/[addonId]/invoice/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/admin/businesses/[businessId]/addons/[addonId]/invoice/route.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-dd6df75601b47fa9", "name": "Commented-code block (5 lines) in src/app/api/admin/businesses/[businessId]/update-login-id/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/admin/businesses/[businessId]/update-login-id/route.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-e560e5a840756418", "name": "Commented-code block (5 lines) in src/app/api/admin/websites/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/admin/websites/route.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-c73ff139c9ee5961", "name": "Commented-code block (6 lines) in src/app/api/admin/payment-config/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/admin/payment-config/route.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-2343e0f2da7d53ce", "name": "Commented-code block (5 lines) in src/app/api/admin/payment-plugins/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/admin/payment-plugins/route.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-61e8263523ea5610", "name": "Commented-code block (5 lines) in src/app/api/admin/branding/route.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/admin/branding/route.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-57b0075d02d5cf05", "name": "Commented-code block (7 lines) in src/app/api/admin/migrate/lead-stages/route.ts:7", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/admin/migrate/lead-stages/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-593f1f0ed0d09d9e", "name": "Commented-code block (6 lines) in src/app/api/admin/documents/proposal-id/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/admin/documents/proposal-id/route.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-dddc13ace79154fe", "name": "Commented-code block (6 lines) in src/app/api/admin/export/leads/route.ts:6", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/admin/export/leads/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-7f5edc3bcab72b61", "name": "Commented-code block (5 lines) in src/app/api/business/logo/upload/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/business/logo/upload/route.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-6dfbc7055fa5f2ff", "name": "Commented-code block (5 lines) in src/app/api/core/users/[userId]/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/users/[userId]/route.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-447e2262aeac9427", "name": "Commented-code block (5 lines) in src/app/api/core/notifications/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/notifications/route.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-3e959f8d65e13012", "name": "Commented-code block (5 lines) in src/app/api/core/stores/route.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/stores/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-f9b8283e4bc93f76", "name": "Commented-code block (5 lines) in src/app/api/core/stores/[storeId]/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/stores/[storeId]/route.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-987c057ca6c333c9", "name": "Commented-code block (5 lines) in src/app/api/core/stores/[storeId]/reset-password/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/stores/[storeId]/reset-password/route.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-0891ff06d1e5b03f", "name": "Commented-code block (5 lines) in src/app/api/core/orders/route.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/orders/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-0420037a1b9ab744", "name": "Commented-code block (5 lines) in src/app/api/core/orders/[orderId]/route.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/orders/[orderId]/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-df39b8343d87d4d2", "name": "Commented-code block (5 lines) in src/app/api/core/orders/[orderId]/refund-request/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/orders/[orderId]/refund-request/route.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-0d418c230677f553", "name": "Commented-code block (5 lines) in src/app/api/core/orders/[orderId]/assign-partner/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/orders/[orderId]/assign-partner/route.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-74328a9459176334", "name": "Commented-code block (5 lines) in src/app/api/core/orders/[orderId]/invoice/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/orders/[orderId]/invoice/route.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-686acfce5153aca9", "name": "Commented-code block (5 lines) in src/app/api/core/orders/[orderId]/status/route.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/orders/[orderId]/status/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-22770e9cd006475e", "name": "Commented-code block (6 lines) in src/app/api/core/auth/forgot-password/reset/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/auth/forgot-password/reset/route.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-01b4fed07bf40d87", "name": "Commented-code block (6 lines) in src/app/api/core/auth/forgot-password/verify/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/auth/forgot-password/verify/route.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-b5e2e08d05a4cdb2", "name": "Commented-code block (6 lines) in src/app/api/core/auth/forgot-password/send-otp/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/auth/forgot-password/send-otp/route.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-92531735eabde29d", "name": "Commented-code block (6 lines) in src/app/api/core/auth/set-password/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/auth/set-password/route.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-2942364917e2b390", "name": "Commented-code block (5 lines) in src/app/api/core/auth/refresh/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/auth/refresh/route.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-ad2ac2aaa3d859bb", "name": "Commented-code block (5 lines) in src/app/api/core/auth/change-password/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/auth/change-password/route.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-f18967f99ef87cd2", "name": "Commented-code block (6 lines) in src/app/api/core/auth/register/route.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/auth/register/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-60b8a1f637003659", "name": "Commented-code block (5 lines) in src/app/api/core/auth/send-otp/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/auth/send-otp/route.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-83ea952e856033f0", "name": "Commented-code block (5 lines) in src/app/api/core/leads/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/leads/route.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-36d0e3efd53d9f03", "name": "Commented-code block (6 lines) in src/app/api/core/leads/[leadId]/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/leads/[leadId]/route.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-17db3685a49706fa", "name": "Commented-code block (5 lines) in src/app/api/core/platform/config/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/platform/config/route.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-786b321b2ffd0aa6", "name": "Commented-code block (5 lines) in src/app/api/core/platform/plans/[planId]/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/platform/plans/[planId]/route.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-e5205a86e7ebca7c", "name": "Commented-code block (7 lines) in src/app/api/core/pwa-icon/[slug]/[size]/route.ts:7", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/core/pwa-icon/[slug]/[size]/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-fec6c84228c60717", "name": "Commented-code block (10 lines) in src/app/api/core/app-readiness/customer/route.ts:1", "shortDescription": {"text": "Commented-code block (10 lines) in src/app/api/core/app-readiness/customer/route.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-959f001b118f2c16", "name": "Commented-code block (8 lines) in src/app/api/core/app-readiness/delivery/route.ts:1", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/api/core/app-readiness/delivery/route.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-8999d57b061890d8", "name": "Commented-code block (10 lines) in src/app/api/core/app-readiness/pos/route.ts:1", "shortDescription": {"text": "Commented-code block (10 lines) in src/app/api/core/app-readiness/pos/route.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-8bc79ed4a2e6b610", "name": "Commented-code block (5 lines) in src/app/api/core/mobile/webhook/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/mobile/webhook/route.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-332f6e25f81cc0a3", "name": "Commented-code block (6 lines) in src/app/api/core/admin/migrate-customers/route.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/admin/migrate-customers/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-3b0b6b59e8ae55e3", "name": "Commented-code block (8 lines) in src/app/api/core/delivery/partners/route.ts:1", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/api/core/delivery/partners/route.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-775f22e271b29686", "name": "Commented-code block (6 lines) in src/app/api/core/delivery/partners/[partnerId]/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/delivery/partners/[partnerId]/route.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-2f129fedd46b32c7", "name": "Commented-code block (5 lines) in src/app/api/core/delivery/partners/[partnerId]/earnings/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/delivery/partners/[partnerId]/earnings/route.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-f56f61e836623b14", "name": "Commented-code block (5 lines) in src/app/api/core/delivery/partners/[partnerId]/offline/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/delivery/partners/[partnerId]/offline/route.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-c13d35922e7bf7c7", "name": "Commented-code block (5 lines) in src/app/api/core/delivery/partners/[partnerId]/online/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/delivery/partners/[partnerId]/online/route.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-270eaccff88c651e", "name": "Commented-code block (7 lines) in src/app/api/core/delivery/partners/[partnerId]/history/route.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/core/delivery/partners/[partnerId]/history/route.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-c15512637752617f", "name": "Commented-code block (7 lines) in src/app/api/core/delivery/update-status/route.ts:50", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/core/delivery/update-status/route.ts:50"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c7945f731ffc46a9", "name": "Commented-code block (6 lines) in src/app/api/core/delivery/orders/[orderId]/accept/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/delivery/orders/[orderId]/accept/route.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-0c1223bde589b663", "name": "Commented-code block (6 lines) in src/app/api/core/delivery/orders/[orderId]/pickup/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/delivery/orders/[orderId]/pickup/route.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-94f2f782522f8a7e", "name": "Commented-code block (7 lines) in src/app/api/core/delivery/orders/[orderId]/deliver/route.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/core/delivery/orders/[orderId]/deliver/route.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-52a4911feabe2553", "name": "Commented-code block (6 lines) in src/app/api/core/delivery/auth/reset-password/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/delivery/auth/reset-password/route.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-b7f4400196309477", "name": "Commented-code block (5 lines) in src/app/api/core/delivery/auth/login/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/delivery/auth/login/route.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-b2d5a07c0145bd26", "name": "Commented-code block (5 lines) in src/app/api/core/delivery/auth/change-password/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/delivery/auth/change-password/route.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-ddf9671d818eec98", "name": "Commented-code block (8 lines) in src/app/api/core/delivery/my-orders/route.ts:114", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/api/core/delivery/my-orders/route.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-5119ceb255b6d76f", "name": "Commented-code block (5 lines) in src/app/api/core/businesses/route.ts:73", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/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-b7f6cc0ed5653b44", "name": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/route.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-f1d1d259e9beb457", "name": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/readiness-score/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/readiness-score/route.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-acdee098c9300b25", "name": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/tax-config/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/tax-config/route.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-ac97730825ebd872", "name": "Commented-code block (8 lines) in src/app/api/core/businesses/[businessId]/stores/[storeId]/payment-config/route.ts:1", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/api/core/businesses/[businessId]/stores/[storeId]/payment-config/route.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-41e006470040441d", "name": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/subscription/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/subscription/route.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-6d5d379a856913de", "name": "Commented-code block (7 lines) in src/app/api/core/businesses/[businessId]/subscription/override-pricing/route.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/core/businesses/[businessId]/subscription/override-pricing/route.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-51566d97263eae6c", "name": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/promo-codes/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/promo-codes/route.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-84d317fecb01d96a", "name": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/customers/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/customers/route.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-e1f471af099fb0b3", "name": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/customers/import/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/customers/import/route.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-feeb9b018363b482", "name": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/customers/[customerId]/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/customers/[customerId]/route.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-476c8a7cbba61e4a", "name": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/customers/[customerId]/addresses/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/customers/[customerId]/addresses/route.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-bb4ca2b64205dd4a", "name": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/customers/[customerId]/addresses/[addressId]/", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/customers/[customerId]/addresses/[addressId]/route.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-152907c5d9cb8bfc", "name": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/customers/[customerId]/disable-login/route.ts", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/customers/[customerId]/disable-login/route.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-d7cc7c95e0d06655", "name": "Commented-code block (7 lines) in src/app/api/core/businesses/[businessId]/customers/[customerId]/reset-password/route.t", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/core/businesses/[businessId]/customers/[customerId]/reset-password/route.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-a5712e1ee948e235", "name": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/customers/[customerId]/enable-login/route.ts:", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/customers/[customerId]/enable-login/route.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-41950b610c0c72e5", "name": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/customers/[customerId]/send-password-reset/ro", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/customers/[customerId]/send-password-reset/route.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-b4114895ac2598f5", "name": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/customers/[customerId]/notes/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/customers/[customerId]/notes/route.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-0f07d69481b31405", "name": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/customers/[customerId]/force-password-change/", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/customers/[customerId]/force-password-change/route.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-a00f8d4fba879d22", "name": "Commented-code block (7 lines) in src/app/api/core/businesses/[businessId]/mobile/provision/route.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/core/businesses/[businessId]/mobile/provision/route.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-2ac42be7204f46cc", "name": "Commented-code block (7 lines) in src/app/api/core/businesses/[businessId]/mobile/status/route.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/core/businesses/[businessId]/mobile/status/route.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-7395b025da76d378", "name": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/workflow-rules/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/workflow-rules/route.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-e5b767a83765e3fb", "name": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/modules/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/modules/route.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-fe5db54bea7e51ba", "name": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/categories/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/categories/route.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-622c8dc6c0aba18e", "name": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/workforce-settings/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/workforce-settings/route.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-e513c1771b60dc4f", "name": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/store-users/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/store-users/route.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-4c0d184fb49c84ab", "name": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/business-users/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/business-users/route.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-ed7e63c7ab6a8099", "name": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/onboarding/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/onboarding/route.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-542c98d828eef968", "name": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/workflows/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/workflows/route.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-2f3ff09218452cd5", "name": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/order-stages/route.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/order-stages/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-2713c59915aba4b8", "name": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/reports/inventory/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/reports/inventory/route.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-044be52cb53dc1ba", "name": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/reports/tax/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/reports/tax/route.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-46bed62e22f4c18c", "name": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/reports/customers/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/reports/customers/route.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-c8952e10980aa276", "name": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/reports/delivery/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/reports/delivery/route.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-28aa37784a17ec46", "name": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/reports/sales/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/reports/sales/route.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-8a19761880a8077a", "name": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/reports/revenue/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/reports/revenue/route.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-0dfbe37e9725c647", "name": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/products/import/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/products/import/route.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-66a2ca957b215ad9", "name": "Commented-code block (5 lines) in src/app/api/core/payments/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/payments/route.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-1daf54bf30eca858", "name": "Commented-code block (5 lines) in src/app/api/core/payments/[paymentId]/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/payments/[paymentId]/route.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-7b199815d96125d9", "name": "Commented-code block (8 lines) in src/app/api/core/payments/razorpay/webhook/route.ts:5", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/api/core/payments/razorpay/webhook/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-20b9ac9dfd165af4", "name": "Commented-code block (8 lines) in src/app/api/core/payments/razorpay/verify/route.ts:5", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/api/core/payments/razorpay/verify/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-db479f18b0e3e568", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/core/payments/razorpay/create-order/route.ts:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/core/payments/razorpay/create-order/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-6f109efc226089cb", "name": "Commented-code block (7 lines) in src/app/api/core/payments/gateway/route.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/core/payments/gateway/route.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-62057a323a88afbd", "name": "Commented-code block (5 lines) in src/app/api/core/pos/sessions/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/pos/sessions/route.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-58277230a0d888bb", "name": "Commented-code block (5 lines) in src/app/api/core/pos/sessions/[sessionId]/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/pos/sessions/[sessionId]/route.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-d2547c4b53c9e554", "name": "Commented-code block (5 lines) in src/app/api/core/demo-tenants/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/demo-tenants/route.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-3a0b4c89ead845ae", "name": "Commented-code block (6 lines) in src/app/api/core/demo-tenants/[demoTenantId]/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/demo-tenants/[demoTenantId]/route.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-39bfe9bc3c02d7ab", "name": "Commented-code block (6 lines) in src/app/api/core/seed/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/seed/route.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-30b7409c289e7b13", "name": "Commented-code block (5 lines) in src/app/api/core/subscriptions/[subscriptionId]/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/subscriptions/[subscriptionId]/route.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-1aeb9c2a24d14831", "name": "Commented-code block (5 lines) in src/app/api/core/storefront/orders/[orderId]/track/route.ts:9", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/storefront/orders/[orderId]/track/route.ts:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d4436d1f4171fa06", "name": "Commented-code block (7 lines) in src/app/api/core/storefront/auth/login-password/route.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/core/storefront/auth/login-password/route.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-4af7666717a7169c", "name": "Commented-code block (8 lines) in src/app/api/core/storefront/auth/validate-reset-token/route.ts:1", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/api/core/storefront/auth/validate-reset-token/route.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-0db8d7cd28d710fd", "name": "Commented-code block (7 lines) in src/app/api/core/storefront/auth/forgot-password/route.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/core/storefront/auth/forgot-password/route.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-eb0cf1702b9470cd", "name": "Commented-code block (7 lines) in src/app/api/core/storefront/auth/set-password/route.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/core/storefront/auth/set-password/route.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-34a71e3e069d00b1", "name": "Commented-code block (6 lines) in src/app/api/core/storefront/auth/check-customer/route.ts:8", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/storefront/auth/check-customer/route.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-506092e7122cec20", "name": "Commented-code block (5 lines) in src/app/api/core/storefront/auth/verify/route.ts:10", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/storefront/auth/verify/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-55eac6e71c1a8bdb", "name": "Commented-code block (7 lines) in src/app/api/core/storefront/auth/change-password/route.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/core/storefront/auth/change-password/route.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-1860b0a55805f977", "name": "Commented-code block (7 lines) in src/app/api/core/storefront/auth/reset-password-via-token/route.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/core/storefront/auth/reset-password-via-token/route.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-6892a57590e5b1cb", "name": "Commented-code block (6 lines) in src/app/api/core/storefront/addresses/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/storefront/addresses/route.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-676ba6c13aa24e7a", "name": "Commented-code block (6 lines) in src/app/api/core/storefront/addresses/[id]/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/storefront/addresses/[id]/route.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-0bdeb09bb0c673ea", "name": "Commented-code block (7 lines) in src/app/api/core/storefront/cart/route.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/core/storefront/cart/route.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-36eeb6d60950dd27", "name": "Commented-code block (5 lines) in src/app/api/core/storefront/store-context/route.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/storefront/store-context/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-daad821b9bd956ae", "name": "Commented-code block (6 lines) in src/app/api/core/storefront/favorites/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/storefront/favorites/route.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-b3635fe998940e86", "name": "Commented-code block (5 lines) in src/app/api/core/storefront/products/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/storefront/products/route.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-91ed176d0fe5d84b", "name": "Commented-code block (6 lines) in src/app/api/core/storefront/products/[productId]/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/core/storefront/products/[productId]/route.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-bc69bbc6553c8ec2", "name": "Commented-code block (5 lines) in src/app/api/core/tenant/resolve/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/core/tenant/resolve/route.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-fbeb02188735f4b5", "name": "Commented-code block (5 lines) in src/app/api/debug/product-image/route.ts:107", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/debug/product-image/route.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-d13020a2b217047a", "name": "Legacy-named symbol `store_storeCode_constraint_v1` in src/app/api/debug/cleanup-audit/route.ts:55", "shortDescription": {"text": "Legacy-named symbol `store_storeCode_constraint_v1` in src/app/api/debug/cleanup-audit/route.ts:55"}, "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-44806931be00c884", "name": "Commented-code block (5 lines) in src/app/api/debug/upload-limits/route.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/debug/upload-limits/route.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-ec3da85056d00d62", "name": "Legacy-named symbol `store_code_backfill_v2` in src/app/api/debug/full-cleanup/route.ts:227", "shortDescription": {"text": "Legacy-named symbol `store_code_backfill_v2` in src/app/api/debug/full-cleanup/route.ts:227"}, "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-a781d5050aee3421", "name": "Legacy-named symbol `isLegacy` in src/app/api/debug/store-global-audit/route.ts:11", "shortDescription": {"text": "Legacy-named symbol `isLegacy` in src/app/api/debug/store-global-audit/route.ts:11"}, "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-742448b6159fef21", "name": "Commented-code block (8 lines) in src/app/api/payment/webhook/[storeId]/[gateway]/route.ts:1", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/api/payment/webhook/[storeId]/[gateway]/route.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-00817b27d3efaf69", "name": "Commented-code block (6 lines) in src/app/api/payment/store-gateway/route.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/payment/store-gateway/route.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-234c3c8da0b25873", "name": "Commented-code block (6 lines) in src/app/delete-account/page.tsx:4", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/delete-account/page.tsx: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-dedefcdeddcebcf6", "name": "Commented-code block (6 lines) in src/app/sw.js/route.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/sw.js/route.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3590acff9527ce9a", "name": "Commented-code block (6 lines) in src/app/manifest.json/route.ts:7", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/manifest.json/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-da3bf28cebe229b8", "name": "Commented-code block (6 lines) in src/lib/auth.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/auth.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-e8a2ca875cf17f00", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/fcm.ts:51", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/fcm.ts:51"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e0c38cae12a2e35a", "name": "Commented-code block (5 lines) in src/lib/api-client.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/api-client.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-067e35af53d0591a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/api-client.ts:211", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/api-client.ts:211"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3198586b01d48f4d", "name": "Commented-code block (7 lines) in src/lib/email-service.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/email-service.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-962c8008de5fda03", "name": "Commented-code block (5 lines) in src/lib/tenant-resolver.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/tenant-resolver.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-26e3b3aafec64cf3", "name": "Commented-code block (6 lines) in src/lib/seed.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/seed.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-ab7267cc55137d6e", "name": "Commented-code block (5 lines) in src/lib/razorpay-loader.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/razorpay-loader.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-ecb03c766a871129", "name": "Commented-code block (5 lines) in src/lib/notification-sounds.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/notification-sounds.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-fcadb48739758833", "name": "Commented-code block (7 lines) in src/lib/delivery-actions.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/delivery-actions.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-b8cee4e4208203fd", "name": "Commented-code block (6 lines) in src/lib/business-type-config.ts:6", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/business-type-config.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-05a5dee21f9395b9", "name": "Commented-code block (5 lines) in src/lib/api-interceptor.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/api-interceptor.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-0d0a6bee400afc78", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/api-interceptor.ts:41", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/api-interceptor.ts:41"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8bd72beee3f712d6", "name": "Commented-code block (6 lines) in src/lib/print-utils.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/print-utils.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-bccfac130b20125f", "name": "Commented-code block (5 lines) in src/lib/admin-fetch.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/admin-fetch.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-9c38f3bf8eb96aad", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/admin-fetch.ts:99", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/admin-fetch.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-609a2fcacb99407f", "name": "Commented-code block (5 lines) in src/lib/toast-utils.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/toast-utils.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-248f31e37471fbfc", "name": "Commented-code block (7 lines) in src/lib/mobile-provision.ts:6", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/mobile-provision.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-a0b37d02ff79e1b1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/mobile-provision.ts:185", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/mobile-provision.ts:185"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-722a711c8d4dd29e", "name": "Commented-code block (8 lines) in src/lib/platform-settings.ts:7", "shortDescription": {"text": "Commented-code block (8 lines) in src/lib/platform-settings.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-863b0717c14d00b6", "name": "Commented-code block (5 lines) in src/lib/media-service.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/media-service.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-9412635e1b76dc85", "name": "Commented-code block (6 lines) in src/lib/db-permissions.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/db-permissions.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-8fcc882919f907dc", "name": "Commented-code block (6 lines) in src/lib/types.ts:6", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/types.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-11ef79ca2f46cc33", "name": "Commented-code block (6 lines) in src/lib/socket/events.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/socket/events.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-61b13ae3c48ab922", "name": "Commented-code block (6 lines) in src/lib/core/delivery.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/core/delivery.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-bd514c9200c1cf2a", "name": "Commented-code block (6 lines) in src/lib/core/notification.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/core/notification.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-b39e48884249c12a", "name": "Commented-code block (5 lines) in src/lib/core/subscription.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/core/subscription.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-bde83735aca6c2e4", "name": "Commented-code block (6 lines) in src/lib/core/index.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/core/index.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-e987b2425ee97f12", "name": "Commented-code block (5 lines) in src/lib/core/payment.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/core/payment.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-e2961316bfd1673f", "name": "Commented-code block (6 lines) in src/lib/core/rbac.ts:304", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/core/rbac.ts:304"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c8c11e2f1bdd4256", "name": "Commented-code block (5 lines) in src/lib/core/business.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/core/business.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-f74fd3e0dffb89a7", "name": "Commented-code block (6 lines) in src/lib/core/pos.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/core/pos.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-6655aa3befaf9eae", "name": "Commented-code block (5 lines) in src/lib/core/platform.ts:7", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/core/platform.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-ac839b5e041f2075", "name": "Commented-code block (8 lines) in src/lib/core/types.ts:9", "shortDescription": {"text": "Commented-code block (8 lines) in src/lib/core/types.ts:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-785bb2f33caf4a82", "name": "Commented-code block (5 lines) in src/lib/core/order.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/core/order.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-e7ea5f988b4829ef", "name": "Commented-code block (6 lines) in src/lib/rbac/permission-definitions.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/rbac/permission-definitions.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-0424d1b80046b740", "name": "Commented-code block (5 lines) in src/lib/rbac/role-templates.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/rbac/role-templates.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-b0d343ac5c25d12f", "name": "Commented-code block (6 lines) in src/hooks/use-tenant.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in src/hooks/use-tenant.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1a0de320112d1201", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/use-tenant.ts:194", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/use-tenant.ts:194"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a0fefb93188197d1", "name": "Commented-code block (5 lines) in src/hooks/use-realtime.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/hooks/use-realtime.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-936d5baf77f18cb0", "name": "Commented-code block (5 lines) in src/hooks/use-business-context.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in src/hooks/use-business-context.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-0bd3c19bb91d5790", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/use-api.ts:240", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/use-api.ts:240"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-142bf89a214fd569", "name": "Commented-code block (6 lines) in src/hooks/use-razorpay.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in src/hooks/use-razorpay.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1858e8b593aedeb4", "name": "Commented-code block (5 lines) in src/hooks/use-pwa-install.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in src/hooks/use-pwa-install.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-f8117c0c849eaeae", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/use-nearest-store.ts:36", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/use-nearest-store.ts: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-25fdafa760229fae", "name": "Commented-code block (5 lines) in src/hooks/use-toast-notifications.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/hooks/use-toast-notifications.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6c22e148ffcc629a", "name": "Commented-code block (6 lines) in src/contracts/flutter/index.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/contracts/flutter/index.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-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:\nskills/aminer-academic-search/scripts/aminer.py:load_config, skills/aminer-daily-paper/scripts/recommend.py:load_config\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-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nskills/ppt/scripts/pdf.py:decorator, skills/xlsx/xlsx.py:decorator, skills/pdf/scripts/pdf.py:decorator\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}}]}}, "automationDetails": {"id": "repobility/17627"}, "properties": {"repository": "quantixtechnology/Quantix-Core-1.0", "repoUrl": "https://github.com/quantixtechnology/Quantix-Core-1.0", "branch": "main"}, "results": [{"ruleId": "scanner-6bbfeb973c64af1e", "level": "note", "message": {"text": "Possibly dead Python function: run_single_query"}, "properties": {"repobilityId": "1056c4dff9b57a73", "scanner": "scanner-primary", "fingerprint": "6bbfeb973c64af1e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/skill-creator/scripts/run_eval.py:35"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-60f0b82d8f57a02e", "level": "note", "message": {"text": "Possibly dead Python function: do_GET"}, "properties": {"repobilityId": "2d943bb45e4f13bd", "scanner": "scanner-primary", "fingerprint": "60f0b82d8f57a02e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/skill-creator/eval-viewer/generate_review.py:332"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-673167fae453e113", "level": "note", "message": {"text": "Possibly dead Python function: do_POST"}, "properties": {"repobilityId": "53357410ca9379a9", "scanner": "scanner-primary", "fingerprint": "673167fae453e113", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/skill-creator/eval-viewer/generate_review.py:361"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ccc5592eff2c6749", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "ccc5592eff2c6749", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/skill-creator/eval-viewer/generate_review.py:382"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a372f84dbc49452b", "level": "note", "message": {"text": "Possibly dead Python function: decorator"}, "properties": {"repobilityId": "ffbcbc9bc189af1c", "scanner": "scanner-primary", "fingerprint": "a372f84dbc49452b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/ppt/scripts/pdf.py:91"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1866a463bf5ced56", "level": "note", "message": {"text": "Possibly dead Python function: sort_key"}, "properties": {"repobilityId": "ac2a4181eae38738", "scanner": "scanner-primary", "fingerprint": "1866a463bf5ced56", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/ppt/scripts/pdf.py:1165"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9bf4924255da0c99", "level": "note", "message": {"text": "Possibly dead Python function: patched_get_inherited"}, "properties": {"repobilityId": "8c99afa3f6ae758e", "scanner": "scanner-primary", "fingerprint": "9bf4924255da0c99", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/ppt/scripts/pdf.py:1229"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d49f2758d969fc86", "level": "note", "message": {"text": "Possibly dead Python function: revert_insertion"}, "properties": {"repobilityId": "053a35872e3c8bda", "scanner": "scanner-primary", "fingerprint": "d49f2758d969fc86", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/docx/scripts/document.py:303"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2729fe7100c2e71d", "level": "note", "message": {"text": "Possibly dead Python function: revert_deletion"}, "properties": {"repobilityId": "44c2de3893773498", "scanner": "scanner-primary", "fingerprint": "2729fe7100c2e71d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/docx/scripts/document.py:381"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6c40d1bd93daa14e", "level": "note", "message": {"text": "Possibly dead Python function: suggest_deletion"}, "properties": {"repobilityId": "01d444f9772fb3af", "scanner": "scanner-primary", "fingerprint": "6c40d1bd93daa14e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/docx/scripts/document.py:521"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7c95ba5605e8df28", "level": "note", "message": {"text": "Possibly dead Python function: add_comment"}, "properties": {"repobilityId": "d1e20ac1265119b0", "scanner": "scanner-primary", "fingerprint": "7c95ba5605e8df28", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/docx/scripts/document.py:752"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5f22c3628e356e4b", "level": "note", "message": {"text": "Possibly dead Python function: reply_to_comment"}, "properties": {"repobilityId": "1e75c4364dbdcae3", "scanner": "scanner-primary", "fingerprint": "5f22c3628e356e4b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/docx/scripts/document.py:804"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-80ee980d4cf02f6f", "level": "note", "message": {"text": "Possibly dead Python function: split_run"}, "properties": {"repobilityId": "3fd39a1c536797ce", "scanner": "scanner-primary", "fingerprint": "80ee980d4cf02f6f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/docx/scripts/add_toc_placeholders.py:263"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-683ca148abd32a24", "level": "note", "message": {"text": "Possibly dead Python function: check_line_spacing"}, "properties": {"repobilityId": "d49d3470bc5c8a56", "scanner": "scanner-primary", "fingerprint": "683ca148abd32a24", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/docx/scripts/postcheck.py:217"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-de642291d414decf", "level": "note", "message": {"text": "Possibly dead Python function: check_image_overflow"}, "properties": {"repobilityId": "ecbe060355a1a173", "scanner": "scanner-primary", "fingerprint": "de642291d414decf", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/docx/scripts/postcheck.py:270"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-229e3b485782131f", "level": "note", "message": {"text": "Possibly dead Python function: check_font_fallback"}, "properties": {"repobilityId": "ed4cc235a939b63e", "scanner": "scanner-primary", "fingerprint": "229e3b485782131f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/docx/scripts/postcheck.py:416"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ca31f8d2852e44a3", "level": "note", "message": {"text": "Possibly dead Python function: check_heading_levels"}, "properties": {"repobilityId": "efbb9dff16dd2d3a", "scanner": "scanner-primary", "fingerprint": "ca31f8d2852e44a3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/docx/scripts/postcheck.py:451"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-55abef3ce39d12a7", "level": "note", "message": {"text": "Possibly dead Python function: check_shading_type"}, "properties": {"repobilityId": "2260483c8498cdb2", "scanner": "scanner-primary", "fingerprint": "55abef3ce39d12a7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/docx/scripts/postcheck.py:490"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d2e0bda16d071ad0", "level": "note", "message": {"text": "Possibly dead Python function: check_cover_overflow"}, "properties": {"repobilityId": "03bcea789e5a6b22", "scanner": "scanner-primary", "fingerprint": "d2e0bda16d071ad0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/docx/scripts/postcheck.py:644"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b9fbec77ad8ade45", "level": "note", "message": {"text": "Possibly dead Python function: startElementNS"}, "properties": {"repobilityId": "47ca28a03dd5c0c7", "scanner": "scanner-primary", "fingerprint": "b9fbec77ad8ade45", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/docx/scripts/utilities.py:359"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4f3236e041c0a7f9", "level": "note", "message": {"text": "Possibly dead Python function: decorator"}, "properties": {"repobilityId": "ffbcbc9bc189af1c", "scanner": "scanner-primary", "fingerprint": "4f3236e041c0a7f9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/xlsx/xlsx.py:52"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c13722ec84319e99", "level": "note", "message": {"text": "Possibly dead Python function: resolve_palette"}, "properties": {"repobilityId": "aac4e6e07506c682", "scanner": "scanner-primary", "fingerprint": "c13722ec84319e99", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/xlsx/templates/palettes.py:455"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c230664754de9098", "level": "note", "message": {"text": "Possibly dead Python function: list_available"}, "properties": {"repobilityId": "8fac10c70f049996", "scanner": "scanner-primary", "fingerprint": "c230664754de9098", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/xlsx/templates/palettes.py:488"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8543973ff3aeeef1", "level": "note", "message": {"text": "Possibly dead Python function: apply_palette"}, "properties": {"repobilityId": "9bc23c7dae7ce5c7", "scanner": "scanner-primary", "fingerprint": "8543973ff3aeeef1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/xlsx/templates/palettes.py:499"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-af24c7b98092dc9c", "level": "note", "message": {"text": "Possibly dead Python function: use_palette"}, "properties": {"repobilityId": "b9bb76e65c5b4eb1", "scanner": "scanner-primary", "fingerprint": "af24c7b98092dc9c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/xlsx/templates/base.py:118"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-946fa17958897d86", "level": "note", "message": {"text": "Possibly dead Python function: use_palette_explicit"}, "properties": {"repobilityId": "e454d7395353afa3", "scanner": "scanner-primary", "fingerprint": "946fa17958897d86", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/xlsx/templates/base.py:137"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3642c7bf5317884b", "level": "note", "message": {"text": "Possibly dead Python function: font_caption"}, "properties": {"repobilityId": "91c6e1bee77f5101", "scanner": "scanner-primary", "fingerprint": "3642c7bf5317884b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/xlsx/templates/base.py:245"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-f160e890a66a681d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 instrumentation.ts:13"}, "properties": {"repobilityId": "a3f6728288f82771", "scanner": "scanner-primary", "fingerprint": "f160e890a66a681d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1c14467b84e9f4fe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-stores-domains.js:35"}, "properties": {"repobilityId": "0cf96d644c223b9a", "scanner": "scanner-primary", "fingerprint": "1c14467b84e9f4fe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7fbc2e54d45a0ff5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-dietary-type.ts:21"}, "properties": {"repobilityId": "3338eecf2546cfff", "scanner": "scanner-primary", "fingerprint": "7fbc2e54d45a0ff5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f2ef1cf3fd0c22ee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ensure-super-admin.js:26"}, "properties": {"repobilityId": "e8ac61ea6a4191bf", "scanner": "scanner-primary", "fingerprint": "f2ef1cf3fd0c22ee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1608dad2d0c96fe8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-uploads.js:54"}, "properties": {"repobilityId": "47f2d4e0eb7d06c6", "scanner": "scanner-primary", "fingerprint": "1608dad2d0c96fe8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-29f2e0737d996d86", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/websocket/server.ts:50"}, "properties": {"repobilityId": "d2ef53a85ca89c6b", "scanner": "scanner-primary", "fingerprint": "29f2e0737d996d86", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0aae82b665702bce", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/image-understand/scripts/image-understand.ts:30"}, "properties": {"repobilityId": "44df16476f36d541", "scanner": "scanner-primary", "fingerprint": "0aae82b665702bce", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-295912dd8a0d18db", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/video-understand/scripts/video-understand.ts:30"}, "properties": {"repobilityId": "191113bb394d87f0", "scanner": "scanner-primary", "fingerprint": "295912dd8a0d18db", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ae01f1abe6520256", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/TTS/tts.ts:19"}, "properties": {"repobilityId": "2a5bf232b461364d", "scanner": "scanner-primary", "fingerprint": "ae01f1abe6520256", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-58d995da8f139672", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/podcast-generate/generate.ts:512"}, "properties": {"repobilityId": "827150e884748120", "scanner": "scanner-primary", "fingerprint": "58d995da8f139672", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9a565911cf8b3c33", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 skills/storyboard-manager/index.js:4"}, "properties": {"repobilityId": "25203bd6a894af8c", "scanner": "scanner-primary", "fingerprint": "9a565911cf8b3c33", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-a90d7bf35896f35a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/storyboard-manager/index.js:2"}, "properties": {"repobilityId": "a8339ea4d5082c7a", "scanner": "scanner-primary", "fingerprint": "a90d7bf35896f35a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ba1892ab20c790bc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/ASR/scripts/asr.ts:19"}, "properties": {"repobilityId": "ccb5d9589a7ea5c7", "scanner": "scanner-primary", "fingerprint": "ba1892ab20c790bc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ddb20c593851935a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/ppt/scripts/html2pptx.js:1244"}, "properties": {"repobilityId": "068d663f00618d6b", "scanner": "scanner-primary", "fingerprint": "ddb20c593851935a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a9aa2969ace0fdf3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/image-edit/scripts/image-edit.ts:17"}, "properties": {"repobilityId": "fe151a07636998e7", "scanner": "scanner-primary", "fingerprint": "a9aa2969ace0fdf3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-17a3de3369a2e3ae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/LLM/scripts/chat.ts:25"}, "properties": {"repobilityId": "8e7df2c49bae3d27", "scanner": "scanner-primary", "fingerprint": "17a3de3369a2e3ae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2334cd44b4b63869", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/web-reader/scripts/web-reader.ts:30"}, "properties": {"repobilityId": "d1ef94fd5948fd0e", "scanner": "scanner-primary", "fingerprint": "2334cd44b4b63869", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a11cde24c5b10cb4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/stock-analysis-skill/src/index.ts:69"}, "properties": {"repobilityId": "de2017e70a7ae22a", "scanner": "scanner-primary", "fingerprint": "a11cde24c5b10cb4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9766af958ac56239", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/web-search/scripts/web_search.ts:22"}, "properties": {"repobilityId": "73b86fa730d02033", "scanner": "scanner-primary", "fingerprint": "9766af958ac56239", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3676bfb9868b6a61", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/image-generation/scripts/image-generation.ts:16"}, "properties": {"repobilityId": "027299d61e6e10d3", "scanner": "scanner-primary", "fingerprint": "3676bfb9868b6a61", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b1a7a69040fa1efe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/pdf/scripts/html2poster.js:70"}, "properties": {"repobilityId": "8e2c8d7ff3429bd9", "scanner": "scanner-primary", "fingerprint": "b1a7a69040fa1efe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0fb35b4ab9b39c00", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/pdf/scripts/html2pdf-next.js:106"}, "properties": {"repobilityId": "1b2a29f1af077f1a", "scanner": "scanner-primary", "fingerprint": "0fb35b4ab9b39c00", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-82833f9c72f198ff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/pdf/scripts/cover_validate.js:77"}, "properties": {"repobilityId": "863ece295475160a", "scanner": "scanner-primary", "fingerprint": "82833f9c72f198ff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-81d7d7455a11d7c0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/video-generation/scripts/video.ts:8"}, "properties": {"repobilityId": "605d5b941327e7fe", "scanner": "scanner-primary", "fingerprint": "81d7d7455a11d7c0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-548938e3e8940042", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/VLM/scripts/vlm.ts:50"}, "properties": {"repobilityId": "5fa628ee2c8098f3", "scanner": "scanner-primary", "fingerprint": "548938e3e8940042", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7012190a46988712", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 public/sw.js:60"}, "properties": {"repobilityId": "19ecb22d48da856c", "scanner": "scanner-primary", "fingerprint": "7012190a46988712", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a127b841baac283d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 mini-services/realtime-service/index.ts:130"}, "properties": {"repobilityId": "2b7ab07507328e0a", "scanner": "scanner-primary", "fingerprint": "a127b841baac283d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3706b6458ccc29fc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/proxy.ts:34"}, "properties": {"repobilityId": "c79bd394b9f48927", "scanner": "scanner-primary", "fingerprint": "3706b6458ccc29fc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9193e2a375c66366", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/scripts/seed-runner.ts:5"}, "properties": {"repobilityId": "c44c10eb04ae76b3", "scanner": "scanner-primary", "fingerprint": "9193e2a375c66366", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7a827664014e1b9c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/components/cache-buster.tsx:62"}, "properties": {"repobilityId": "d8d92a71926d77e7", "scanner": "scanner-primary", "fingerprint": "7a827664014e1b9c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b24e80e2307c2653", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/engines/ecommerce-engine.tsx:93"}, "properties": {"repobilityId": "58651de8ff0abbcb", "scanner": "scanner-primary", "fingerprint": "b24e80e2307c2653", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8441fff71ca065bd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/engines/engine-hub.tsx:210"}, "properties": {"repobilityId": "6ff86fa7636d5511", "scanner": "scanner-primary", "fingerprint": "8441fff71ca065bd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ceb8669dfeb0bd6a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/engines/pickup-drop-engine.tsx:142"}, "properties": {"repobilityId": "a78db63f4b1595a7", "scanner": "scanner-primary", "fingerprint": "ceb8669dfeb0bd6a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-63260180729a6b7c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/components/auth/auth-provider.tsx:226"}, "properties": {"repobilityId": "62fa555ef8ff1ee4", "scanner": "scanner-primary", "fingerprint": "63260180729a6b7c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d835b33b765a96b6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/shared/activity-feed.tsx:278"}, "properties": {"repobilityId": "d289ecdc4decc036", "scanner": "scanner-primary", "fingerprint": "d835b33b765a96b6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5f8b995e940bd55c", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ui/chart.tsx:83"}, "properties": {"repobilityId": "b8c68f17a4018107", "scanner": "scanner-primary", "fingerprint": "5f8b995e940bd55c", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-54465305e8744c41", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/customer/layout/customer-layout.tsx:99"}, "properties": {"repobilityId": "fc4d69cd9d0bb254", "scanner": "scanner-primary", "fingerprint": "54465305e8744c41", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-834a76f7a4928497", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/customer/cart/customer-cart.tsx:207"}, "properties": {"repobilityId": "4994cf3ddbee8906", "scanner": "scanner-primary", "fingerprint": "834a76f7a4928497", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-10413ae28483d72a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/customer/home/customer-home.tsx:262"}, "properties": {"repobilityId": "d31b45421ab2d1ea", "scanner": "scanner-primary", "fingerprint": "10413ae28483d72a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1597b61feba30f9f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/customer/wishlist/customer-wishlist.tsx:169"}, "properties": {"repobilityId": "9406e0ab30c7fa5b", "scanner": "scanner-primary", "fingerprint": "1597b61feba30f9f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-daddba314c0351e2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/customer/profile/customer-profile.tsx:215"}, "properties": {"repobilityId": "28928a26b457184e", "scanner": "scanner-primary", "fingerprint": "daddba314c0351e2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9f871dc8e10117ef", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/customer/checkout/customer-checkout.tsx:303"}, "properties": {"repobilityId": "676e77e455d0f5fb", "scanner": "scanner-primary", "fingerprint": "9f871dc8e10117ef", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2aaee277007a29e5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/customer/store-picker/store-picker-modal.tsx:187"}, "properties": {"repobilityId": "3364cd40d624e2d1", "scanner": "scanner-primary", "fingerprint": "2aaee277007a29e5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f54dbca335042c66", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/customer/invoices/customer-invoice-detail.tsx:232"}, "properties": {"repobilityId": "70e7aaba40ecadf2", "scanner": "scanner-primary", "fingerprint": "f54dbca335042c66", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-05abcaaf309eaff5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/products-view.tsx:39"}, "properties": {"repobilityId": "6ca985006ee406d6", "scanner": "scanner-primary", "fingerprint": "05abcaaf309eaff5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fed70c2dc683ec9a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/sidebar.tsx:90"}, "properties": {"repobilityId": "f7716acee6631d80", "scanner": "scanner-primary", "fingerprint": "fed70c2dc683ec9a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8150c1b1857be10a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/product-import-view.tsx:671"}, "properties": {"repobilityId": "a5854b7cd0ab1030", "scanner": "scanner-primary", "fingerprint": "8150c1b1857be10a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c2bde765995f65f1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/businesses-view.tsx:29"}, "properties": {"repobilityId": "4a0efd7718e27aa3", "scanner": "scanner-primary", "fingerprint": "c2bde765995f65f1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1212a0b3d8c4fa44", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/staff-view.tsx:589"}, "properties": {"repobilityId": "f0b1bc51ebd6d457", "scanner": "scanner-primary", "fingerprint": "1212a0b3d8c4fa44", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-24f8a43e820edaa7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/mobile-apps-view.tsx:300"}, "properties": {"repobilityId": "8f7935602b5516d6", "scanner": "scanner-primary", "fingerprint": "24f8a43e820edaa7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3b68c7170e397ce3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/release-management-view.tsx:98"}, "properties": {"repobilityId": "99d9793a627f5ef7", "scanner": "scanner-primary", "fingerprint": "3b68c7170e397ce3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d754807f2f636e8c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/audit-logs-view.tsx:471"}, "properties": {"repobilityId": "1840f996309bc832", "scanner": "scanner-primary", "fingerprint": "d754807f2f636e8c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4fa0b3212a998a92", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/support-view.tsx:105"}, "properties": {"repobilityId": "0a4a8b86ed057969", "scanner": "scanner-primary", "fingerprint": "4fa0b3212a998a92", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1c9327f6484d2056", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/pos-view.tsx:46"}, "properties": {"repobilityId": "3e2e0aea2b8c60bc", "scanner": "scanner-primary", "fingerprint": "1c9327f6484d2056", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-689dea3b8c6e2f05", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/header.tsx:39"}, "properties": {"repobilityId": "de67764d663b6fd5", "scanner": "scanner-primary", "fingerprint": "689dea3b8c6e2f05", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-745c7dd93ec1dfc5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/sales-view.tsx:85"}, "properties": {"repobilityId": "642f5d52b65d9ce4", "scanner": "scanner-primary", "fingerprint": "745c7dd93ec1dfc5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9e468dd33665cd3c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/platform-overview.tsx:134"}, "properties": {"repobilityId": "eaa0ed6b3686ac03", "scanner": "scanner-primary", "fingerprint": "9e468dd33665cd3c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ed556fe5dfeac784", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/inventory-view.tsx:162"}, "properties": {"repobilityId": "938eeafd44b8d142", "scanner": "scanner-primary", "fingerprint": "ed556fe5dfeac784", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-241b0007f8a9adcd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/backup-monitoring-view.tsx:152"}, "properties": {"repobilityId": "0eadbd59a777523f", "scanner": "scanner-primary", "fingerprint": "241b0007f8a9adcd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f4364082e86976d1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/deployment-pipeline-view.tsx:131"}, "properties": {"repobilityId": "fbdd013424ad51ca", "scanner": "scanner-primary", "fingerprint": "f4364082e86976d1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5b18cc2c4059b311", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/loyalty-view.tsx:147"}, "properties": {"repobilityId": "25f44cbe1f09c126", "scanner": "scanner-primary", "fingerprint": "5b18cc2c4059b311", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-37786cae78d85491", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/mobile-versions-view.tsx:108"}, "properties": {"repobilityId": "c9adefa9e13163bf", "scanner": "scanner-primary", "fingerprint": "37786cae78d85491", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-28ecd6c2afded2c4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/dashboard/architecture-view.tsx:256"}, "properties": {"repobilityId": "37c74823ada2be4a", "scanner": "scanner-primary", "fingerprint": "28ecd6c2afded2c4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2f1affa4335f4349", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/grocery/pos-terminal.tsx:420"}, "properties": {"repobilityId": "c72e1b2a40d3d6e7", "scanner": "scanner-primary", "fingerprint": "2f1affa4335f4349", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-19f7a910f2993ae1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/grocery/admin-dashboard.tsx:379"}, "properties": {"repobilityId": "50034d284181c456", "scanner": "scanner-primary", "fingerprint": "19f7a910f2993ae1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-20cf567ed084b634", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/grocery/grocery-store.tsx:507"}, "properties": {"repobilityId": "d704b7a7d81ad1bf", "scanner": "scanner-primary", "fingerprint": "20cf567ed084b634", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6c52b4e7810d05dd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/layout/app-sidebar.tsx:339"}, "properties": {"repobilityId": "504ebc65d71966e7", "scanner": "scanner-primary", "fingerprint": "6c52b4e7810d05dd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d02a81ce6759ba0d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/layout/admin-header.tsx:76"}, "properties": {"repobilityId": "1eebbef0f667dd5b", "scanner": "scanner-primary", "fingerprint": "d02a81ce6759ba0d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ce016d3e8d53b96b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/users/platform-users-view.tsx:660"}, "properties": {"repobilityId": "26671f98041b1531", "scanner": "scanner-primary", "fingerprint": "ce016d3e8d53b96b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-80c15dfe3dc94bca", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/account-billing/drawers/create-invoice-dialog.tsx:154"}, "properties": {"repobilityId": "4fda5f548a6e4e7e", "scanner": "scanner-primary", "fingerprint": "80c15dfe3dc94bca", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-34a58a8f70e115bf", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/account-billing/drawers/account-drawer.tsx:284"}, "properties": {"repobilityId": "9b164faab9e4c49c", "scanner": "scanner-primary", "fingerprint": "34a58a8f70e115bf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3d3138f70ac1de98", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/account-billing/tabs/services-tab.tsx:135"}, "properties": {"repobilityId": "8de22ea307c915de", "scanner": "scanner-primary", "fingerprint": "3d3138f70ac1de98", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-91fbb7b5153379f5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/account-billing/invoice-preview/invoice-preview-panel.tsx:320"}, "properties": {"repobilityId": "642bd03b895a024e", "scanner": "scanner-primary", "fingerprint": "91fbb7b5153379f5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0bdbc7d87a2a761f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/notifications/notification-center.tsx:258"}, "properties": {"repobilityId": "3e76bbad895f2cbf", "scanner": "scanner-primary", "fingerprint": "0bdbc7d87a2a761f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b320d64d7dbc4425", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/notifications/notifications-view.tsx:560"}, "properties": {"repobilityId": "a19b4a7215d30753", "scanner": "scanner-primary", "fingerprint": "b320d64d7dbc4425", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-57fa5517a58ebd55", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/leads/lead-detail-enhanced.tsx:342"}, "properties": {"repobilityId": "9974e6866933d93b", "scanner": "scanner-primary", "fingerprint": "57fa5517a58ebd55", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-125e3895d1e12f88", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/leads/leads-view.tsx:719"}, "properties": {"repobilityId": "fa378576de10d47f", "scanner": "scanner-primary", "fingerprint": "125e3895d1e12f88", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f2c2eb38d69abb14", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/leads/follow-up-reminders.tsx:273"}, "properties": {"repobilityId": "3dad825b4ae42f8a", "scanner": "scanner-primary", "fingerprint": "f2c2eb38d69abb14", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2de1678dcf2372cc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/addons/addons-view.tsx:242"}, "properties": {"repobilityId": "218a0315779cfd90", "scanner": "scanner-primary", "fingerprint": "2de1678dcf2372cc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4b6ff0fe7c862e9b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/shared/impersonation-bar.tsx:30"}, "properties": {"repobilityId": "9686428c0562ee9c", "scanner": "scanner-primary", "fingerprint": "4b6ff0fe7c862e9b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d46cfe7c3bb726cc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/components/admin/revenue-ops/ownership-base-view.tsx:191"}, "properties": {"repobilityId": "0091bc0e9915eec0", "scanner": "scanner-primary", "fingerprint": "d46cfe7c3bb726cc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2fe71280f341404d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/audit/audit-log-viewer.tsx:610"}, "properties": {"repobilityId": "41fffcee5e9479d8", "scanner": "scanner-primary", "fingerprint": "2fe71280f341404d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-abd4a55cfdab138b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/businesses/businesses-view.tsx:767"}, "properties": {"repobilityId": "c16d1a5cccf129e3", "scanner": "scanner-primary", "fingerprint": "abd4a55cfdab138b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2a4c570983f72898", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/brand-studio/brand-studio-view.tsx:292"}, "properties": {"repobilityId": "95ba7583207e66b4", "scanner": "scanner-primary", "fingerprint": "2a4c570983f72898", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d6fb9abd0d51c118", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/imports/business-import-view.tsx:320"}, "properties": {"repobilityId": "6679b77d654ad44c", "scanner": "scanner-primary", "fingerprint": "d6fb9abd0d51c118", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-37ebb816615ad3eb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/imports/leads-import-view.tsx:596"}, "properties": {"repobilityId": "090186c3bc86840e", "scanner": "scanner-primary", "fingerprint": "37ebb816615ad3eb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-632c28a64f63b2f3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/onboarding/onboarding-view.tsx:709"}, "properties": {"repobilityId": "ec207b3999a9405d", "scanner": "scanner-primary", "fingerprint": "632c28a64f63b2f3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-24b7dc90ab53ff56", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/sales/sales-view.tsx:966"}, "properties": {"repobilityId": "51f35935a018896b", "scanner": "scanner-primary", "fingerprint": "24b7dc90ab53ff56", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-455ef31451509c14", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/payment-plugins/payment-plugins-view.tsx:172"}, "properties": {"repobilityId": "e810b63a12cb1838", "scanner": "scanner-primary", "fingerprint": "455ef31451509c14", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fa6435e256aa93b7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/subscriptions/subscriptions-view.tsx:917"}, "properties": {"repobilityId": "5e4a809e496c12b7", "scanner": "scanner-primary", "fingerprint": "fa6435e256aa93b7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4f4ad8c546259917", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/admin/domains/domains-view.tsx:438"}, "properties": {"repobilityId": "85b264279854c2f0", "scanner": "scanner-primary", "fingerprint": "4f4ad8c546259917", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-15228e214594445a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/workflow/workflow-config-view.tsx:115"}, "properties": {"repobilityId": "7497f6b7b7af7c2b", "scanner": "scanner-primary", "fingerprint": "15228e214594445a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0975c544ee8df955", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/workflow/workflow-engine-view.tsx:323"}, "properties": {"repobilityId": "c330089b44b2b095", "scanner": "scanner-primary", "fingerprint": "0975c544ee8df955", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-481f203bd1090a4c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/delivery/layout/delivery-layout.tsx:33"}, "properties": {"repobilityId": "6905e2712eb99717", "scanner": "scanner-primary", "fingerprint": "481f203bd1090a4c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9746882d8cbbc336", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/layout/business-sidebar.tsx:314"}, "properties": {"repobilityId": "ae66ca3eb53e032a", "scanner": "scanner-primary", "fingerprint": "9746882d8cbbc336", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-03eb6aece523a1bb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/layout/store-selector.tsx:73"}, "properties": {"repobilityId": "4a4bc9119f93fb7b", "scanner": "scanner-primary", "fingerprint": "03eb6aece523a1bb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-99e976ca02bd710f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/layout/business-context-bar.tsx:105"}, "properties": {"repobilityId": "018d9b84256f9f25", "scanner": "scanner-primary", "fingerprint": "99e976ca02bd710f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-db0b6c19f75a74a6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/layout/business-header.tsx:80"}, "properties": {"repobilityId": "67b8cb844338c2e8", "scanner": "scanner-primary", "fingerprint": "db0b6c19f75a74a6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-39191d4e6b772090", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/users/user-creation-view.tsx:566"}, "properties": {"repobilityId": "a9d7e2ec43ad5dfa", "scanner": "scanner-primary", "fingerprint": "39191d4e6b772090", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d8babc60160d56cc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/users/user-management-view.tsx:319"}, "properties": {"repobilityId": "612f353ae5a51493", "scanner": "scanner-primary", "fingerprint": "d8babc60160d56cc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f1a4452afc04a458", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/stores/stores-view.tsx:525"}, "properties": {"repobilityId": "ec46d2e8bc119069", "scanner": "scanner-primary", "fingerprint": "f1a4452afc04a458", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3a1b15c2d391a595", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/components/business/orders/orders-view.tsx:422"}, "properties": {"repobilityId": "263072093af6bbea", "scanner": "scanner-primary", "fingerprint": "3a1b15c2d391a595", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-57eeb8eb151d3cf2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/orders/new-order-alert.tsx:281"}, "properties": {"repobilityId": "71315de35aa84f7d", "scanner": "scanner-primary", "fingerprint": "57eeb8eb151d3cf2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e85e6950fb0194cd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/orders/create-order-dialog.tsx:679"}, "properties": {"repobilityId": "91b7de68fa954aef", "scanner": "scanner-primary", "fingerprint": "e85e6950fb0194cd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b2cd03f6a90558d1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/apps/apps-view.tsx:203"}, "properties": {"repobilityId": "55a7c77152984606", "scanner": "scanner-primary", "fingerprint": "b2cd03f6a90558d1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8c86e82d8d1dadb5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/dashboard/business-dashboard.tsx:543"}, "properties": {"repobilityId": "d02c9ae78d9e2950", "scanner": "scanner-primary", "fingerprint": "8c86e82d8d1dadb5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-08ef86e79cab3151", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/workspace/workspace-overview.tsx:207"}, "properties": {"repobilityId": "8b51684161c0181b", "scanner": "scanner-primary", "fingerprint": "08ef86e79cab3151", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c944be0213848d27", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/customers/bulk-customer-upload.tsx:649"}, "properties": {"repobilityId": "10ccd6086a95becc", "scanner": "scanner-primary", "fingerprint": "c944be0213848d27", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6bd4cbc1c73fe48d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/customers/customers-view.tsx:1045"}, "properties": {"repobilityId": "409d29a4cabbe18d", "scanner": "scanner-primary", "fingerprint": "6bd4cbc1c73fe48d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ff680ed3ae5eb477", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/components/business/customers/customers-view.tsx:399"}, "properties": {"repobilityId": "32a524c127ca63ee", "scanner": "scanner-primary", "fingerprint": "ff680ed3ae5eb477", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-73dcf734705f2a16", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/categories/categories-view.tsx:367"}, "properties": {"repobilityId": "b31963d7abcc243d", "scanner": "scanner-primary", "fingerprint": "73dcf734705f2a16", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7ba00fb0082ff7e9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/pos/thermal-receipt-v2.tsx:332"}, "properties": {"repobilityId": "2b30b92a9bbbad2f", "scanner": "scanner-primary", "fingerprint": "7ba00fb0082ff7e9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e0cac9660704e220", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/pos/pos-view.tsx:491"}, "properties": {"repobilityId": "ecc5e2adddc98b9c", "scanner": "scanner-primary", "fingerprint": "e0cac9660704e220", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8949e74167a650ab", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/pos/pos-enterprise.tsx:157"}, "properties": {"repobilityId": "18c73144f2ca436b", "scanner": "scanner-primary", "fingerprint": "8949e74167a650ab", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0e399a32990be130", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/components/business/pos/pos-enterprise.tsx:844"}, "properties": {"repobilityId": "c3e849adb428f5ba", "scanner": "scanner-primary", "fingerprint": "0e399a32990be130", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-766c38358e8427a4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/business/products/products-view.tsx:909"}, "properties": {"repobilityId": "01a5590d25690205", "scanner": "scanner-primary", "fingerprint": "766c38358e8427a4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8c4dbc522e658386", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/pos/thermal-receipt.tsx:279"}, "properties": {"repobilityId": "4e025fceb1469603", "scanner": "scanner-primary", "fingerprint": "8c4dbc522e658386", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1e1ff2c1cfabb1da", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/pos/print-styles.tsx:11"}, "properties": {"repobilityId": "da8a655763539bb3", "scanner": "scanner-primary", "fingerprint": "1e1ff2c1cfabb1da", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-ba54335cc53493d2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/pos/pos-production.tsx:495"}, "properties": {"repobilityId": "f3fe6f8e2c2992d8", "scanner": "scanner-primary", "fingerprint": "ba54335cc53493d2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bc2ef4881ccca265", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/storefront/web/storefront-checkout.tsx:269"}, "properties": {"repobilityId": "f0553ac69aaac2e8", "scanner": "scanner-primary", "fingerprint": "bc2ef4881ccca265", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c8e3106009e79e90", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/storefront/web/storefront-store-picker.tsx:296"}, "properties": {"repobilityId": "b21632d967a2290e", "scanner": "scanner-primary", "fingerprint": "c8e3106009e79e90", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5c5fb4fe97ca945a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/storefront/web/storefront-product-card.tsx:203"}, "properties": {"repobilityId": "88dce8b155d23bfd", "scanner": "scanner-primary", "fingerprint": "5c5fb4fe97ca945a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6278ef9b66f5f4f0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/storefront/web/storefront-layout.tsx:258"}, "properties": {"repobilityId": "21982e83604b1d71", "scanner": "scanner-primary", "fingerprint": "6278ef9b66f5f4f0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9635cae4e8e3d910", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/components/storefront/web/storefront-home.tsx:136"}, "properties": {"repobilityId": "242b964d47af93c9", "scanner": "scanner-primary", "fingerprint": "9635cae4e8e3d910", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-800d11392309b100", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/storefront/web/storefront-product.tsx:547"}, "properties": {"repobilityId": "85a615f594063024", "scanner": "scanner-primary", "fingerprint": "800d11392309b100", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8babeb45f4d597c6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/components/storefront/web/storefront-product.tsx:160"}, "properties": {"repobilityId": "1e3ce9e04381e567", "scanner": "scanner-primary", "fingerprint": "8babeb45f4d597c6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-388114a1d7e60b3d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/components/storefront/web/storefront-category.tsx:101"}, "properties": {"repobilityId": "4a783135f924fa64", "scanner": "scanner-primary", "fingerprint": "388114a1d7e60b3d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-290e87bc6818eeb5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/page.tsx:356"}, "properties": {"repobilityId": "f6d2d4533cf9c615", "scanner": "scanner-primary", "fingerprint": "290e87bc6818eeb5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c5c2bdb2aa2ca539", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:89"}, "properties": {"repobilityId": "0d72350965068f5b", "scanner": "scanner-primary", "fingerprint": "c5c2bdb2aa2ca539", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-8721014020b3c924", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/deploy/route.ts:137"}, "properties": {"repobilityId": "d13341d30afad459", "scanner": "scanner-primary", "fingerprint": "8721014020b3c924", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d87bef1b6e66ae98", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/admin/account-billing/[businessId]/invoices/[id]/pdf/route.ts:25"}, "properties": {"repobilityId": "9a0d45a676f2f9fd", "scanner": "scanner-primary", "fingerprint": "d87bef1b6e66ae98", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8650a3c7904c1657", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/admin/revenue-ops/ownership/businesses/route.ts:17"}, "properties": {"repobilityId": "8e8166ba4ae28072", "scanner": "scanner-primary", "fingerprint": "8650a3c7904c1657", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bfb562a8b9f65d6f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/business/logo/upload/route.ts:58"}, "properties": {"repobilityId": "233f0d6a887d99c4", "scanner": "scanner-primary", "fingerprint": "bfb562a8b9f65d6f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-65f57065f396cb80", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/upload/route.ts:52"}, "properties": {"repobilityId": "2d7ea61d9ce7cfdb", "scanner": "scanner-primary", "fingerprint": "65f57065f396cb80", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-efb268743c9c2c44", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/auth/verify-otp/route.ts:64"}, "properties": {"repobilityId": "f2bb57cec89de8aa", "scanner": "scanner-primary", "fingerprint": "efb268743c9c2c44", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d2a6cabe9e341a11", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/auth/login/route.ts:44"}, "properties": {"repobilityId": "2915bbe17c153435", "scanner": "scanner-primary", "fingerprint": "d2a6cabe9e341a11", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6028637c1ee3fab4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/auth/forgot-password/reset/route.ts:56"}, "properties": {"repobilityId": "79f4241176b31def", "scanner": "scanner-primary", "fingerprint": "6028637c1ee3fab4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b7eb0e21ed444a8c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/auth/forgot-password/verify/route.ts:54"}, "properties": {"repobilityId": "2f04554ee60fbdfe", "scanner": "scanner-primary", "fingerprint": "b7eb0e21ed444a8c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4bb7be587f6c23be", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/auth/forgot-password/send-otp/route.ts:43"}, "properties": {"repobilityId": "09b02fc1b84f8735", "scanner": "scanner-primary", "fingerprint": "4bb7be587f6c23be", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-54f6838b50fd64ff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/auth/set-password/route.ts:74"}, "properties": {"repobilityId": "df987f79f4808397", "scanner": "scanner-primary", "fingerprint": "54f6838b50fd64ff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c58731e10275c0e1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/auth/send-otp/route.ts:127"}, "properties": {"repobilityId": "e3201a9dc9ed8056", "scanner": "scanner-primary", "fingerprint": "c58731e10275c0e1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-54dc70059f042e34", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/businesses/[businessId]/customers/route.ts:83"}, "properties": {"repobilityId": "d6cb8591947f3340", "scanner": "scanner-primary", "fingerprint": "54dc70059f042e34", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-23c33d7b9c4b8e46", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/businesses/[businessId]/customers/[customerId]/disable-login/route.ts:47"}, "properties": {"repobilityId": "eb80eeed06e7256e", "scanner": "scanner-primary", "fingerprint": "23c33d7b9c4b8e46", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-92a8d63baa2f08d4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/businesses/[businessId]/customers/[customerId]/reset-password/route.ts:77"}, "properties": {"repobilityId": "9ef692c60910ec21", "scanner": "scanner-primary", "fingerprint": "92a8d63baa2f08d4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6ef2e86d75f8ebd4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/businesses/[businessId]/customers/[customerId]/enable-login/route.ts:51"}, "properties": {"repobilityId": "9ba36560ced3be13", "scanner": "scanner-primary", "fingerprint": "6ef2e86d75f8ebd4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f097080317048971", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/businesses/[businessId]/customers/[customerId]/send-password-reset/route.ts:73"}, "properties": {"repobilityId": "5cedb89e9b0612da", "scanner": "scanner-primary", "fingerprint": "f097080317048971", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a2120d199b3e233a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/businesses/[businessId]/customers/[customerId]/force-password-change/route.ts:50"}, "properties": {"repobilityId": "eb814897fe1b37e6", "scanner": "scanner-primary", "fingerprint": "a2120d199b3e233a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-da2993cb6a7e16c3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/businesses/[businessId]/invoices/[invoiceId]/pdf/route.ts:19"}, "properties": {"repobilityId": "927fac0dc132c527", "scanner": "scanner-primary", "fingerprint": "da2993cb6a7e16c3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-157c1d63a5fa4634", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/payments/razorpay/webhook/route.ts:60"}, "properties": {"repobilityId": "d330a3264b549185", "scanner": "scanner-primary", "fingerprint": "157c1d63a5fa4634", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b7888abb4217adee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/storefront/orders/[orderId]/invoice/pdf/route.ts:18"}, "properties": {"repobilityId": "4ad2d12eada4c1ed", "scanner": "scanner-primary", "fingerprint": "b7888abb4217adee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-02ee7fe9b64f48a1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/storefront/auth/login-password/route.ts:162"}, "properties": {"repobilityId": "760e8c911ddd3adb", "scanner": "scanner-primary", "fingerprint": "02ee7fe9b64f48a1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ee9bc3b0c4d0009b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/storefront/auth/forgot-password/route.ts:98"}, "properties": {"repobilityId": "3976fcab7e6e08cf", "scanner": "scanner-primary", "fingerprint": "ee9bc3b0c4d0009b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-13321deb9b71141f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/storefront/auth/set-password/route.ts:114"}, "properties": {"repobilityId": "555ba920edecf749", "scanner": "scanner-primary", "fingerprint": "13321deb9b71141f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3da05b911627ccc2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/storefront/auth/check-customer/route.ts:82"}, "properties": {"repobilityId": "1825f98dfb292486", "scanner": "scanner-primary", "fingerprint": "3da05b911627ccc2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c0e2df1867d9cca8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/storefront/auth/change-password/route.ts:129"}, "properties": {"repobilityId": "b1c10a5d6c01daab", "scanner": "scanner-primary", "fingerprint": "c0e2df1867d9cca8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d5eaadbe1ae526cb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/storefront/auth/reset-password-via-token/route.ts:100"}, "properties": {"repobilityId": "d33c2b9887a65608", "scanner": "scanner-primary", "fingerprint": "d5eaadbe1ae526cb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-49493259ee2daab5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/core/storefront/products/route.ts:266"}, "properties": {"repobilityId": "1bb3a7961e64c108", "scanner": "scanner-primary", "fingerprint": "49493259ee2daab5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-80f77ff9e7ce274d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/debug/storefront-products/route.ts:106"}, "properties": {"repobilityId": "60aa130fc746bdfb", "scanner": "scanner-primary", "fingerprint": "80f77ff9e7ce274d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e7ab1bc2f4c84d22", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/debug/product-image/route.ts:116"}, "properties": {"repobilityId": "4deb9880709a05f1", "scanner": "scanner-primary", "fingerprint": "e7ab1bc2f4c84d22", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-153f4d711016c8a2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/delete-account/page.tsx:120"}, "properties": {"repobilityId": "8b8b1ea5ea36b2ed", "scanner": "scanner-primary", "fingerprint": "153f4d711016c8a2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-104170c2372c7dce", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/offer-letter-print/[id]/page.tsx:822"}, "properties": {"repobilityId": "8e340e0589a10cc4", "scanner": "scanner-primary", "fingerprint": "104170c2372c7dce", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-74bdc555f5267903", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/annexure-print/[id]/page.tsx:487"}, "properties": {"repobilityId": "21b70d458a6c220d", "scanner": "scanner-primary", "fingerprint": "74bdc555f5267903", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-6f80c9a29ece0477", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/email-service.ts:210"}, "properties": {"repobilityId": "f1d113c1a0e69961", "scanner": "scanner-primary", "fingerprint": "6f80c9a29ece0477", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-77b4adb25325bbdf", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/lib/error-handler.ts:389"}, "properties": {"repobilityId": "2853d7f74d890f36", "scanner": "scanner-primary", "fingerprint": "77b4adb25325bbdf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-04237e74cf9b1c08", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/seed.ts:151"}, "properties": {"repobilityId": "efa12c8b3895ed65", "scanner": "scanner-primary", "fingerprint": "04237e74cf9b1c08", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a1040dffa8ce4ebf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/performance.ts:92"}, "properties": {"repobilityId": "6172830d37f25fef", "scanner": "scanner-primary", "fingerprint": "a1040dffa8ce4ebf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bf514edf94b47c37", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/lib/core/notification.ts:555"}, "properties": {"repobilityId": "0897c3ef29f682c1", "scanner": "scanner-primary", "fingerprint": "bf514edf94b47c37", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-d642fb7c58e1130f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/hooks/use-toast-notifications.ts:38"}, "properties": {"repobilityId": "d6c0f3f2ce1b959b", "scanner": "scanner-primary", "fingerprint": "d642fb7c58e1130f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f1eaecc745adcc84", "level": "error", "message": {"text": "Possible secret in scripts/ensure-super-admin.js"}, "properties": {"repobilityId": "e0438de72fdc4abd", "scanner": "scanner-primary", "fingerprint": "f1eaecc745adcc84", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ensure-super-admin.js"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-f3fc3e0f00dc80d0", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in skills/skill-vetter/SKILL.md:43"}, "properties": {"repobilityId": "233143e3dab37825", "scanner": "scanner-primary", "fingerprint": "f3fc3e0f00dc80d0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/skill-vetter/SKILL.md"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-45ca0e03381c8bd4", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in skills/skill-vetter/SKILL.md:43"}, "properties": {"repobilityId": "aac5116770f5f351", "scanner": "scanner-primary", "fingerprint": "45ca0e03381c8bd4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/skill-vetter/SKILL.md"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-7c034fd5f0863166", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in skills/skill-creator/assets/eval_review.html:69"}, "properties": {"repobilityId": "545911401be2d7d6", "scanner": "scanner-primary", "fingerprint": "7c034fd5f0863166", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/skill-creator/assets/eval_review.html"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-e760833c08c5b3e2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in skills/skill-creator/eval-viewer/viewer.html:766"}, "properties": {"repobilityId": "06817722692e9571", "scanner": "scanner-primary", "fingerprint": "e760833c08c5b3e2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/skill-creator/eval-viewer/viewer.html"}, "region": {"startLine": 766}}}]}, {"ruleId": "scanner-3cbb2c0342a52154", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in skills/web-shader-extractor/scripts/fetch-rendered-dom.mjs:19"}, "properties": {"repobilityId": "aa51887c9ec58d74", "scanner": "scanner-primary", "fingerprint": "3cbb2c0342a52154", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/web-shader-extractor/scripts/fetch-rendered-dom.mjs"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-d0f47ea49566f89a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in skills/pdf/scripts/html2poster.js:36"}, "properties": {"repobilityId": "04e6e5db126d2e25", "scanner": "scanner-primary", "fingerprint": "d0f47ea49566f89a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/pdf/scripts/html2poster.js"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-85898b39797273b6", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in skills/pdf/scripts/html2pdf-next.js:25"}, "properties": {"repobilityId": "b6ada7a0dd609748", "scanner": "scanner-primary", "fingerprint": "85898b39797273b6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/pdf/scripts/html2pdf-next.js"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-1e721a18a7f59464", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in mini-services/realtime-service/index.ts:96"}, "properties": {"repobilityId": "bf124b7d805e08dc", "scanner": "scanner-primary", "fingerprint": "1e721a18a7f59464", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mini-services/realtime-service/index.ts"}, "region": {"startLine": 96}}}]}, {"ruleId": "scanner-6f38a33241735455", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/ui/chart.tsx:83"}, "properties": {"repobilityId": "33f10636e53b4298", "scanner": "scanner-primary", "fingerprint": "6f38a33241735455", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/ui/chart.tsx"}, "region": {"startLine": 83}}}]}, {"ruleId": "scanner-4372ff2b53a3603c", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in src/components/customer/auth/customer-auth.tsx:60"}, "properties": {"repobilityId": "6a9abfde5c5b7176", "scanner": "scanner-primary", "fingerprint": "4372ff2b53a3603c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/customer/auth/customer-auth.tsx"}, "region": {"startLine": 60}}}]}, {"ruleId": "scanner-beccea3cd08b3460", "level": "note", "message": {"text": "Insecure pattern 'document_write' in src/components/customer/invoices/customer-invoice-detail.tsx:147"}, "properties": {"repobilityId": "9dd76efbf07c16dd", "scanner": "scanner-primary", "fingerprint": "beccea3cd08b3460", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/customer/invoices/customer-invoice-detail.tsx"}, "region": {"startLine": 147}}}]}, {"ruleId": "scanner-0c12acf59deccf9c", "level": "warning", "message": {"text": "Insecure pattern 'weak_hash' in src/components/dashboard/play-store-view.tsx:138"}, "properties": {"repobilityId": "2fc7afb14245264f", "scanner": "scanner-primary", "fingerprint": "0c12acf59deccf9c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "weak_hash"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/dashboard/play-store-view.tsx"}, "region": {"startLine": 138}}}]}, {"ruleId": "scanner-81471d24e2168b24", "level": "note", "message": {"text": "Insecure pattern 'document_write' in src/components/admin/account-billing/document-preview/document-preview-panel.tsx:136"}, "properties": {"repobilityId": "3f37a85101a32c34", "scanner": "scanner-primary", "fingerprint": "81471d24e2168b24", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/admin/account-billing/document-preview/document-preview-panel.tsx"}, "region": {"startLine": 136}}}]}, {"ruleId": "scanner-03538a2aa6b3eb35", "level": "note", "message": {"text": "Insecure pattern 'document_write' in src/components/admin/account-billing/tabs/invoices-tab.tsx:124"}, "properties": {"repobilityId": "205cca73e25de47a", "scanner": "scanner-primary", "fingerprint": "03538a2aa6b3eb35", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/admin/account-billing/tabs/invoices-tab.tsx"}, "region": {"startLine": 124}}}]}, {"ruleId": "scanner-e5cd980918f0246c", "level": "note", "message": {"text": "Insecure pattern 'document_write' in src/components/admin/account-billing/invoice-preview/invoice-preview-panel.tsx:219"}, "properties": {"repobilityId": "53724726894aa5b4", "scanner": "scanner-primary", "fingerprint": "e5cd980918f0246c", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/admin/account-billing/invoice-preview/invoice-preview-panel.tsx"}, "region": {"startLine": 219}}}]}, {"ruleId": "scanner-b00fbcec1c5bb016", "level": "note", "message": {"text": "Insecure pattern 'document_write' in src/components/admin/leads/quote-proposal-view.tsx:723"}, "properties": {"repobilityId": "a0ed6fd2bd5d6cba", "scanner": "scanner-primary", "fingerprint": "b00fbcec1c5bb016", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/admin/leads/quote-proposal-view.tsx"}, "region": {"startLine": 723}}}]}, {"ruleId": "scanner-8f44bef882578c45", "level": "note", "message": {"text": "Insecure pattern 'document_write' in src/components/admin/commission/commission-view.tsx:222"}, "properties": {"repobilityId": "2900fba4ebc32e0f", "scanner": "scanner-primary", "fingerprint": "8f44bef882578c45", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/admin/commission/commission-view.tsx"}, "region": {"startLine": 222}}}]}, {"ruleId": "scanner-b0e77d7ac78f4f9c", "level": "note", "message": {"text": "Insecure pattern 'document_write' in src/components/admin/documents/proposal-documents-view.tsx:217"}, "properties": {"repobilityId": "52dfc286eed5e265", "scanner": "scanner-primary", "fingerprint": "b0e77d7ac78f4f9c", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/admin/documents/proposal-documents-view.tsx"}, "region": {"startLine": 217}}}]}, {"ruleId": "scanner-7e14ff1fced09eee", "level": "error", "message": {"text": "Possible secret in src/components/admin/demo-tenants/demo-tenants-view.tsx"}, "properties": {"repobilityId": "c0bcd1df386d3c9e", "scanner": "scanner-primary", "fingerprint": "7e14ff1fced09eee", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/admin/demo-tenants/demo-tenants-view.tsx"}, "region": {"startLine": 146}}}]}, {"ruleId": "scanner-7e14ff1fced09eee", "level": "error", "message": {"text": "Possible secret in src/components/admin/demo-tenants/demo-tenants-view.tsx"}, "properties": {"repobilityId": "c0bcd1df386d3c9e", "scanner": "scanner-primary", "fingerprint": "7e14ff1fced09eee", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/admin/demo-tenants/demo-tenants-view.tsx"}, "region": {"startLine": 165}}}]}, {"ruleId": "scanner-7e14ff1fced09eee", "level": "error", "message": {"text": "Possible secret in src/components/admin/demo-tenants/demo-tenants-view.tsx"}, "properties": {"repobilityId": "c0bcd1df386d3c9e", "scanner": "scanner-primary", "fingerprint": "7e14ff1fced09eee", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/admin/demo-tenants/demo-tenants-view.tsx"}, "region": {"startLine": 181}}}]}, {"ruleId": "scanner-7e14ff1fced09eee", "level": "error", "message": {"text": "Possible secret in src/components/admin/demo-tenants/demo-tenants-view.tsx"}, "properties": {"repobilityId": "c0bcd1df386d3c9e", "scanner": "scanner-primary", "fingerprint": "7e14ff1fced09eee", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/admin/demo-tenants/demo-tenants-view.tsx"}, "region": {"startLine": 201}}}]}, {"ruleId": "scanner-7e14ff1fced09eee", "level": "error", "message": {"text": "Possible secret in src/components/admin/demo-tenants/demo-tenants-view.tsx"}, "properties": {"repobilityId": "c0bcd1df386d3c9e", "scanner": "scanner-primary", "fingerprint": "7e14ff1fced09eee", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/admin/demo-tenants/demo-tenants-view.tsx"}, "region": {"startLine": 215}}}]}, {"ruleId": "scanner-7e14ff1fced09eee", "level": "error", "message": {"text": "Possible secret in src/components/admin/demo-tenants/demo-tenants-view.tsx"}, "properties": {"repobilityId": "c0bcd1df386d3c9e", "scanner": "scanner-primary", "fingerprint": "7e14ff1fced09eee", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/admin/demo-tenants/demo-tenants-view.tsx"}, "region": {"startLine": 232}}}]}, {"ruleId": "scanner-7e14ff1fced09eee", "level": "error", "message": {"text": "Possible secret in src/components/admin/demo-tenants/demo-tenants-view.tsx"}, "properties": {"repobilityId": "c0bcd1df386d3c9e", "scanner": "scanner-primary", "fingerprint": "7e14ff1fced09eee", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/admin/demo-tenants/demo-tenants-view.tsx"}, "region": {"startLine": 250}}}]}, {"ruleId": "scanner-7e14ff1fced09eee", "level": "error", "message": {"text": "Possible secret in src/components/admin/demo-tenants/demo-tenants-view.tsx"}, "properties": {"repobilityId": "c0bcd1df386d3c9e", "scanner": "scanner-primary", "fingerprint": "7e14ff1fced09eee", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/admin/demo-tenants/demo-tenants-view.tsx"}, "region": {"startLine": 266}}}]}, {"ruleId": "scanner-7e7b68136d086ad1", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/pos/print-styles.tsx:11"}, "properties": {"repobilityId": "f96be4bf59feae05", "scanner": "scanner-primary", "fingerprint": "7e7b68136d086ad1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/pos/print-styles.tsx"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-fd6ede6e66a4c3f4", "level": "error", "message": {"text": "Possible secret in src/components/storefront/web/storefront-auth.tsx"}, "properties": {"repobilityId": "7098dd72216adc13", "scanner": "scanner-primary", "fingerprint": "fd6ede6e66a4c3f4", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/storefront/web/storefront-auth.tsx"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-9aaf1b4b2add67c2", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in src/components/storefront/web/storefront-auth.tsx:197"}, "properties": {"repobilityId": "2a634f5c4fc4c910", "scanner": "scanner-primary", "fingerprint": "9aaf1b4b2add67c2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/storefront/web/storefront-auth.tsx"}, "region": {"startLine": 197}}}]}, {"ruleId": "scanner-ecb267b0f1379722", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:89"}, "properties": {"repobilityId": "0bca654fa2052eb0", "scanner": "scanner-primary", "fingerprint": "ecb267b0f1379722", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/layout.tsx"}, "region": {"startLine": 89}}}]}, {"ruleId": "scanner-cdc67f270da69037", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in src/app/reset-password/page.tsx:83"}, "properties": {"repobilityId": "b786eda78045907d", "scanner": "scanner-primary", "fingerprint": "cdc67f270da69037", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/reset-password/page.tsx"}, "region": {"startLine": 83}}}]}, {"ruleId": "scanner-60f84696da35af34", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/app/api/deploy/route.ts:35"}, "properties": {"repobilityId": "af3ff61f8d9aa375", "scanner": "scanner-primary", "fingerprint": "60f84696da35af34", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/api/deploy/route.ts"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-5cdd0313651c22a0", "level": "error", "message": {"text": "Possible secret in src/app/api/core/demo-tenants/route.ts"}, "properties": {"repobilityId": "945727e8c2453850", "scanner": "scanner-primary", "fingerprint": "5cdd0313651c22a0", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/api/core/demo-tenants/route.ts"}, "region": {"startLine": 68}}}]}, {"ruleId": "scanner-e16c8cbbced0a939", "level": "error", "message": {"text": "Possible secret in src/app/api/core/seed/route.ts"}, "properties": {"repobilityId": "4e3790f614bbd754", "scanner": "scanner-primary", "fingerprint": "e16c8cbbced0a939", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/api/core/seed/route.ts"}, "region": {"startLine": 125}}}]}, {"ruleId": "scanner-e16c8cbbced0a939", "level": "error", "message": {"text": "Possible secret in src/app/api/core/seed/route.ts"}, "properties": {"repobilityId": "4e3790f614bbd754", "scanner": "scanner-primary", "fingerprint": "e16c8cbbced0a939", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/api/core/seed/route.ts"}, "region": {"startLine": 160}}}]}, {"ruleId": "scanner-e16c8cbbced0a939", "level": "error", "message": {"text": "Possible secret in src/app/api/core/seed/route.ts"}, "properties": {"repobilityId": "4e3790f614bbd754", "scanner": "scanner-primary", "fingerprint": "e16c8cbbced0a939", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/api/core/seed/route.ts"}, "region": {"startLine": 307}}}]}, {"ruleId": "scanner-e16c8cbbced0a939", "level": "error", "message": {"text": "Possible secret in src/app/api/core/seed/route.ts"}, "properties": {"repobilityId": "4e3790f614bbd754", "scanner": "scanner-primary", "fingerprint": "e16c8cbbced0a939", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/api/core/seed/route.ts"}, "region": {"startLine": 308}}}]}, {"ruleId": "scanner-4357568aeb787f31", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/offer-letter-print/[id]/page.tsx:822"}, "properties": {"repobilityId": "175d898d64ca05f5", "scanner": "scanner-primary", "fingerprint": "4357568aeb787f31", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/offer-letter-print/[id]/page.tsx"}, "region": {"startLine": 822}}}]}, {"ruleId": "scanner-ad47b648ac47751f", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/annexure-print/[id]/page.tsx:487"}, "properties": {"repobilityId": "b9a9e4b4ccdbcd73", "scanner": "scanner-primary", "fingerprint": "ad47b648ac47751f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/annexure-print/[id]/page.tsx"}, "region": {"startLine": 487}}}]}, {"ruleId": "scanner-993d7e968e6bcad7", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in src/hooks/use-api.ts:225"}, "properties": {"repobilityId": "3b5dabfc5ea57402", "scanner": "scanner-primary", "fingerprint": "993d7e968e6bcad7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/hooks/use-api.ts"}, "region": {"startLine": 225}}}]}, {"ruleId": "scanner-8f454b753634844e", "level": "note", "message": {"text": "Very large file: skills/ppt/scripts/html2pptx.js (1336 lines)"}, "properties": {"repobilityId": "f76328fe5a1ff2c8", "scanner": "scanner-primary", "fingerprint": "8f454b753634844e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-19a149687ba084bb", "level": "note", "message": {"text": "Very large file: skills/ppt/scripts/pdf.py (2046 lines)"}, "properties": {"repobilityId": "c6ec15886d6d9e67", "scanner": "scanner-primary", "fingerprint": "19a149687ba084bb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-20b24fdd8dedeba9", "level": "note", "message": {"text": "Very large file: skills/docx/scripts/document.py (1333 lines)"}, "properties": {"repobilityId": "b952f8afa44cac0e", "scanner": "scanner-primary", "fingerprint": "20b24fdd8dedeba9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-885d2ea68b84a7c9", "level": "note", "message": {"text": "Very large file: skills/xlsx/xlsx.py (1299 lines)"}, "properties": {"repobilityId": "7127e6e538d96a5c", "scanner": "scanner-primary", "fingerprint": "885d2ea68b84a7c9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-807d6f5cf8607d0b", "level": "note", "message": {"text": "Very large file: skills/pdf/scripts/toc_validate.py (2075 lines)"}, "properties": {"repobilityId": "03eef4c5401a23c1", "scanner": "scanner-primary", "fingerprint": "807d6f5cf8607d0b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-56bc3f95aef7a60c", "level": "note", "message": {"text": "Very large file: skills/pdf/scripts/pdf.py (2959 lines)"}, "properties": {"repobilityId": "751e9789f10067f4", "scanner": "scanner-primary", "fingerprint": "56bc3f95aef7a60c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2af1e0e48859b610", "level": "note", "message": {"text": "Very large file: skills/pdf/scripts/poster_validate.py (1337 lines)"}, "properties": {"repobilityId": "ae6ff5df1ac8ac9f", "scanner": "scanner-primary", "fingerprint": "2af1e0e48859b610", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-13c4c33c888bfa84", "level": "note", "message": {"text": "Very large file: skills/pdf/scripts/design_engine.py (2816 lines)"}, "properties": {"repobilityId": "7ef2fb0121c70bbd", "scanner": "scanner-primary", "fingerprint": "13c4c33c888bfa84", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1680257075b89925", "level": "note", "message": {"text": "Very large file: src/components/admin/settings/settings-view.tsx (1672 lines)"}, "properties": {"repobilityId": "922fffaeddc9cd39", "scanner": "scanner-primary", "fingerprint": "1680257075b89925", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1559776981a3a93e", "level": "note", "message": {"text": "Very large file: src/components/admin/users/platform-users-view.tsx (1232 lines)"}, "properties": {"repobilityId": "af8e84ec5ebb2be7", "scanner": "scanner-primary", "fingerprint": "1559776981a3a93e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d35057dea6da4b07", "level": "note", "message": {"text": "Very large file: src/components/admin/leads/leads-view.tsx (1133 lines)"}, "properties": {"repobilityId": "e338ce04971851e6", "scanner": "scanner-primary", "fingerprint": "d35057dea6da4b07", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0cc5f3c11dd49476", "level": "note", "message": {"text": "Very large file: src/components/admin/leads/quote-proposal-view.tsx (1179 lines)"}, "properties": {"repobilityId": "f7d6c384a3222377", "scanner": "scanner-primary", "fingerprint": "0cc5f3c11dd49476", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a27132526279df91", "level": "note", "message": {"text": "Very large file: src/components/admin/businesses/businesses-view.tsx (1987 lines)"}, "properties": {"repobilityId": "108c3da971284c38", "scanner": "scanner-primary", "fingerprint": "a27132526279df91", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4fb9da7039aa1f6d", "level": "note", "message": {"text": "Very large file: src/components/admin/brand-studio/brand-studio-view.tsx (1503 lines)"}, "properties": {"repobilityId": "cf92ff2614df4927", "scanner": "scanner-primary", "fingerprint": "4fb9da7039aa1f6d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-07280dcdef0bcc0d", "level": "note", "message": {"text": "Very large file: src/components/admin/imports/leads-import-view.tsx (1037 lines)"}, "properties": {"repobilityId": "985d5bfe31672968", "scanner": "scanner-primary", "fingerprint": "07280dcdef0bcc0d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1e4fdb1462721fb8", "level": "note", "message": {"text": "Very large file: src/components/admin/sales/sales-view.tsx (1463 lines)"}, "properties": {"repobilityId": "3e8302ef0601fd7a", "scanner": "scanner-primary", "fingerprint": "1e4fdb1462721fb8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-01e60a4a8e4400f7", "level": "note", "message": {"text": "Very large file: src/components/admin/commission/commission-view.tsx (1869 lines)"}, "properties": {"repobilityId": "5b6bd9bced62dca7", "scanner": "scanner-primary", "fingerprint": "01e60a4a8e4400f7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0509fababd64440d", "level": "note", "message": {"text": "Very large file: src/components/admin/subscriptions/subscriptions-view.tsx (1265 lines)"}, "properties": {"repobilityId": "72d66678ced87b76", "scanner": "scanner-primary", "fingerprint": "0509fababd64440d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-023e457dfaf000b7", "level": "note", "message": {"text": "Very large file: src/components/business/orders/orders-view.tsx (1503 lines)"}, "properties": {"repobilityId": "2877a80d5f05d538", "scanner": "scanner-primary", "fingerprint": "023e457dfaf000b7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-77c86b93051543f8", "level": "note", "message": {"text": "Very large file: src/components/business/operations/delivery-partners-view.tsx (1153 lines)"}, "properties": {"repobilityId": "05c270f62a45d5e0", "scanner": "scanner-primary", "fingerprint": "77c86b93051543f8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e3e8ad4074d65ef8", "level": "note", "message": {"text": "Very large file: src/components/business/customers/customers-view.tsx (2123 lines)"}, "properties": {"repobilityId": "544e8f20bdcb5f84", "scanner": "scanner-primary", "fingerprint": "e3e8ad4074d65ef8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-366282ab0c8a5540", "level": "note", "message": {"text": "Very large file: src/components/business/pos/pos-view.tsx (1320 lines)"}, "properties": {"repobilityId": "ffab571eb802b93a", "scanner": "scanner-primary", "fingerprint": "366282ab0c8a5540", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b318e47ccf64e048", "level": "note", "message": {"text": "Very large file: src/components/business/pos/pos-enterprise.tsx (1321 lines)"}, "properties": {"repobilityId": "dc01df6bc5554eb2", "scanner": "scanner-primary", "fingerprint": "b318e47ccf64e048", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b90a00bba9eee26d", "level": "note", "message": {"text": "Very large file: src/components/business/products/products-view.tsx (1705 lines)"}, "properties": {"repobilityId": "21d13d9447e283c9", "scanner": "scanner-primary", "fingerprint": "b90a00bba9eee26d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ac87770a21433698", "level": "note", "message": {"text": "Very large file: src/components/pos/pos-production.tsx (1431 lines)"}, "properties": {"repobilityId": "0e0ac476705b703e", "scanner": "scanner-primary", "fingerprint": "ac87770a21433698", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-567e32272ca57c0a", "level": "note", "message": {"text": "Very large file: src/lib/seed.ts (1139 lines)"}, "properties": {"repobilityId": "421fca6f983f97d0", "scanner": "scanner-primary", "fingerprint": "567e32272ca57c0a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f6485d8c1c0ea199", "level": "note", "message": {"text": "Very large file: src/lib/demo-data.ts (1606 lines)"}, "properties": {"repobilityId": "b0c63b9ac6f7e27c", "scanner": "scanner-primary", "fingerprint": "f6485d8c1c0ea199", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-11eb9745477dd0e5", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: skills/podcast-generate/package.json"}, "properties": {"repobilityId": "f2085748a2ead424", "scanner": "scanner-primary", "fingerprint": "11eb9745477dd0e5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/podcast-generate/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dd6f2e3e788daecc", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: skills/stock-analysis-skill/package.json"}, "properties": {"repobilityId": "0e2b0360ed02bb97", "scanner": "scanner-primary", "fingerprint": "dd6f2e3e788daecc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/stock-analysis-skill/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "f0ccedd53a7008f7", "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": "992a0a666cc1d7ef", "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": "1069a8a69a46d4a4", "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": "5cae83f88084b392", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-11825279136b53a3", "level": "warning", "message": {"text": "CI is configured but no tests are detected"}, "properties": {"repobilityId": "0ebf31aa0cf6354b", "scanner": "scanner-primary", "fingerprint": "11825279136b53a3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "ci", "config-theater", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "fd9fe6728ff4bf8f", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "d5737c397a231585", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "cbbadf22e8512be8", "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": "bef4b5f9d3a2b36a", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-5bc8819ae419d646", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/skill-vetter/SKILL.md"}, "properties": {"repobilityId": "0a34c5226bf9ad36", "scanner": "scanner-primary", "fingerprint": "5bc8819ae419d646", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/skill-vetter/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-008fedc96cf1e09a", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/skill-finder-cn/SKILL.md"}, "properties": {"repobilityId": "a7a54fefb86966d6", "scanner": "scanner-primary", "fingerprint": "008fedc96cf1e09a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/skill-finder-cn/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5084f4df945060af", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/aminer-academic-search/SKILL.md"}, "properties": {"repobilityId": "44ac4e192d0aa5fe", "scanner": "scanner-primary", "fingerprint": "5084f4df945060af", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/aminer-academic-search/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-84798c2926ea8e96", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/agent-browser/SKILL.md"}, "properties": {"repobilityId": "47b4edf5047fb6b8", "scanner": "scanner-primary", "fingerprint": "84798c2926ea8e96", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/agent-browser/SKILL.md"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-d3466b87cba16628", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/podcast-generate/SKILL.md"}, "properties": {"repobilityId": "cb51b493fc0dde73", "scanner": "scanner-primary", "fingerprint": "d3466b87cba16628", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/podcast-generate/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d1eccd47941133f6", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: skills/ASR/SKILL.md"}, "properties": {"repobilityId": "32e9c67c6461dd13", "scanner": "scanner-primary", "fingerprint": "d1eccd47941133f6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/ASR/SKILL.md"}, "region": {"startLine": 231}}}]}, {"ruleId": "scanner-244aac486fe1e359", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/web-shader-extractor/SKILL.md"}, "properties": {"repobilityId": "35e2d70d1b81d74c", "scanner": "scanner-primary", "fingerprint": "244aac486fe1e359", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/web-shader-extractor/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-22f4e4f808522ffb", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/ppt/SKILL.md"}, "properties": {"repobilityId": "79396ad4a2f6680c", "scanner": "scanner-primary", "fingerprint": "22f4e4f808522ffb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/ppt/SKILL.md"}, "region": {"startLine": 430}}}]}, {"ruleId": "scanner-6087e7f713141630", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/ppt/.claude/settings.local.json"}, "properties": {"repobilityId": "e05de7e228274768", "scanner": "scanner-primary", "fingerprint": "6087e7f713141630", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/ppt/.claude/settings.local.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-396b44a71970fa07", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: skills/web-reader/SKILL.md"}, "properties": {"repobilityId": "d59dc0c93c5281ef", "scanner": "scanner-primary", "fingerprint": "396b44a71970fa07", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/web-reader/SKILL.md"}, "region": {"startLine": 876}}}]}, {"ruleId": "scanner-5408a3f73f9ceb3b", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/ui-ux-pro-max/SKILL.md"}, "properties": {"repobilityId": "0920bdc97e9080d9", "scanner": "scanner-primary", "fingerprint": "5408a3f73f9ceb3b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/ui-ux-pro-max/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-97b428c395732faf", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: skills/web-search/SKILL.md"}, "properties": {"repobilityId": "c4f9092426e12f7d", "scanner": "scanner-primary", "fingerprint": "97b428c395732faf", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/web-search/SKILL.md"}, "region": {"startLine": 614}}}]}, {"ruleId": "scanner-d5552e495c2e5b4e", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/aminer-daily-paper/SKILL.md"}, "properties": {"repobilityId": "32ba947275948bb7", "scanner": "scanner-primary", "fingerprint": "d5552e495c2e5b4e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/aminer-daily-paper/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e1cc9f4f4dbda38f", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: skills/image-generation/SKILL.md"}, "properties": {"repobilityId": "15b9f03276b96eed", "scanner": "scanner-primary", "fingerprint": "e1cc9f4f4dbda38f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/image-generation/SKILL.md"}, "region": {"startLine": 263}}}]}, {"ruleId": "scanner-9943681876a3a424", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/fullstack-dev/SKILL.md"}, "properties": {"repobilityId": "ac2cbfc427cb5a5b", "scanner": "scanner-primary", "fingerprint": "9943681876a3a424", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/fullstack-dev/SKILL.md"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-c1453cb0652ab567", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/gift-evaluator/SKILL.md"}, "properties": {"repobilityId": "287c5397461c28fb", "scanner": "scanner-primary", "fingerprint": "c1453cb0652ab567", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/gift-evaluator/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6d90d349e0c3b0d1", "level": "none", "message": {"text": "Commented-code block (5 lines) in ecosystem.config.js:11"}, "properties": {"repobilityId": "3205d156def8a739", "scanner": "scanner-primary", "fingerprint": "6d90d349e0c3b0d1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9428a35a45736a06", "level": "note", "message": {"text": "Legacy-named symbol `store_storeCode_constraint_v1` in instrumentation.ts:21"}, "properties": {"repobilityId": "99c0627ff4232b77", "scanner": "scanner-primary", "fingerprint": "9428a35a45736a06", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c4d7f064f9297ab1", "level": "none", "message": {"text": "Commented-code block (6 lines) in next.config.js:12"}, "properties": {"repobilityId": "40976a4fb04dc3bd", "scanner": "scanner-primary", "fingerprint": "c4d7f064f9297ab1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b1ec34d876675f6b", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/repair-delivery-users.mjs:4"}, "properties": {"repobilityId": "c280d6d5200c6cbf", "scanner": "scanner-primary", "fingerprint": "b1ec34d876675f6b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-32851bf2f20eed5b", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/diagnose-delivery-login.mjs:4"}, "properties": {"repobilityId": "2f9f8d363a9d9ce0", "scanner": "scanner-primary", "fingerprint": "32851bf2f20eed5b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f81a392662b0a8dd", "level": "none", "message": {"text": "Commented-code block (5 lines) in skills/skill-creator/scripts/improve_description.py:147"}, "properties": {"repobilityId": "6442bb1345d0cfa0", "scanner": "scanner-primary", "fingerprint": "f81a392662b0a8dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2df39936564ffc2d", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/skill-creator/scripts/run_eval.py:85"}, "properties": {"repobilityId": "0014926d663ccff5", "scanner": "scanner-primary", "fingerprint": "2df39936564ffc2d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1f108110b8c97add", "level": "none", "message": {"text": "Commented-code block (5 lines) in skills/ppt/scripts/html2pptx.js:826"}, "properties": {"repobilityId": "e144440019436e5c", "scanner": "scanner-primary", "fingerprint": "1f108110b8c97add", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ba8c49307db501d4", "level": "note", "message": {"text": "Legacy-named symbol `form_fill_legacy` in skills/ppt/scripts/pdf.py:1240"}, "properties": {"repobilityId": "90f3a32bf8eee741", "scanner": "scanner-primary", "fingerprint": "ba8c49307db501d4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5fd9d83bbda20b00", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/ppt/scripts/pdf.py:378"}, "properties": {"repobilityId": "d20cae0e5cef1e30", "scanner": "scanner-primary", "fingerprint": "5fd9d83bbda20b00", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-09a95a0577b71ef0", "level": "none", "message": {"text": "Commented-code block (6 lines) in skills/ppt/scripts/thumbnail.py:32"}, "properties": {"repobilityId": "378c2a6eab8e5fa0", "scanner": "scanner-primary", "fingerprint": "09a95a0577b71ef0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f876c19fc88bc08f", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/ppt/scripts/thumbnail.py:183"}, "properties": {"repobilityId": "5ff17e38a038aae3", "scanner": "scanner-primary", "fingerprint": "f876c19fc88bc08f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c03753aeb70c874f", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/ppt/ooxml/scripts/validation/redlining.py:153"}, "properties": {"repobilityId": "899eec9570e14763", "scanner": "scanner-primary", "fingerprint": "c03753aeb70c874f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8e8b1c847d947706", "level": "note", "message": {"text": "Legacy-named symbol `xml_copy` in skills/ppt/ooxml/scripts/validation/base.py:769"}, "properties": {"repobilityId": "33a7c98014f82d20", "scanner": "scanner-primary", "fingerprint": "8e8b1c847d947706", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-aa5046b687bdc575", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/xlsx/xlsx.py:261"}, "properties": {"repobilityId": "c66fb93b337388f6", "scanner": "scanner-primary", "fingerprint": "aa5046b687bdc575", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e87ffc873a2ef11e", "level": "note", "message": {"text": "Legacy-named symbol `find_toc_field_boundaries_v2` in skills/pdf/scripts/toc_validate.py:306"}, "properties": {"repobilityId": "7ce26167c649291a", "scanner": "scanner-primary", "fingerprint": "e87ffc873a2ef11e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4d6022b5f119e24e", "level": "none", "message": {"text": "Commented-code block (6 lines) in skills/pdf/scripts/html2pdf-next.js:282"}, "properties": {"repobilityId": "50ba33461f864762", "scanner": "scanner-primary", "fingerprint": "4d6022b5f119e24e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc45e82aaac44004", "level": "none", "message": {"text": "Commented-code block (6 lines) in skills/pdf/scripts/cover_validate.js:105"}, "properties": {"repobilityId": "bd4791a37b3538ec", "scanner": "scanner-primary", "fingerprint": "bc45e82aaac44004", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e89d50e15758800f", "level": "note", "message": {"text": "Legacy-named symbol `form_fill_legacy` in skills/pdf/scripts/pdf.py:1330"}, "properties": {"repobilityId": "d299fbc75dcc97bd", "scanner": "scanner-primary", "fingerprint": "e89d50e15758800f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-743e311198f7d1b3", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/pdf/scripts/pdf.py:389"}, "properties": {"repobilityId": "141db0db9859d5ff", "scanner": "scanner-primary", "fingerprint": "743e311198f7d1b3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eb8b87cb1fbabb7f", "level": "none", "message": {"text": "Commented-code block (6 lines) in skills/pdf/scripts/design_engine.py:343"}, "properties": {"repobilityId": "1869a5a9fe4aca86", "scanner": "scanner-primary", "fingerprint": "eb8b87cb1fbabb7f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-95862d2fb8d9eafd", "level": "none", "message": {"text": "Commented-code block (5 lines) in public/sw.js:3"}, "properties": {"repobilityId": "ba22f7faca62fea6", "scanner": "scanner-primary", "fingerprint": "95862d2fb8d9eafd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eab30f5b9e120405", "level": "none", "message": {"text": "Commented-code block (14 lines) in mini-services/realtime-service/index.ts:5"}, "properties": {"repobilityId": "c40368b45e55de5b", "scanner": "scanner-primary", "fingerprint": "eab30f5b9e120405", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-22501105d39969bb", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/proxy.ts:4"}, "properties": {"repobilityId": "3a16aa862b9cfbbb", "scanner": "scanner-primary", "fingerprint": "22501105d39969bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-728236439c576914", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/stores/auth-store.ts:330"}, "properties": {"repobilityId": "ffef268532874610", "scanner": "scanner-primary", "fingerprint": "728236439c576914", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-572b6e41cbeaca8b", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/cache-buster.tsx:3"}, "properties": {"repobilityId": "407520a8db2759a1", "scanner": "scanner-primary", "fingerprint": "572b6e41cbeaca8b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76ffd07f772a2e7d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/auth/auth-provider.tsx:1"}, "properties": {"repobilityId": "ccc6c4c63036090c", "scanner": "scanner-primary", "fingerprint": "76ffd07f772a2e7d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d6ce12778e8b5c7c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/auth/session-provider.tsx:99"}, "properties": {"repobilityId": "b39d98333bdf8334", "scanner": "scanner-primary", "fingerprint": "d6ce12778e8b5c7c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e1bd6e9381e0d929", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/shared/notification-bell.tsx:3"}, "properties": {"repobilityId": "28df18e0a6deca36", "scanner": "scanner-primary", "fingerprint": "e1bd6e9381e0d929", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-992de55aba9bd37f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/shared/notification-bell.tsx:201"}, "properties": {"repobilityId": "70ef982e3f61b39a", "scanner": "scanner-primary", "fingerprint": "992de55aba9bd37f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-721d796bac486d75", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/ui/connection-status.tsx:3"}, "properties": {"repobilityId": "62863d3d61c3b50a", "scanner": "scanner-primary", "fingerprint": "721d796bac486d75", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-448f70fc42ea6a20", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/customer/auth/customer-login.tsx:55"}, "properties": {"repobilityId": "74252567eefce6d2", "scanner": "scanner-primary", "fingerprint": "448f70fc42ea6a20", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dd548d7b8ed0b6b5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/customer/auth/customer-register.tsx:65"}, "properties": {"repobilityId": "3d099200f21bb719", "scanner": "scanner-primary", "fingerprint": "dd548d7b8ed0b6b5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-73db4d239da86827", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/customer/auth/customer-auth.tsx:79"}, "properties": {"repobilityId": "ea654d1066a87bbe", "scanner": "scanner-primary", "fingerprint": "73db4d239da86827", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0b441cfe23f3211b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/customer/checkout/customer-checkout.tsx:99"}, "properties": {"repobilityId": "2a9f6c8e1e552dd9", "scanner": "scanner-primary", "fingerprint": "0b441cfe23f3211b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7ffbc1fc1d9e7b8a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/customer/store-picker/store-picker-modal.tsx:72"}, "properties": {"repobilityId": "a365ad3440f5ab07", "scanner": "scanner-primary", "fingerprint": "7ffbc1fc1d9e7b8a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2e90f769258ea07b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/staff-view.tsx:261"}, "properties": {"repobilityId": "8a9b1a85b50f4c22", "scanner": "scanner-primary", "fingerprint": "2e90f769258ea07b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7e29113c8d10fa11", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/tax-view.tsx:114"}, "properties": {"repobilityId": "f0b3ed821c31b363", "scanner": "scanner-primary", "fingerprint": "7e29113c8d10fa11", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8e9f5d8ec04e9918", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/dashboard/ops-dashboard-view.tsx:111"}, "properties": {"repobilityId": "35c152ebf5cb6166", "scanner": "scanner-primary", "fingerprint": "8e9f5d8ec04e9918", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2ad2a946ce8a7809", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/grocery/admin-dashboard.tsx:123"}, "properties": {"repobilityId": "21f662faf9a505b8", "scanner": "scanner-primary", "fingerprint": "2ad2a946ce8a7809", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a028d61c3cff5e2f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/users/platform-users-view.tsx:106"}, "properties": {"repobilityId": "48f9d22bbd2ece10", "scanner": "scanner-primary", "fingerprint": "a028d61c3cff5e2f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e55ad32f9cc9eec8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/account-billing/tabs/invoices-tab.tsx:90"}, "properties": {"repobilityId": "2e021dcec8816fd8", "scanner": "scanner-primary", "fingerprint": "e55ad32f9cc9eec8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-05430516bf69ad46", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/account-billing/tabs/accounts-tab.tsx:68"}, "properties": {"repobilityId": "df3a400f22c4582c", "scanner": "scanner-primary", "fingerprint": "05430516bf69ad46", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3e4e7d1cd47ea75e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/account-billing/tabs/payments-tab.tsx:56"}, "properties": {"repobilityId": "77610cffdc10515f", "scanner": "scanner-primary", "fingerprint": "3e4e7d1cd47ea75e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dff7c59ddd791708", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/account-billing/tabs/services-tab.tsx:58"}, "properties": {"repobilityId": "981f107e0bee1209", "scanner": "scanner-primary", "fingerprint": "dff7c59ddd791708", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c51dbb741f2ae71c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/admin/notifications/notification-center.tsx:3"}, "properties": {"repobilityId": "f22500b0783a5f80", "scanner": "scanner-primary", "fingerprint": "c51dbb741f2ae71c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef9dff9d45feada9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/leads/leads-view.tsx:299"}, "properties": {"repobilityId": "7383932b793f59c3", "scanner": "scanner-primary", "fingerprint": "ef9dff9d45feada9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ecc51f394238c767", "level": "note", "message": {"text": "Legacy-named symbol `product_intro_v2` in src/components/admin/leads/crm-data.ts:113"}, "properties": {"repobilityId": "e7b0db05ee5669db", "scanner": "scanner-primary", "fingerprint": "ecc51f394238c767", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-40e3ada8f4802f20", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/leads/sales-rep-performance.tsx:60"}, "properties": {"repobilityId": "92530c796ab374f8", "scanner": "scanner-primary", "fingerprint": "40e3ada8f4802f20", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-169e6e13dd630ae2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/addons/addons-view.tsx:90"}, "properties": {"repobilityId": "6a965f24415ee416", "scanner": "scanner-primary", "fingerprint": "169e6e13dd630ae2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-169bfea3532f4e28", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/revenue-ops/revenue-commission-processing.tsx:110"}, "properties": {"repobilityId": "2117c0c1712db957", "scanner": "scanner-primary", "fingerprint": "169bfea3532f4e28", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cfcf5bed61a09d51", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/admin/audit/audit-log-viewer.tsx:3"}, "properties": {"repobilityId": "313b54ff8f6ca5b9", "scanner": "scanner-primary", "fingerprint": "cfcf5bed61a09d51", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c1e3f37e07ee55b2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/businesses/businesses-view.tsx:473"}, "properties": {"repobilityId": "5086b5ba5742372c", "scanner": "scanner-primary", "fingerprint": "c1e3f37e07ee55b2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-393adee723531668", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/websites/quantix-website-view.tsx:140"}, "properties": {"repobilityId": "8215f5bd427b7cdc", "scanner": "scanner-primary", "fingerprint": "393adee723531668", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6f0b383af05130b3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/payment-plugins/payment-plugins-view.tsx:148"}, "properties": {"repobilityId": "1404ba607495f04f", "scanner": "scanner-primary", "fingerprint": "6f0b383af05130b3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0c8faf8c54208862", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/commission/commission-view.tsx:727"}, "properties": {"repobilityId": "bebb6af77653bfb4", "scanner": "scanner-primary", "fingerprint": "0c8faf8c54208862", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d6f0a3f951a6b60b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/subscriptions/subscriptions-view.tsx:314"}, "properties": {"repobilityId": "e23838c9f9c2315b", "scanner": "scanner-primary", "fingerprint": "d6f0a3f951a6b60b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-624b96878258237f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/rbac/permission-matrix-view.tsx:137"}, "properties": {"repobilityId": "e81576b7aa50d077", "scanner": "scanner-primary", "fingerprint": "624b96878258237f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f7349341ff28e15e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/admin/invoices/platform-invoices-view.tsx:149"}, "properties": {"repobilityId": "45351945007c3c1b", "scanner": "scanner-primary", "fingerprint": "f7349341ff28e15e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a56a3f5b7070f381", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/delivery/auth/delivery-login.tsx:12"}, "properties": {"repobilityId": "7d006a4b6713ac1e", "scanner": "scanner-primary", "fingerprint": "a56a3f5b7070f381", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-223403abe43259d9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/settings/store-settings.tsx:92"}, "properties": {"repobilityId": "06cf5a07e83f99e7", "scanner": "scanner-primary", "fingerprint": "223403abe43259d9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7161c8ee5392f7bc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/users/user-creation-view.tsx:114"}, "properties": {"repobilityId": "1ef2962c4e913fd7", "scanner": "scanner-primary", "fingerprint": "7161c8ee5392f7bc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2f26471ccf360fc6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/stores/stores-view.tsx:252"}, "properties": {"repobilityId": "d2e467291c1b14a9", "scanner": "scanner-primary", "fingerprint": "2f26471ccf360fc6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ce47d8ee47aed09b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/orders/orders-view.tsx:469"}, "properties": {"repobilityId": "425ffbca1cabd126", "scanner": "scanner-primary", "fingerprint": "ce47d8ee47aed09b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ee7c0d88ddfacf95", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/business/orders/new-order-alert.tsx:8"}, "properties": {"repobilityId": "f2146d6b33cb3496", "scanner": "scanner-primary", "fingerprint": "ee7c0d88ddfacf95", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec63b323921da5f1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/orders/create-order-dialog.tsx:395"}, "properties": {"repobilityId": "4a25e4da10e4c02f", "scanner": "scanner-primary", "fingerprint": "ec63b323921da5f1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6c654f99d55700f8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/operations/delivery-partners-view.tsx:232"}, "properties": {"repobilityId": "26daa4421da637ee", "scanner": "scanner-primary", "fingerprint": "6c654f99d55700f8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0739b747b54d4158", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/dashboard/business-dashboard.tsx:115"}, "properties": {"repobilityId": "e6f2e8fe540b60ca", "scanner": "scanner-primary", "fingerprint": "0739b747b54d4158", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-583dd6e805028b86", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/workspace/workspace-overview.tsx:74"}, "properties": {"repobilityId": "7ddc5481946d8d8f", "scanner": "scanner-primary", "fingerprint": "583dd6e805028b86", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-51cec7895040c6a5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/customers/customers-view.tsx:400"}, "properties": {"repobilityId": "1d88ab36e180ba26", "scanner": "scanner-primary", "fingerprint": "51cec7895040c6a5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-062c8b128e158460", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/categories/categories-view.tsx:241"}, "properties": {"repobilityId": "7a458176e9a4acd1", "scanner": "scanner-primary", "fingerprint": "062c8b128e158460", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9ffdb3b134e29977", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/business/pos/thermal-receipt-v2.tsx:3"}, "properties": {"repobilityId": "69e83b683accb58f", "scanner": "scanner-primary", "fingerprint": "9ffdb3b134e29977", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-01745b412fdd2e4e", "level": "note", "message": {"text": "Legacy-named symbol `quantix_pos_prefs_v1` in src/components/business/pos/pos-enterprise.tsx:803"}, "properties": {"repobilityId": "ce8c2c9f41438951", "scanner": "scanner-primary", "fingerprint": "01745b412fdd2e4e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f9e25156d0e7e000", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/pos/pos-enterprise.tsx:821"}, "properties": {"repobilityId": "fda72ecc04d51d11", "scanner": "scanner-primary", "fingerprint": "f9e25156d0e7e000", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-01fbb2aba6133132", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/branding/branding-view.tsx:106"}, "properties": {"repobilityId": "5b1c37ee0ee9ea3f", "scanner": "scanner-primary", "fingerprint": "01fbb2aba6133132", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7cb6d3eec1aac81c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/products/products-view.tsx:210"}, "properties": {"repobilityId": "78a0a4da83b904ad", "scanner": "scanner-primary", "fingerprint": "7cb6d3eec1aac81c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f5312d80d9da061a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/payment/gateway-config-view.tsx:147"}, "properties": {"repobilityId": "99fd10908d0f0280", "scanner": "scanner-primary", "fingerprint": "f5312d80d9da061a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4a20bf3548ba77c9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/business/invoices/business-invoices-view.tsx:112"}, "properties": {"repobilityId": "d390262a567bda1f", "scanner": "scanner-primary", "fingerprint": "4a20bf3548ba77c9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eab2586facd8f8b1", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/pos/thermal-receipt.tsx:3"}, "properties": {"repobilityId": "e32577934555480a", "scanner": "scanner-primary", "fingerprint": "eab2586facd8f8b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d67fdb7bcdfdb97b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/pos/print-styles.tsx:3"}, "properties": {"repobilityId": "4ff64a3f2afef225", "scanner": "scanner-primary", "fingerprint": "d67fdb7bcdfdb97b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0136dd03f66c03fa", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/pos/pos-production.tsx:3"}, "properties": {"repobilityId": "d9a07579cc94c756", "scanner": "scanner-primary", "fingerprint": "0136dd03f66c03fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-347110785bd48846", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/pos/thermal-print-dialog.tsx:3"}, "properties": {"repobilityId": "306601adfa7f8a42", "scanner": "scanner-primary", "fingerprint": "347110785bd48846", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-911d317b1daad829", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/storefront/pwa-meta-updater.tsx:5"}, "properties": {"repobilityId": "26a461da3f8d54c1", "scanner": "scanner-primary", "fingerprint": "911d317b1daad829", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-70ea15a2bf1bba43", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/storefront/web/storefront-checkout.tsx:331"}, "properties": {"repobilityId": "fda287f07a04327f", "scanner": "scanner-primary", "fingerprint": "70ea15a2bf1bba43", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7cbf569d02aa65dc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/storefront/web/storefront-password.tsx:84"}, "properties": {"repobilityId": "9ecb8fd260cb43c9", "scanner": "scanner-primary", "fingerprint": "7cbf569d02aa65dc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-618bfe9cfbe0d3a7", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/storefront/web/storefront-auth.tsx:20"}, "properties": {"repobilityId": "ac24fcfa0082de8c", "scanner": "scanner-primary", "fingerprint": "618bfe9cfbe0d3a7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6672a0b1409c477a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/storefront/web/storefront-auth.tsx:165"}, "properties": {"repobilityId": "d702e1e47ac9d10d", "scanner": "scanner-primary", "fingerprint": "6672a0b1409c477a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e262c9b3503f0b07", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/storefront/web/storefront-home.tsx:357"}, "properties": {"repobilityId": "6fa849a18231ebaa", "scanner": "scanner-primary", "fingerprint": "e262c9b3503f0b07", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ecad1262f5fe4a3c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/storefront/web/storefront-home.tsx:132"}, "properties": {"repobilityId": "91de4d28921f7b5b", "scanner": "scanner-primary", "fingerprint": "ecad1262f5fe4a3c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0ef719e5d123e82b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/storefront/web/storefront-banner.tsx:10"}, "properties": {"repobilityId": "8cfbaa1aed29cf7c", "scanner": "scanner-primary", "fingerprint": "0ef719e5d123e82b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0fe069a70672a6f4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/storefront/web/storefront-product.tsx:154"}, "properties": {"repobilityId": "5bd1158693d6b4f6", "scanner": "scanner-primary", "fingerprint": "0fe069a70672a6f4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5a7132ab569caf68", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/storefront/web/storefront-category.tsx:72"}, "properties": {"repobilityId": "eac6677e6332c299", "scanner": "scanner-primary", "fingerprint": "5a7132ab569caf68", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c642144456a2987d", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/storefront/web/product-image.tsx:6"}, "properties": {"repobilityId": "f6776c000ec73ef5", "scanner": "scanner-primary", "fingerprint": "c642144456a2987d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2b3cb6709c5f8c44", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/page.tsx:17"}, "properties": {"repobilityId": "d6b8b488bf953cb1", "scanner": "scanner-primary", "fingerprint": "2b3cb6709c5f8c44", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-68fda19923efae1d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/page.tsx:50"}, "properties": {"repobilityId": "04d2c4f67a6d5d9e", "scanner": "scanner-primary", "fingerprint": "68fda19923efae1d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-13e554026799cede", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/app/reset-password/page.tsx:9"}, "properties": {"repobilityId": "4ac87e5967e9d9d4", "scanner": "scanner-primary", "fingerprint": "13e554026799cede", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5ecdbf21e6fd7ed4", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/admin/app-version/route.ts:1"}, "properties": {"repobilityId": "9bee87d7eb239eab", "scanner": "scanner-primary", "fingerprint": "5ecdbf21e6fd7ed4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-38dc36cffce71384", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/admin/banners/route.ts:1"}, "properties": {"repobilityId": "ba5935aa59bb9303", "scanner": "scanner-primary", "fingerprint": "38dc36cffce71384", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ee48eee8a01e83a9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/admin/banners/[bannerId]/route.ts:1"}, "properties": {"repobilityId": "02817afe14e9c06c", "scanner": "scanner-primary", "fingerprint": "ee48eee8a01e83a9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c1e80eac6bfa8dbc", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/storefront/promotions/route.ts:1"}, "properties": {"repobilityId": "f24efdbe8208ea11", "scanner": "scanner-primary", "fingerprint": "c1e80eac6bfa8dbc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0958a33313f91bec", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/v1/devices/unregister/route.ts:1"}, "properties": {"repobilityId": "328b61f4e382c91a", "scanner": "scanner-primary", "fingerprint": "0958a33313f91bec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb02dea3db3e1415", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/customer/auth/refresh/route.ts:1"}, "properties": {"repobilityId": "9ecb0ffcbe8e7fe8", "scanner": "scanner-primary", "fingerprint": "cb02dea3db3e1415", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3acd72aacb1ccc5c", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/app/api/customer/auth/me/route.ts:1"}, "properties": {"repobilityId": "558fe034964b34de", "scanner": "scanner-primary", "fingerprint": "3acd72aacb1ccc5c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-11bf078bca28e58f", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/deploy/route.ts:9"}, "properties": {"repobilityId": "61243252a13e09b0", "scanner": "scanner-primary", "fingerprint": "11bf078bca28e58f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ad32a94f652ad44", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/deploy/status/route.ts:8"}, "properties": {"repobilityId": "71320f5f9b78acb6", "scanner": "scanner-primary", "fingerprint": "1ad32a94f652ad44", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d2e0d9a3d8d01cd4", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/assets/logo/route.ts:1"}, "properties": {"repobilityId": "e42a59ff5c96e3b3", "scanner": "scanner-primary", "fingerprint": "d2e0d9a3d8d01cd4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-59c3c357b0a3d624", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/admin/sales-team/route.ts:1"}, "properties": {"repobilityId": "a4ee7af9ad83ca91", "scanner": "scanner-primary", "fingerprint": "59c3c357b0a3d624", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a1b69332d86f9ed1", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/admin/leads/mtd-report/route.ts:1"}, "properties": {"repobilityId": "4129a64a9b7b8b75", "scanner": "scanner-primary", "fingerprint": "a1b69332d86f9ed1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7019fe41a0669ccb", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/admin/leads/proposal/generate/route.ts:1"}, "properties": {"repobilityId": "ef8644972d34a30e", "scanner": "scanner-primary", "fingerprint": "7019fe41a0669ccb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f4d76b29301f19c4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/admin/leads/proposal/generate/route.ts:58"}, "properties": {"repobilityId": "ca84dfcb185f683c", "scanner": "scanner-primary", "fingerprint": "f4d76b29301f19c4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-763763cf5941a04f", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/admin/import/api-integrations/route.ts:1"}, "properties": {"repobilityId": "b9af934eaa6cbef6", "scanner": "scanner-primary", "fingerprint": "763763cf5941a04f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-938aa667c6b9d57e", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/admin/import/leads/route.ts:5"}, "properties": {"repobilityId": "ccbd6094382b1aa5", "scanner": "scanner-primary", "fingerprint": "938aa667c6b9d57e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b932ad55b43e4da0", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/admin/import/businesses/route.ts:1"}, "properties": {"repobilityId": "2d0910312a7a5ad0", "scanner": "scanner-primary", "fingerprint": "b932ad55b43e4da0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c3816b0d2bef1e88", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/admin/billing/renewals/route.ts:1"}, "properties": {"repobilityId": "2d02cbfa99deb816", "scanner": "scanner-primary", "fingerprint": "c3816b0d2bef1e88", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7508105e45e7a64b", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/admin/billing/[businessId]/record-payment/route.ts:1"}, "properties": {"repobilityId": "5744aeb92d315a30", "scanner": "scanner-primary", "fingerprint": "7508105e45e7a64b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b7b5cd385ee4abbb", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/admin/billing/[businessId]/mark-received/route.ts:1"}, "properties": {"repobilityId": "f0707e8bfc67fdab", "scanner": "scanner-primary", "fingerprint": "b7b5cd385ee4abbb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0a9516febfa729bd", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/admin/billing/invoices/route.ts:1"}, "properties": {"repobilityId": "db4f9f14171c3452", "scanner": "scanner-primary", "fingerprint": "0a9516febfa729bd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-50ff435cae21d660", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/admin/billing/invoices/[invoiceId]/email/route.ts:1"}, "properties": {"repobilityId": "28dc07e3440ab677", "scanner": "scanner-primary", "fingerprint": "50ff435cae21d660", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-27ebd0b02c134feb", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/admin/billing/invoices/[invoiceId]/download/route.ts:1"}, "properties": {"repobilityId": "12bf66f3a3b0204a", "scanner": "scanner-primary", "fingerprint": "27ebd0b02c134feb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-167fac1524861d1b", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/admin/billing/proof-upload/route.ts:1"}, "properties": {"repobilityId": "1418a3a079a3b297", "scanner": "scanner-primary", "fingerprint": "167fac1524861d1b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-51c16bc5bf5b4943", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/admin/businesses/[businessId]/reset-password/route.ts:1"}, "properties": {"repobilityId": "83c72bdcdb5edb15", "scanner": "scanner-primary", "fingerprint": "51c16bc5bf5b4943", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-da78a1362909040f", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/admin/businesses/[businessId]/addons/[addonId]/invoice/route.ts:1"}, "properties": {"repobilityId": "56d525c4b58a0eee", "scanner": "scanner-primary", "fingerprint": "da78a1362909040f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dd6df75601b47fa9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/admin/businesses/[businessId]/update-login-id/route.ts:1"}, "properties": {"repobilityId": "981068353fccf512", "scanner": "scanner-primary", "fingerprint": "dd6df75601b47fa9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e560e5a840756418", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/admin/websites/route.ts:1"}, "properties": {"repobilityId": "82c3a3380dec3c40", "scanner": "scanner-primary", "fingerprint": "e560e5a840756418", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c73ff139c9ee5961", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/admin/payment-config/route.ts:1"}, "properties": {"repobilityId": "a9ad780e1310723e", "scanner": "scanner-primary", "fingerprint": "c73ff139c9ee5961", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2343e0f2da7d53ce", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/admin/payment-plugins/route.ts:1"}, "properties": {"repobilityId": "c31d266e719ff1e3", "scanner": "scanner-primary", "fingerprint": "2343e0f2da7d53ce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-61e8263523ea5610", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/admin/branding/route.ts:3"}, "properties": {"repobilityId": "a8e02efbd00ff1e9", "scanner": "scanner-primary", "fingerprint": "61e8263523ea5610", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-57b0075d02d5cf05", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/admin/migrate/lead-stages/route.ts:7"}, "properties": {"repobilityId": "0e26240d7be1cc1a", "scanner": "scanner-primary", "fingerprint": "57b0075d02d5cf05", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-593f1f0ed0d09d9e", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/admin/documents/proposal-id/route.ts:1"}, "properties": {"repobilityId": "3b7e1c98769cc2e9", "scanner": "scanner-primary", "fingerprint": "593f1f0ed0d09d9e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dddc13ace79154fe", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/admin/export/leads/route.ts:6"}, "properties": {"repobilityId": "16fc1d7466bb974e", "scanner": "scanner-primary", "fingerprint": "dddc13ace79154fe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7f5edc3bcab72b61", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/business/logo/upload/route.ts:1"}, "properties": {"repobilityId": "ad2e386398faaa66", "scanner": "scanner-primary", "fingerprint": "7f5edc3bcab72b61", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6dfbc7055fa5f2ff", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/users/[userId]/route.ts:1"}, "properties": {"repobilityId": "2739915a364e1318", "scanner": "scanner-primary", "fingerprint": "6dfbc7055fa5f2ff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-447e2262aeac9427", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/notifications/route.ts:1"}, "properties": {"repobilityId": "5203b270471af725", "scanner": "scanner-primary", "fingerprint": "447e2262aeac9427", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e959f8d65e13012", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/stores/route.ts:6"}, "properties": {"repobilityId": "7e98a2217b15a57a", "scanner": "scanner-primary", "fingerprint": "3e959f8d65e13012", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f9b8283e4bc93f76", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/stores/[storeId]/route.ts:1"}, "properties": {"repobilityId": "526f530138d5f476", "scanner": "scanner-primary", "fingerprint": "f9b8283e4bc93f76", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-987c057ca6c333c9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/stores/[storeId]/reset-password/route.ts:1"}, "properties": {"repobilityId": "700156aafc119668", "scanner": "scanner-primary", "fingerprint": "987c057ca6c333c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0891ff06d1e5b03f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/orders/route.ts:6"}, "properties": {"repobilityId": "89948282fa538391", "scanner": "scanner-primary", "fingerprint": "0891ff06d1e5b03f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0420037a1b9ab744", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/orders/[orderId]/route.ts:5"}, "properties": {"repobilityId": "9df992242bc254dd", "scanner": "scanner-primary", "fingerprint": "0420037a1b9ab744", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-df39b8343d87d4d2", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/orders/[orderId]/refund-request/route.ts:1"}, "properties": {"repobilityId": "545cbb9a9ce1ee8f", "scanner": "scanner-primary", "fingerprint": "df39b8343d87d4d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d418c230677f553", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/orders/[orderId]/assign-partner/route.ts:1"}, "properties": {"repobilityId": "738eafc0356ee89f", "scanner": "scanner-primary", "fingerprint": "0d418c230677f553", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-74328a9459176334", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/orders/[orderId]/invoice/route.ts:1"}, "properties": {"repobilityId": "60b708d00b33a1f0", "scanner": "scanner-primary", "fingerprint": "74328a9459176334", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-686acfce5153aca9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/orders/[orderId]/status/route.ts:5"}, "properties": {"repobilityId": "ba9d6972ebad2481", "scanner": "scanner-primary", "fingerprint": "686acfce5153aca9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-22770e9cd006475e", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/auth/forgot-password/reset/route.ts:1"}, "properties": {"repobilityId": "503bbc09300f0fb8", "scanner": "scanner-primary", "fingerprint": "22770e9cd006475e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-01b4fed07bf40d87", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/auth/forgot-password/verify/route.ts:1"}, "properties": {"repobilityId": "950d02912607a6ae", "scanner": "scanner-primary", "fingerprint": "01b4fed07bf40d87", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b5e2e08d05a4cdb2", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/auth/forgot-password/send-otp/route.ts:1"}, "properties": {"repobilityId": "0b76e17985953f68", "scanner": "scanner-primary", "fingerprint": "b5e2e08d05a4cdb2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-92531735eabde29d", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/auth/set-password/route.ts:1"}, "properties": {"repobilityId": "1f08e28019c29623", "scanner": "scanner-primary", "fingerprint": "92531735eabde29d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2942364917e2b390", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/auth/refresh/route.ts:1"}, "properties": {"repobilityId": "92cbc1b1630ecd57", "scanner": "scanner-primary", "fingerprint": "2942364917e2b390", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ad2ac2aaa3d859bb", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/auth/change-password/route.ts:1"}, "properties": {"repobilityId": "6144b70c2f743666", "scanner": "scanner-primary", "fingerprint": "ad2ac2aaa3d859bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f18967f99ef87cd2", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/auth/register/route.ts:5"}, "properties": {"repobilityId": "36b342edc77f39b2", "scanner": "scanner-primary", "fingerprint": "f18967f99ef87cd2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-60b8a1f637003659", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/auth/send-otp/route.ts:1"}, "properties": {"repobilityId": "798dd6c887a2ee70", "scanner": "scanner-primary", "fingerprint": "60b8a1f637003659", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-83ea952e856033f0", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/leads/route.ts:1"}, "properties": {"repobilityId": "fd7eb038aa51a01c", "scanner": "scanner-primary", "fingerprint": "83ea952e856033f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-36d0e3efd53d9f03", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/leads/[leadId]/route.ts:1"}, "properties": {"repobilityId": "4b8b0c74ca654fa3", "scanner": "scanner-primary", "fingerprint": "36d0e3efd53d9f03", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-17db3685a49706fa", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/platform/config/route.ts:1"}, "properties": {"repobilityId": "e937eeb3ecef12cf", "scanner": "scanner-primary", "fingerprint": "17db3685a49706fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-786b321b2ffd0aa6", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/platform/plans/[planId]/route.ts:1"}, "properties": {"repobilityId": "04200e8482e7b767", "scanner": "scanner-primary", "fingerprint": "786b321b2ffd0aa6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e5205a86e7ebca7c", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/core/pwa-icon/[slug]/[size]/route.ts:7"}, "properties": {"repobilityId": "d9edd76f2b104b84", "scanner": "scanner-primary", "fingerprint": "e5205a86e7ebca7c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fec6c84228c60717", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/app/api/core/app-readiness/customer/route.ts:1"}, "properties": {"repobilityId": "4e0135b4277161f1", "scanner": "scanner-primary", "fingerprint": "fec6c84228c60717", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-959f001b118f2c16", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/api/core/app-readiness/delivery/route.ts:1"}, "properties": {"repobilityId": "666dae104a8ed6da", "scanner": "scanner-primary", "fingerprint": "959f001b118f2c16", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8999d57b061890d8", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/app/api/core/app-readiness/pos/route.ts:1"}, "properties": {"repobilityId": "752ee2b86bc8398a", "scanner": "scanner-primary", "fingerprint": "8999d57b061890d8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8bc79ed4a2e6b610", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/mobile/webhook/route.ts:1"}, "properties": {"repobilityId": "86ec47ff23ffc779", "scanner": "scanner-primary", "fingerprint": "8bc79ed4a2e6b610", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-332f6e25f81cc0a3", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/admin/migrate-customers/route.ts:5"}, "properties": {"repobilityId": "645788da72666732", "scanner": "scanner-primary", "fingerprint": "332f6e25f81cc0a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3b0b6b59e8ae55e3", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/api/core/delivery/partners/route.ts:1"}, "properties": {"repobilityId": "c6bc17552ae3b4b1", "scanner": "scanner-primary", "fingerprint": "3b0b6b59e8ae55e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-775f22e271b29686", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/delivery/partners/[partnerId]/route.ts:1"}, "properties": {"repobilityId": "d74bc935b6c0870e", "scanner": "scanner-primary", "fingerprint": "775f22e271b29686", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f129fedd46b32c7", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/delivery/partners/[partnerId]/earnings/route.ts:1"}, "properties": {"repobilityId": "5b826576dafe7a23", "scanner": "scanner-primary", "fingerprint": "2f129fedd46b32c7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f56f61e836623b14", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/delivery/partners/[partnerId]/offline/route.ts:1"}, "properties": {"repobilityId": "c648788a6d01d284", "scanner": "scanner-primary", "fingerprint": "f56f61e836623b14", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c13d35922e7bf7c7", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/delivery/partners/[partnerId]/online/route.ts:1"}, "properties": {"repobilityId": "b33e84797e17c282", "scanner": "scanner-primary", "fingerprint": "c13d35922e7bf7c7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-270eaccff88c651e", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/core/delivery/partners/[partnerId]/history/route.ts:1"}, "properties": {"repobilityId": "439e2254f35a4051", "scanner": "scanner-primary", "fingerprint": "270eaccff88c651e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c15512637752617f", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/core/delivery/update-status/route.ts:50"}, "properties": {"repobilityId": "54ea7d6e69175c74", "scanner": "scanner-primary", "fingerprint": "c15512637752617f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c7945f731ffc46a9", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/delivery/orders/[orderId]/accept/route.ts:1"}, "properties": {"repobilityId": "41307235d2002402", "scanner": "scanner-primary", "fingerprint": "c7945f731ffc46a9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0c1223bde589b663", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/delivery/orders/[orderId]/pickup/route.ts:1"}, "properties": {"repobilityId": "efac9a0694f87c1e", "scanner": "scanner-primary", "fingerprint": "0c1223bde589b663", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-94f2f782522f8a7e", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/core/delivery/orders/[orderId]/deliver/route.ts:1"}, "properties": {"repobilityId": "4538ac860c5618a2", "scanner": "scanner-primary", "fingerprint": "94f2f782522f8a7e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52a4911feabe2553", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/delivery/auth/reset-password/route.ts:1"}, "properties": {"repobilityId": "3645b13322968e26", "scanner": "scanner-primary", "fingerprint": "52a4911feabe2553", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b7f4400196309477", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/delivery/auth/login/route.ts:1"}, "properties": {"repobilityId": "f2d01504e0730d37", "scanner": "scanner-primary", "fingerprint": "b7f4400196309477", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b2d5a07c0145bd26", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/delivery/auth/change-password/route.ts:1"}, "properties": {"repobilityId": "b5c34305c04ad763", "scanner": "scanner-primary", "fingerprint": "b2d5a07c0145bd26", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ddf9671d818eec98", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/api/core/delivery/my-orders/route.ts:114"}, "properties": {"repobilityId": "092f869a01d2ea05", "scanner": "scanner-primary", "fingerprint": "ddf9671d818eec98", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5119ceb255b6d76f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/route.ts:73"}, "properties": {"repobilityId": "9bc4c03725bbbfa2", "scanner": "scanner-primary", "fingerprint": "5119ceb255b6d76f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b7f6cc0ed5653b44", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/route.ts:1"}, "properties": {"repobilityId": "c27d76ddc289edfc", "scanner": "scanner-primary", "fingerprint": "b7f6cc0ed5653b44", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f1d1d259e9beb457", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/readiness-score/route.ts:1"}, "properties": {"repobilityId": "d992e46325f81e89", "scanner": "scanner-primary", "fingerprint": "f1d1d259e9beb457", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-acdee098c9300b25", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/tax-config/route.ts:1"}, "properties": {"repobilityId": "d9ce3c6c7eb5ce2a", "scanner": "scanner-primary", "fingerprint": "acdee098c9300b25", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac97730825ebd872", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/api/core/businesses/[businessId]/stores/[storeId]/payment-config/route.ts:1"}, "properties": {"repobilityId": "fc08d88b8c574792", "scanner": "scanner-primary", "fingerprint": "ac97730825ebd872", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-41e006470040441d", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/subscription/route.ts:1"}, "properties": {"repobilityId": "935e0a7d3134974c", "scanner": "scanner-primary", "fingerprint": "41e006470040441d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6d5d379a856913de", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/core/businesses/[businessId]/subscription/override-pricing/route.ts:1"}, "properties": {"repobilityId": "097edc2e521af3d4", "scanner": "scanner-primary", "fingerprint": "6d5d379a856913de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-51566d97263eae6c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/promo-codes/route.ts:1"}, "properties": {"repobilityId": "056f01efe5f59dd2", "scanner": "scanner-primary", "fingerprint": "51566d97263eae6c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-84d317fecb01d96a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/customers/route.ts:1"}, "properties": {"repobilityId": "51410eb14d5f882e", "scanner": "scanner-primary", "fingerprint": "84d317fecb01d96a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e1f471af099fb0b3", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/customers/import/route.ts:1"}, "properties": {"repobilityId": "4a776845ea28e5b8", "scanner": "scanner-primary", "fingerprint": "e1f471af099fb0b3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-feeb9b018363b482", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/customers/[customerId]/route.ts:1"}, "properties": {"repobilityId": "54b7133c1f6f0112", "scanner": "scanner-primary", "fingerprint": "feeb9b018363b482", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-476c8a7cbba61e4a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/customers/[customerId]/addresses/route.ts:1"}, "properties": {"repobilityId": "ae62bf8197e945e4", "scanner": "scanner-primary", "fingerprint": "476c8a7cbba61e4a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bb4ca2b64205dd4a", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/customers/[customerId]/addresses/[addressId]/route.ts:1"}, "properties": {"repobilityId": "e679b7a14cb560d0", "scanner": "scanner-primary", "fingerprint": "bb4ca2b64205dd4a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-152907c5d9cb8bfc", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/customers/[customerId]/disable-login/route.ts:1"}, "properties": {"repobilityId": "891284e90a221456", "scanner": "scanner-primary", "fingerprint": "152907c5d9cb8bfc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d7cc7c95e0d06655", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/core/businesses/[businessId]/customers/[customerId]/reset-password/route.ts:1"}, "properties": {"repobilityId": "a95ad43af0b463a8", "scanner": "scanner-primary", "fingerprint": "d7cc7c95e0d06655", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a5712e1ee948e235", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/customers/[customerId]/enable-login/route.ts:1"}, "properties": {"repobilityId": "3b85ffa3b0840e12", "scanner": "scanner-primary", "fingerprint": "a5712e1ee948e235", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-41950b610c0c72e5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/customers/[customerId]/send-password-reset/route.ts:1"}, "properties": {"repobilityId": "026112bb0d90077b", "scanner": "scanner-primary", "fingerprint": "41950b610c0c72e5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b4114895ac2598f5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/customers/[customerId]/notes/route.ts:1"}, "properties": {"repobilityId": "b91343c5daa3aee3", "scanner": "scanner-primary", "fingerprint": "b4114895ac2598f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0f07d69481b31405", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/customers/[customerId]/force-password-change/route.ts:1"}, "properties": {"repobilityId": "7042dee07ee1f13e", "scanner": "scanner-primary", "fingerprint": "0f07d69481b31405", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a00f8d4fba879d22", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/core/businesses/[businessId]/mobile/provision/route.ts:1"}, "properties": {"repobilityId": "95b1a218bea09a32", "scanner": "scanner-primary", "fingerprint": "a00f8d4fba879d22", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2ac42be7204f46cc", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/core/businesses/[businessId]/mobile/status/route.ts:1"}, "properties": {"repobilityId": "1181e0c97f0092b6", "scanner": "scanner-primary", "fingerprint": "2ac42be7204f46cc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7395b025da76d378", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/workflow-rules/route.ts:1"}, "properties": {"repobilityId": "cb2f712968b053c6", "scanner": "scanner-primary", "fingerprint": "7395b025da76d378", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e5b767a83765e3fb", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/modules/route.ts:1"}, "properties": {"repobilityId": "ce8cd79c791f52df", "scanner": "scanner-primary", "fingerprint": "e5b767a83765e3fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fe5db54bea7e51ba", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/categories/route.ts:1"}, "properties": {"repobilityId": "ebe3b57c15632a3d", "scanner": "scanner-primary", "fingerprint": "fe5db54bea7e51ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-622c8dc6c0aba18e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/workforce-settings/route.ts:1"}, "properties": {"repobilityId": "bea75bb8fa152d9c", "scanner": "scanner-primary", "fingerprint": "622c8dc6c0aba18e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e513c1771b60dc4f", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/store-users/route.ts:1"}, "properties": {"repobilityId": "24ae4c74f7718be6", "scanner": "scanner-primary", "fingerprint": "e513c1771b60dc4f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4c0d184fb49c84ab", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/business-users/route.ts:1"}, "properties": {"repobilityId": "273a8ca2b3bb76aa", "scanner": "scanner-primary", "fingerprint": "4c0d184fb49c84ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed7e63c7ab6a8099", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/onboarding/route.ts:1"}, "properties": {"repobilityId": "e621bffbfbca1b11", "scanner": "scanner-primary", "fingerprint": "ed7e63c7ab6a8099", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-542c98d828eef968", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/workflows/route.ts:1"}, "properties": {"repobilityId": "19646297a1992012", "scanner": "scanner-primary", "fingerprint": "542c98d828eef968", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f3ff09218452cd5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/order-stages/route.ts:5"}, "properties": {"repobilityId": "28256552fe95d34e", "scanner": "scanner-primary", "fingerprint": "2f3ff09218452cd5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2713c59915aba4b8", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/reports/inventory/route.ts:1"}, "properties": {"repobilityId": "adf7da094eae9447", "scanner": "scanner-primary", "fingerprint": "2713c59915aba4b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-044be52cb53dc1ba", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/reports/tax/route.ts:1"}, "properties": {"repobilityId": "ecaa7903decd1581", "scanner": "scanner-primary", "fingerprint": "044be52cb53dc1ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-46bed62e22f4c18c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/reports/customers/route.ts:1"}, "properties": {"repobilityId": "533c891997bb6df7", "scanner": "scanner-primary", "fingerprint": "46bed62e22f4c18c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8952e10980aa276", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/reports/delivery/route.ts:1"}, "properties": {"repobilityId": "45be6adce278971f", "scanner": "scanner-primary", "fingerprint": "c8952e10980aa276", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-28aa37784a17ec46", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/reports/sales/route.ts:1"}, "properties": {"repobilityId": "4e934587d7506e83", "scanner": "scanner-primary", "fingerprint": "28aa37784a17ec46", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8a19761880a8077a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/businesses/[businessId]/reports/revenue/route.ts:1"}, "properties": {"repobilityId": "a875d2a99aab0fbc", "scanner": "scanner-primary", "fingerprint": "8a19761880a8077a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0dfbe37e9725c647", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/businesses/[businessId]/products/import/route.ts:1"}, "properties": {"repobilityId": "1e2be8579c8140d2", "scanner": "scanner-primary", "fingerprint": "0dfbe37e9725c647", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-66a2ca957b215ad9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/payments/route.ts:1"}, "properties": {"repobilityId": "fc7b57bb40c1bf02", "scanner": "scanner-primary", "fingerprint": "66a2ca957b215ad9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1daf54bf30eca858", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/payments/[paymentId]/route.ts:1"}, "properties": {"repobilityId": "c03a0147bcaa7fda", "scanner": "scanner-primary", "fingerprint": "1daf54bf30eca858", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b199815d96125d9", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/api/core/payments/razorpay/webhook/route.ts:5"}, "properties": {"repobilityId": "08554ecf461a3fc7", "scanner": "scanner-primary", "fingerprint": "7b199815d96125d9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-20b9ac9dfd165af4", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/api/core/payments/razorpay/verify/route.ts:5"}, "properties": {"repobilityId": "fbbc6555edbbc6c8", "scanner": "scanner-primary", "fingerprint": "20b9ac9dfd165af4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-db479f18b0e3e568", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/core/payments/razorpay/create-order/route.ts:79"}, "properties": {"repobilityId": "77aebd568fafed22", "scanner": "scanner-primary", "fingerprint": "db479f18b0e3e568", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6f109efc226089cb", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/core/payments/gateway/route.ts:1"}, "properties": {"repobilityId": "149fdc0d599c7325", "scanner": "scanner-primary", "fingerprint": "6f109efc226089cb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62057a323a88afbd", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/pos/sessions/route.ts:1"}, "properties": {"repobilityId": "9994576b7b1d1198", "scanner": "scanner-primary", "fingerprint": "62057a323a88afbd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-58277230a0d888bb", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/pos/sessions/[sessionId]/route.ts:1"}, "properties": {"repobilityId": "6e453a96fb350b1d", "scanner": "scanner-primary", "fingerprint": "58277230a0d888bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d2547c4b53c9e554", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/demo-tenants/route.ts:1"}, "properties": {"repobilityId": "e73454c13728e5ee", "scanner": "scanner-primary", "fingerprint": "d2547c4b53c9e554", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3a0b4c89ead845ae", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/demo-tenants/[demoTenantId]/route.ts:1"}, "properties": {"repobilityId": "c1e28eaa7b3a9674", "scanner": "scanner-primary", "fingerprint": "3a0b4c89ead845ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-39bfe9bc3c02d7ab", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/seed/route.ts:1"}, "properties": {"repobilityId": "52c705b71ec23fc6", "scanner": "scanner-primary", "fingerprint": "39bfe9bc3c02d7ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30b7409c289e7b13", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/subscriptions/[subscriptionId]/route.ts:1"}, "properties": {"repobilityId": "2f0ea179fa9570fb", "scanner": "scanner-primary", "fingerprint": "30b7409c289e7b13", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1aeb9c2a24d14831", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/storefront/orders/[orderId]/track/route.ts:9"}, "properties": {"repobilityId": "8251ecc99139891a", "scanner": "scanner-primary", "fingerprint": "1aeb9c2a24d14831", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4436d1f4171fa06", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/core/storefront/auth/login-password/route.ts:1"}, "properties": {"repobilityId": "45ef44f2da21e973", "scanner": "scanner-primary", "fingerprint": "d4436d1f4171fa06", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4af7666717a7169c", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/api/core/storefront/auth/validate-reset-token/route.ts:1"}, "properties": {"repobilityId": "9a26328e6f9142e3", "scanner": "scanner-primary", "fingerprint": "4af7666717a7169c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0db8d7cd28d710fd", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/core/storefront/auth/forgot-password/route.ts:1"}, "properties": {"repobilityId": "11fc538efa70e922", "scanner": "scanner-primary", "fingerprint": "0db8d7cd28d710fd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb0cf1702b9470cd", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/core/storefront/auth/set-password/route.ts:1"}, "properties": {"repobilityId": "614db7c8d98f4b34", "scanner": "scanner-primary", "fingerprint": "eb0cf1702b9470cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-34a71e3e069d00b1", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/storefront/auth/check-customer/route.ts:8"}, "properties": {"repobilityId": "01603c073253f55a", "scanner": "scanner-primary", "fingerprint": "34a71e3e069d00b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-506092e7122cec20", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/storefront/auth/verify/route.ts:10"}, "properties": {"repobilityId": "d16af57eaa798de1", "scanner": "scanner-primary", "fingerprint": "506092e7122cec20", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55eac6e71c1a8bdb", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/core/storefront/auth/change-password/route.ts:1"}, "properties": {"repobilityId": "ae754a9fbbf5ffa2", "scanner": "scanner-primary", "fingerprint": "55eac6e71c1a8bdb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1860b0a55805f977", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/core/storefront/auth/reset-password-via-token/route.ts:1"}, "properties": {"repobilityId": "79d8bd2b4f2cadc9", "scanner": "scanner-primary", "fingerprint": "1860b0a55805f977", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6892a57590e5b1cb", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/storefront/addresses/route.ts:1"}, "properties": {"repobilityId": "6dec9da0b21ed9e2", "scanner": "scanner-primary", "fingerprint": "6892a57590e5b1cb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-676ba6c13aa24e7a", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/storefront/addresses/[id]/route.ts:1"}, "properties": {"repobilityId": "c2df36dd886b0ef1", "scanner": "scanner-primary", "fingerprint": "676ba6c13aa24e7a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0bdeb09bb0c673ea", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/core/storefront/cart/route.ts:1"}, "properties": {"repobilityId": "9d746d65143041f2", "scanner": "scanner-primary", "fingerprint": "0bdeb09bb0c673ea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-36eeb6d60950dd27", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/storefront/store-context/route.ts:5"}, "properties": {"repobilityId": "292f9570a0c54bde", "scanner": "scanner-primary", "fingerprint": "36eeb6d60950dd27", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-daad821b9bd956ae", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/storefront/favorites/route.ts:1"}, "properties": {"repobilityId": "ca600a9d098f684a", "scanner": "scanner-primary", "fingerprint": "daad821b9bd956ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b3635fe998940e86", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/storefront/products/route.ts:1"}, "properties": {"repobilityId": "905b60bbd4f401df", "scanner": "scanner-primary", "fingerprint": "b3635fe998940e86", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-91ed176d0fe5d84b", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/core/storefront/products/[productId]/route.ts:1"}, "properties": {"repobilityId": "d129bf2803d8389c", "scanner": "scanner-primary", "fingerprint": "91ed176d0fe5d84b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc69bbc6553c8ec2", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/core/tenant/resolve/route.ts:1"}, "properties": {"repobilityId": "32c008adf425121b", "scanner": "scanner-primary", "fingerprint": "bc69bbc6553c8ec2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fbeb02188735f4b5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/debug/product-image/route.ts:107"}, "properties": {"repobilityId": "946333eb5a70ff3d", "scanner": "scanner-primary", "fingerprint": "fbeb02188735f4b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d13020a2b217047a", "level": "note", "message": {"text": "Legacy-named symbol `store_storeCode_constraint_v1` in src/app/api/debug/cleanup-audit/route.ts:55"}, "properties": {"repobilityId": "bacfdb4689c2ac25", "scanner": "scanner-primary", "fingerprint": "d13020a2b217047a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-44806931be00c884", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/debug/upload-limits/route.ts:1"}, "properties": {"repobilityId": "58b6aa8efcdf4e21", "scanner": "scanner-primary", "fingerprint": "44806931be00c884", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec3da85056d00d62", "level": "note", "message": {"text": "Legacy-named symbol `store_code_backfill_v2` in src/app/api/debug/full-cleanup/route.ts:227"}, "properties": {"repobilityId": "fe8dd7961af82f6d", "scanner": "scanner-primary", "fingerprint": "ec3da85056d00d62", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a781d5050aee3421", "level": "note", "message": {"text": "Legacy-named symbol `isLegacy` in src/app/api/debug/store-global-audit/route.ts:11"}, "properties": {"repobilityId": "0c3b054f11790431", "scanner": "scanner-primary", "fingerprint": "a781d5050aee3421", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-742448b6159fef21", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/api/payment/webhook/[storeId]/[gateway]/route.ts:1"}, "properties": {"repobilityId": "d9ecc5121054a3af", "scanner": "scanner-primary", "fingerprint": "742448b6159fef21", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-00817b27d3efaf69", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/payment/store-gateway/route.ts:1"}, "properties": {"repobilityId": "2b9bc3349adc29a1", "scanner": "scanner-primary", "fingerprint": "00817b27d3efaf69", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-234c3c8da0b25873", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/delete-account/page.tsx:4"}, "properties": {"repobilityId": "6c67a9646ab7f18d", "scanner": "scanner-primary", "fingerprint": "234c3c8da0b25873", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dedefcdeddcebcf6", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/sw.js/route.ts:3"}, "properties": {"repobilityId": "5119ee6e657d7955", "scanner": "scanner-primary", "fingerprint": "dedefcdeddcebcf6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3590acff9527ce9a", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/manifest.json/route.ts:7"}, "properties": {"repobilityId": "46c7303899ae5080", "scanner": "scanner-primary", "fingerprint": "3590acff9527ce9a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-da3bf28cebe229b8", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/auth.ts:5"}, "properties": {"repobilityId": "a3e9fadbaca8bafb", "scanner": "scanner-primary", "fingerprint": "da3bf28cebe229b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e8a2ca875cf17f00", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/fcm.ts:51"}, "properties": {"repobilityId": "9e39b983e36e9437", "scanner": "scanner-primary", "fingerprint": "e8a2ca875cf17f00", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e0c38cae12a2e35a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/api-client.ts:1"}, "properties": {"repobilityId": "9f70a1d7f6f08b6c", "scanner": "scanner-primary", "fingerprint": "e0c38cae12a2e35a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-067e35af53d0591a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/api-client.ts:211"}, "properties": {"repobilityId": "e776b6998f00a2d3", "scanner": "scanner-primary", "fingerprint": "067e35af53d0591a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3198586b01d48f4d", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/email-service.ts:4"}, "properties": {"repobilityId": "dc29e625f7e48cb7", "scanner": "scanner-primary", "fingerprint": "3198586b01d48f4d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-962c8008de5fda03", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/tenant-resolver.ts:1"}, "properties": {"repobilityId": "bb4915db64a2f171", "scanner": "scanner-primary", "fingerprint": "962c8008de5fda03", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-26e3b3aafec64cf3", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/seed.ts:1"}, "properties": {"repobilityId": "eddc5945f911b7fa", "scanner": "scanner-primary", "fingerprint": "26e3b3aafec64cf3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ab7267cc55137d6e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/razorpay-loader.ts:1"}, "properties": {"repobilityId": "c87ddd72afa33ef7", "scanner": "scanner-primary", "fingerprint": "ab7267cc55137d6e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ecb03c766a871129", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/notification-sounds.ts:1"}, "properties": {"repobilityId": "24251dc30e46fa16", "scanner": "scanner-primary", "fingerprint": "ecb03c766a871129", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fcadb48739758833", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/delivery-actions.ts:4"}, "properties": {"repobilityId": "3c12cc52ee66e5d9", "scanner": "scanner-primary", "fingerprint": "fcadb48739758833", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b8cee4e4208203fd", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/business-type-config.ts:6"}, "properties": {"repobilityId": "50dd70cb0606c0a9", "scanner": "scanner-primary", "fingerprint": "b8cee4e4208203fd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-05a5dee21f9395b9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/api-interceptor.ts:1"}, "properties": {"repobilityId": "6821798edaac7f26", "scanner": "scanner-primary", "fingerprint": "05a5dee21f9395b9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d0a6bee400afc78", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/api-interceptor.ts:41"}, "properties": {"repobilityId": "09e082cd16b36ac2", "scanner": "scanner-primary", "fingerprint": "0d0a6bee400afc78", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8bd72beee3f712d6", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/print-utils.ts:1"}, "properties": {"repobilityId": "3491828a0f2a2252", "scanner": "scanner-primary", "fingerprint": "8bd72beee3f712d6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bccfac130b20125f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/admin-fetch.ts:1"}, "properties": {"repobilityId": "085e81096409f9f7", "scanner": "scanner-primary", "fingerprint": "bccfac130b20125f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9c38f3bf8eb96aad", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/admin-fetch.ts:99"}, "properties": {"repobilityId": "b990b7dc41fecb73", "scanner": "scanner-primary", "fingerprint": "9c38f3bf8eb96aad", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-609a2fcacb99407f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/toast-utils.ts:1"}, "properties": {"repobilityId": "f1bc4e4b4e740d52", "scanner": "scanner-primary", "fingerprint": "609a2fcacb99407f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-248f31e37471fbfc", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/mobile-provision.ts:6"}, "properties": {"repobilityId": "c96ea291846bcbec", "scanner": "scanner-primary", "fingerprint": "248f31e37471fbfc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a0b37d02ff79e1b1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/mobile-provision.ts:185"}, "properties": {"repobilityId": "37711489b4162547", "scanner": "scanner-primary", "fingerprint": "a0b37d02ff79e1b1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-722a711c8d4dd29e", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/lib/platform-settings.ts:7"}, "properties": {"repobilityId": "039c2cb81cce6f8f", "scanner": "scanner-primary", "fingerprint": "722a711c8d4dd29e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-863b0717c14d00b6", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/media-service.ts:5"}, "properties": {"repobilityId": "da495ce3f164d589", "scanner": "scanner-primary", "fingerprint": "863b0717c14d00b6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9412635e1b76dc85", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/db-permissions.ts:1"}, "properties": {"repobilityId": "93b57eff7e769cdd", "scanner": "scanner-primary", "fingerprint": "9412635e1b76dc85", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8fcc882919f907dc", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/types.ts:6"}, "properties": {"repobilityId": "fb78f7f4910773b0", "scanner": "scanner-primary", "fingerprint": "8fcc882919f907dc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-11ef79ca2f46cc33", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/socket/events.ts:1"}, "properties": {"repobilityId": "3a755c7f18761eb3", "scanner": "scanner-primary", "fingerprint": "11ef79ca2f46cc33", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-61b13ae3c48ab922", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/core/delivery.ts:1"}, "properties": {"repobilityId": "879361174dfd5917", "scanner": "scanner-primary", "fingerprint": "61b13ae3c48ab922", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bd514c9200c1cf2a", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/core/notification.ts:1"}, "properties": {"repobilityId": "706f9d321d3c4a26", "scanner": "scanner-primary", "fingerprint": "bd514c9200c1cf2a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b39e48884249c12a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/core/subscription.ts:4"}, "properties": {"repobilityId": "35a8dcc05fca13e0", "scanner": "scanner-primary", "fingerprint": "b39e48884249c12a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bde83735aca6c2e4", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/core/index.ts:5"}, "properties": {"repobilityId": "e63317780300f056", "scanner": "scanner-primary", "fingerprint": "bde83735aca6c2e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e987b2425ee97f12", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/core/payment.ts:1"}, "properties": {"repobilityId": "37faf78fa521d8cd", "scanner": "scanner-primary", "fingerprint": "e987b2425ee97f12", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e2961316bfd1673f", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/core/rbac.ts:304"}, "properties": {"repobilityId": "81022191380d370b", "scanner": "scanner-primary", "fingerprint": "e2961316bfd1673f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8c11e2f1bdd4256", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/core/business.ts:1"}, "properties": {"repobilityId": "78f6d0aceda0868f", "scanner": "scanner-primary", "fingerprint": "c8c11e2f1bdd4256", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f74fd3e0dffb89a7", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/core/pos.ts:1"}, "properties": {"repobilityId": "d327b9ad19bb22c6", "scanner": "scanner-primary", "fingerprint": "f74fd3e0dffb89a7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6655aa3befaf9eae", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/core/platform.ts:7"}, "properties": {"repobilityId": "ccc8c73fda91e14d", "scanner": "scanner-primary", "fingerprint": "6655aa3befaf9eae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac839b5e041f2075", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/lib/core/types.ts:9"}, "properties": {"repobilityId": "30d9c54fae726203", "scanner": "scanner-primary", "fingerprint": "ac839b5e041f2075", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-785bb2f33caf4a82", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/core/order.ts:4"}, "properties": {"repobilityId": "79c11314b56d5575", "scanner": "scanner-primary", "fingerprint": "785bb2f33caf4a82", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e7ea5f988b4829ef", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/rbac/permission-definitions.ts:1"}, "properties": {"repobilityId": "7f4020401a59dd6c", "scanner": "scanner-primary", "fingerprint": "e7ea5f988b4829ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0424d1b80046b740", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/rbac/role-templates.ts:1"}, "properties": {"repobilityId": "d4f7c1dcd99b9a04", "scanner": "scanner-primary", "fingerprint": "0424d1b80046b740", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b0d343ac5c25d12f", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/hooks/use-tenant.ts:3"}, "properties": {"repobilityId": "3fbd75b1f247299f", "scanner": "scanner-primary", "fingerprint": "b0d343ac5c25d12f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1a0de320112d1201", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/use-tenant.ts:194"}, "properties": {"repobilityId": "2a62d3cc1ddb50db", "scanner": "scanner-primary", "fingerprint": "1a0de320112d1201", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a0fefb93188197d1", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/hooks/use-realtime.ts:3"}, "properties": {"repobilityId": "20f361199c7afd88", "scanner": "scanner-primary", "fingerprint": "a0fefb93188197d1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-936d5baf77f18cb0", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/hooks/use-business-context.ts:6"}, "properties": {"repobilityId": "2ec5a065389b4987", "scanner": "scanner-primary", "fingerprint": "936d5baf77f18cb0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0bd3c19bb91d5790", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/use-api.ts:240"}, "properties": {"repobilityId": "73d8cbeb47dcd998", "scanner": "scanner-primary", "fingerprint": "0bd3c19bb91d5790", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-142bf89a214fd569", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/hooks/use-razorpay.ts:3"}, "properties": {"repobilityId": "82eb223fe9f6b5b0", "scanner": "scanner-primary", "fingerprint": "142bf89a214fd569", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1858e8b593aedeb4", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/hooks/use-pwa-install.ts:5"}, "properties": {"repobilityId": "40262154e92d1ae2", "scanner": "scanner-primary", "fingerprint": "1858e8b593aedeb4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f8117c0c849eaeae", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/hooks/use-nearest-store.ts:36"}, "properties": {"repobilityId": "2180340f40fb02c5", "scanner": "scanner-primary", "fingerprint": "f8117c0c849eaeae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-25fdafa760229fae", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/hooks/use-toast-notifications.ts:3"}, "properties": {"repobilityId": "a6bee6ed8090a095", "scanner": "scanner-primary", "fingerprint": "25fdafa760229fae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c22e148ffcc629a", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/contracts/flutter/index.ts:1"}, "properties": {"repobilityId": "21f843d2de3caf09", "scanner": "scanner-primary", "fingerprint": "6c22e148ffcc629a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "878cfa6f35d9e665", "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": "df1f3487fc4df494", "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": "b2fdf5642e7c048f", "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": "6bbcd4fdf0b83cf0", "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": "b14b81fc6f86ac64", "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": "1682ed6082960135", "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": "17fc878ae278e815", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "0fba7dc1c9024a2b", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "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": "ab6aa0f48773aa90", "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": "2210087742ac9576", "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": "71bc7a287c9296bb", "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": "1842c2e036967ea9", "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": "eaa46b8061ff539b", "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": "83c0f50fd07883ff", "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": "bfd6551b9c9f2851", "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": "7858753da81c6eb7", "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": "45fed445c3ad102d", "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": "ada053b9f64590b2", "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": "6b93fd7845a06ef7", "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": "944dad0bcffb086f", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}