{"version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0.json", "runs": [{"tool": {"driver": {"name": "Repobility", "informationUri": "https://repobility.com", "rules": [{"id": "scanner-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2f2b78e94231cf0d", "name": "Stray `console.log` in TS/JS \u2014 apps/edge-functions/supabase/functions/send-notification/index.ts:153", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/edge-functions/supabase/functions/send-notification/index.ts:153"}, "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-90c4089ef1d0ad88", "name": "Stray `console.log` in TS/JS \u2014 apps/edge-functions/supabase/functions/paystack-webhook/index.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/edge-functions/supabase/functions/paystack-webhook/index.ts:65"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5e85fcad2db6057c", "name": "Stray `console.log` in TS/JS \u2014 apps/edge-functions/supabase/functions/compliance-complete/index.ts:163", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/edge-functions/supabase/functions/compliance-complete/index.ts:163"}, "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-5fb02e061d0748a5", "name": "Stray `console.log` in TS/JS \u2014 apps/edge-functions/supabase/functions/eft-invoice/index.ts:108", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/edge-functions/supabase/functions/eft-invoice/index.ts:108"}, "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-1010bec5d8a529ec", "name": "Stray `console.log` in TS/JS \u2014 apps/edge-functions/supabase/functions/_shared/encryption.ts:88", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/edge-functions/supabase/functions/_shared/encryption.ts:88"}, "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-415dce7795695ee6", "name": "TODO/FIXME marker in shipping code \u2014 apps/web/next.config.ts:23", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 apps/web/next.config.ts:23"}, "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-d5fd005fc233fa8e", "name": "TODO/FIXME marker in shipping code \u2014 apps/web/src/app/api/medium-voltage/study/route.ts:93", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 apps/web/src/app/api/medium-voltage/study/route.ts:93"}, "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-253fd488c69f754d", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/app/(admin)/inspections/templates/_builder/SectionEdit", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/app/(admin)/inspections/templates/_builder/SectionEditor.tsx:189"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-727a1171855ed3b5", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/app/(admin)/inspections/templates/_builder/SectionsLis", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/app/(admin)/inspections/templates/_builder/SectionsList.tsx:42"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2b7f65887aece679", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/app/(admin)/inspections/templates/_builder/field-edito", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/app/(admin)/inspections/templates/_builder/field-editors/RepeatingGroupEditor.tsx:206"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f2fcfc84fa036c2c", "name": "Stray `console.log` in TS/JS \u2014 apps/web/src/actions/cable-entities.actions.ts:1185", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/actions/cable-entities.actions.ts:1185"}, "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-deed94dd1b0cf933", "name": "TODO/FIXME marker in shipping code \u2014 apps/web/src/actions/tenant-documents.actions.ts:59", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 apps/web/src/actions/tenant-documents.actions.ts:59"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5f8904770718257b", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-template.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-template.ts:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a265151a19d4b66c", "name": "Stray `console.log` in TS/JS \u2014 scripts/import-templates-to-staging.ts:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-templates-to-staging.ts:70"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2b3d1d97d17416d1", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-demo.ts:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-demo.ts:89"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-046a06e536b16607", "name": "Stray `console.log` in TS/JS \u2014 scripts/reimport-templates-to-staging.ts:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reimport-templates-to-staging.ts:63"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-50af57e2af342697", "name": "Stray `console.log` in TS/JS \u2014 scripts/paystack/pilot-test.ts:115", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/paystack/pilot-test.ts:115"}, "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-2752b5a55f5beaae", "name": "Stray `console.log` in TS/JS \u2014 scripts/jbcc/extract-seed.ts:309", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/jbcc/extract-seed.ts:309"}, "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-fb3f482c5c583629", "name": "Stray `console.log` in TS/JS \u2014 packages/db/src/encryption.ts:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/db/src/encryption.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-f30b33566f54bc66", "name": "Stray `console.log` in TS/JS \u2014 packages/db/src/__tests__/rls-benchmark.test.ts:197", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/db/src/__tests__/rls-benchmark.test.ts:197"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b18ad390d2add126", "name": "Stray `console.log` in TS/JS \u2014 packages/db/src/__tests__/rls/rls-policy.test.ts:282", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/db/src/__tests__/rls/rls-policy.test.ts:282"}, "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-b7a2d0f0ca1ce6c4", "name": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/send-notification/index.ts:33", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/send-notification/index.ts:33"}, "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-52308d7643e1bcd6", "name": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/marketplace-payment/index.ts:77", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/marketplace-payment/index.ts:77"}, "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-4ea8c17177c4d68c", "name": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/paystack-webhook/index.ts:431", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/paystack-webhook/index.ts:431"}, "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-464ce4be69bc9e9a", "name": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/render-inspection-pdf/index.ts:37", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/render-inspection-pdf/index.ts:37"}, "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-3c51883c2501d19f", "name": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/compliance-complete/index.ts:60", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/compliance-complete/index.ts:60"}, "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-6bac4f797ca45fd0", "name": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/cloud-sync-project/index.ts:92", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/cloud-sync-project/index.ts:92"}, "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-d23282aefd407595", "name": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/calculate-health-scores/index.ts:163", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/calculate-health-scores/index.ts:163"}, "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-ef85fd09cbbb9645", "name": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/generate-report/index.ts:18", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/generate-report/index.ts:18"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-38e5daa641d45ff7", "name": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/send-email/index.ts:68", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/send-email/index.ts:68"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c3741b090d3c8d5e", "name": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/eft-invoice/index.ts:34", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/eft-invoice/index.ts:34"}, "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-6834608ae7362eb8", "name": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/validate-inspection/index.ts:61", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/validate-inspection/index.ts:61"}, "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-b516b802916be759", "name": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/_shared/email-sequence.ts:202", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/_shared/email-sequence.ts:202"}, "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-e3ee6cd053239e8d", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/superpowers/mockups/2026-06-08-generator-cost-recovery/index.html", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/superpowers/mockups/2026-06-08-generator-cost-recovery/index.html:1017"}, "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-d1b2306ed360c90c", "name": "Possible secret in scripts/seed-demo.ts", "shortDescription": {"text": "Possible secret in scripts/seed-demo.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-c61b2606fb440718", "name": "Insecure pattern 'node_child_process' in scripts/jbcc/extract-seed.ts:9", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/jbcc/extract-seed.ts:9"}, "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-f150fcfec97eda3c", "name": "Insecure pattern 'direct_innerhtml_assignment' in graphify-out/graph.html:122", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in graphify-out/graph.html:122"}, "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-3656a839b8d6a2c3", "name": "Insecure pattern 'node_child_process' in packages/shared/src/lib/jbcc/placeholder-fill.test.ts:4", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/shared/src/lib/jbcc/placeholder-fill.test.ts:4"}, "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-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "codecov/codecov-action@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fb021a1008ee0fb4", "name": "Very large file: apps/web/src/app/(admin)/projects/[id]/floor-plans/[planId]/MarkupCanvas.tsx (1721 lines)", "shortDescription": {"text": "Very large file: apps/web/src/app/(admin)/projects/[id]/floor-plans/[planId]/MarkupCanvas.tsx (1721 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-a45fea9b956b261a", "name": "Very large file: apps/web/src/app/(admin)/projects/[id]/cables/[revisionId]/CableScheduleGrid.tsx (1448 lines)", "shortDescription": {"text": "Very large file: apps/web/src/app/(admin)/projects/[id]/cables/[revisionId]/CableScheduleGrid.tsx (1448 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-707f6d8f7d5dcbf1", "name": "Very large file: apps/web/src/actions/cable-entities.actions.ts (1633 lines)", "shortDescription": {"text": "Very large file: apps/web/src/actions/cable-entities.actions.ts (1633 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-32ae462dd1386b85", "name": "Very large file: packages/db/src/types.ts (4643 lines)", "shortDescription": {"text": "Very large file: packages/db/src/types.ts (4643 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea3b5e389d8c9c0f", "name": "Low test-to-source ratio", "shortDescription": {"text": "Low test-to-source ratio"}, "fullDescription": {"text": "185 tests / 836 src (ratio 0.22)."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-faccb9061e9b52a0", "name": "No README detected", "shortDescription": {"text": "No README detected"}, "fullDescription": {"text": "No README file was found. Generated repos without README context are hard to operate, validate, or safely hand off."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d0c2205560692580", "name": "Node manifest has dependencies but no lockfile: apps/mobile/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/mobile/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-4a9eb7dc7c6e3880", "name": "Node manifest has dependencies but no lockfile: apps/web/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/web/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2699d5f16ae11282", "name": "Node manifest has dependencies but no lockfile: packages/shared/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/shared/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-7b16ae2bd0fca524", "name": "Node manifest has dependencies but no lockfile: packages/db/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/db/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 128 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 313 placeholder/mock markers across 133 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, operator-readme, 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": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, operator-readme, 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-0768800dc76ebd5d", "name": "Agent instruction contains unpinned remote install: .claude-handoff.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: .claude-handoff.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-ac8564ae12d191fd", "name": "Agent authority lacks a verifier contract: .claude/skills/speckit-git-commit/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/speckit-git-commit/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-68dfac0dc0956dd3", "name": "Agent authority lacks a verifier contract: .claude/skills/speckit-git-remote/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/speckit-git-remote/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-78ac78bc4ff3cf46", "name": "Agent authority lacks a verifier contract: .claude/skills/speckit-taskstoissues/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/speckit-taskstoissues/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-8d996699d6c06141", "name": "Agent authority lacks a verifier contract: .claude/skills/speckit-git-initialize/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/speckit-git-initialize/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-8f6d508c9d48fa9e", "name": "Agent authority lacks a verifier contract: .claude/skills/speckit-git-validate/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/speckit-git-validate/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-79143aab6aa56ba9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/send-notification/index.ts:131", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/send-notification/index.ts:131"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-99361712dc727f67", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/marketplace-payment/index.ts:55", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/marketplace-payment/index.ts: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-3e2bf0a734eb2490", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/compliance-complete/index.ts:196", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/compliance-complete/index.ts:196"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0b26ff41242a5e07", "name": "Commented-code block (6 lines) in apps/edge-functions/supabase/functions/cloud-sync-project/index.ts:50", "shortDescription": {"text": "Commented-code block (6 lines) in apps/edge-functions/supabase/functions/cloud-sync-project/index.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-bed015440b90ac09", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/send-email/index.ts:29", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/send-email/index.ts:29"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9c681b9dd0e96887", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/eft-invoice/index.ts:154", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/eft-invoice/index.ts: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-1999079bc5ff6824", "name": "Commented-code block (5 lines) in apps/edge-functions/supabase/functions/validate-inspection/rules.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in apps/edge-functions/supabase/functions/validate-inspection/rules.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-d0b299308d71a617", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/_shared/email-sequence.ts:101", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/_shared/email-sequence.ts:101"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-777f386d20fe4091", "name": "Legacy-named symbol `create_folder_v2` in apps/edge-functions/supabase/functions/_shared/cloud-storage/dropbox.provider.", "shortDescription": {"text": "Legacy-named symbol `create_folder_v2` in apps/edge-functions/supabase/functions/_shared/cloud-storage/dropbox.provider.ts:180"}, "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-ac628df499755493", "name": "Commented-code block (9 lines) in apps/edge-functions/supabase/functions/_shared/cloud-storage/dropbox.provider.ts:278", "shortDescription": {"text": "Commented-code block (9 lines) in apps/edge-functions/supabase/functions/_shared/cloud-storage/dropbox.provider.ts:278"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-37935aa9addfd45b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/_shared/cloud-storage/dropbox.provi", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/_shared/cloud-storage/dropbox.provider.ts: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-12d29567c5b3c318", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/_shared/cloud-storage/google-drive.", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/_shared/cloud-storage/google-drive.provider.ts:122"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eef1920ecef125e2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/_shared/cloud-storage/provider-util", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/_shared/cloud-storage/provider-utils.ts:83"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-70dc37d6d8c90337", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/_shared/cloud-storage/onedrive.prov", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/_shared/cloud-storage/onedrive.provider.ts:107"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-268a187cb1a89339", "name": "Commented-code block (12 lines) in apps/edge-functions/supabase/functions/_shared/validation-rules/rmu.ts:4", "shortDescription": {"text": "Commented-code block (12 lines) in apps/edge-functions/supabase/functions/_shared/validation-rules/rmu.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-8374270fe9207a17", "name": "Commented-code block (8 lines) in apps/edge-functions/supabase/functions/_shared/validation-rules/generator-fat.ts:7", "shortDescription": {"text": "Commented-code block (8 lines) in apps/edge-functions/supabase/functions/_shared/validation-rules/generator-fat.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-0653d8529601a252", "name": "Commented-code block (8 lines) in apps/edge-functions/supabase/functions/_shared/validation-rules/mini-sub.ts:6", "shortDescription": {"text": "Commented-code block (8 lines) in apps/edge-functions/supabase/functions/_shared/validation-rules/mini-sub.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-fb109b0d7334b1b7", "name": "Commented-code block (7 lines) in apps/edge-functions/supabase/functions/_shared/validation-rules/solar-pv.ts:9", "shortDescription": {"text": "Commented-code block (7 lines) in apps/edge-functions/supabase/functions/_shared/validation-rules/solar-pv.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-714b53792737b75a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/mobile/app/snags/[id]/index.tsx:76", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/mobile/app/snags/[id]/index.tsx:76"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-39b91a35fea61ad2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/mobile/src/components/attachments/commit.ts:86", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/mobile/src/components/attachments/commit.ts:86"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d089b1ba7784572", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/mobile/src/lib/diary-attachments.ts:21", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/mobile/src/lib/diary-attachments.ts:21"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b1f9134120794cf5", "name": "Commented-code block (8 lines) in apps/mobile/src/inspections/upload-worker.ts:7", "shortDescription": {"text": "Commented-code block (8 lines) in apps/mobile/src/inspections/upload-worker.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-cafe6398ffd34885", "name": "Commented-code block (5 lines) in apps/mobile/src/inspections/attachment-queue.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in apps/mobile/src/inspections/attachment-queue.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-e53e1a41722fdb19", "name": "Commented-code block (7 lines) in apps/mobile/src/inspections/FieldRenderers.tsx:63", "shortDescription": {"text": "Commented-code block (7 lines) in apps/mobile/src/inspections/FieldRenderers.tsx:63"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fc589672a0f526f6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/mobile/src/inspections/FieldRenderers.tsx:696", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/mobile/src/inspections/FieldRenderers.tsx:696"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a0674b1f44c74532", "name": "Commented-code block (11 lines) in apps/web/next.config.ts:10", "shortDescription": {"text": "Commented-code block (11 lines) in apps/web/next.config.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-2bbd9dffc8302efa", "name": "Commented-code block (7 lines) in apps/web/src/middleware.ts:107", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/src/middleware.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-977cc1d65f5544b4", "name": "Commented-code block (5 lines) in apps/web/src/components/providers/SentryBoot.tsx:9", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/components/providers/SentryBoot.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-fe6f5f89ebdca868", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/notifications/dispatch/route.ts:132", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/notifications/dispatch/route.ts: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-eb101188b376a1b9", "name": "Commented-code block (5 lines) in apps/web/src/app/api/paystack/webhook/route.ts:110", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/app/api/paystack/webhook/route.ts:110"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6c2f8a672dd7099b", "name": "Commented-code block (7 lines) in apps/web/src/app/api/paystack/callback/route.ts:30", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/src/app/api/paystack/callback/route.ts:30"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-194adad561ea5c3b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/paystack/callback/route.ts:15", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/paystack/callback/route.ts:15"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3a136ea5103c06e8", "name": "Commented-code block (8 lines) in apps/web/src/app/api/paystack/mv-subscribe/route.ts:9", "shortDescription": {"text": "Commented-code block (8 lines) in apps/web/src/app/api/paystack/mv-subscribe/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-d334c54114c43076", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/paystack/mv-subscribe/route.ts:83", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/paystack/mv-subscribe/route.ts:83"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1d8bf26542d701ad", "name": "Commented-code block (5 lines) in apps/web/src/app/api/paystack/feature-seat/route.ts:8", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/app/api/paystack/feature-seat/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-678ec1f38b5c073c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/paystack/feature-seat/route.ts:102", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/paystack/feature-seat/route.ts:102"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dd57b0196e488e9e", "name": "Commented-code block (5 lines) in apps/web/src/app/api/paystack/feature-unlock/route.ts:8", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/app/api/paystack/feature-unlock/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-8e71554132516814", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/paystack/feature-unlock/route.ts:83", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/paystack/feature-unlock/route.ts:83"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-927bfbcee3d7cb24", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/paystack/checkout/route.ts:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/paystack/checkout/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-b2002a9d75e1112c", "name": "Commented-code block (7 lines) in apps/web/src/app/api/cable-schedule/parse/route.ts:95", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/src/app/api/cable-schedule/parse/route.ts:95"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-42cfbb5dc0f0a7f3", "name": "Commented-code block (5 lines) in apps/web/src/app/api/cable-schedule/export/csv/route.ts:30", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/app/api/cable-schedule/export/csv/route.ts:30"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6f0958cec89f9081", "name": "Commented-code block (5 lines) in apps/web/src/app/api/medium-voltage/study/route.ts:93", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/app/api/medium-voltage/study/route.ts:93"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7c0dde4abf46d299", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/inspections/upload-signature/route.ts:65", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/inspections/upload-signature/route.ts:65"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-11dba4e0382024f2", "name": "Commented-code block (5 lines) in apps/web/src/app/api/inspections/upload-photo/route.ts:54", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/app/api/inspections/upload-photo/route.ts:54"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d89bd446a0490881", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/inspections/upload-photo/route.ts:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/inspections/upload-photo/route.ts:66"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-de0f363f11dc83de", "name": "Commented-code block (5 lines) in apps/web/src/app/api/inspections/delete-photo/route.ts:89", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/app/api/inspections/delete-photo/route.ts:89"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d5572adbf15fa1b5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/inspections/delete-photo/route.ts:69", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/inspections/delete-photo/route.ts:69"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b373f1e9391f2458", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/inspections/upload-file/route.ts:65", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/inspections/upload-file/route.ts:65"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fa8016bb4a7f98e5", "name": "Commented-code block (6 lines) in apps/web/src/app/api/tenant-schedule/parse/route.ts:93", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/app/api/tenant-schedule/parse/route.ts:93"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7b7de1605342fe87", "name": "Commented-code block (7 lines) in apps/web/src/app/api/tenant-schedule/commit/route.ts:339", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/src/app/api/tenant-schedule/commit/route.ts:339"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-39cf1c30eaa6b082", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/tenant-schedule/commit/route.ts:83", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/tenant-schedule/commit/route.ts:83"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-64c9b89e28bd5c42", "name": "Commented-code block (7 lines) in apps/web/src/app/(admin)/settings/integrations/page.tsx:31", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/src/app/(admin)/settings/integrations/page.tsx:31"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-18b421caa2449d4c", "name": "Commented-code block (8 lines) in apps/web/src/app/(admin)/projects/[id]/handover/documents/HandoverCloudPicker.tsx:82", "shortDescription": {"text": "Commented-code block (8 lines) in apps/web/src/app/(admin)/projects/[id]/handover/documents/HandoverCloudPicker.tsx:82"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a01fec14bd05f953", "name": "Commented-code block (7 lines) in apps/web/src/app/(admin)/projects/[id]/floor-plans/[planId]/MarkupCanvas.tsx:656", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/src/app/(admin)/projects/[id]/floor-plans/[planId]/MarkupCanvas.tsx:656"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ce16d2e6c58b18eb", "name": "Commented-code block (5 lines) in apps/web/src/app/(admin)/projects/[id]/equipment-materials/page.tsx:230", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/app/(admin)/projects/[id]/equipment-materials/page.tsx:230"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3256b42e4638d96c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/(admin)/projects/[id]/equipment-materials/_components/Uni", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/(admin)/projects/[id]/equipment-materials/_components/UnifiedDocSlot.tsx:57"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9352bfb8dc2a8e81", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/(admin)/projects/[id]/equipment-materials/_components/Uni", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/(admin)/projects/[id]/equipment-materials/_components/UnifiedShopDrawingList.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-fffbbc2fac5e03d2", "name": "Commented-code block (5 lines) in apps/web/src/app/(admin)/projects/[id]/medium-voltage/[revisionId]/mv-unlock/page.tsx:", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/app/(admin)/projects/[id]/medium-voltage/[revisionId]/mv-unlock/page.tsx:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-28ad53938272c69f", "name": "Commented-code block (6 lines) in apps/web/src/app/(admin)/projects/[id]/inspections/[inspectionId]/page.tsx:46", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/app/(admin)/projects/[id]/inspections/[inspectionId]/page.tsx:46"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d974a6a06950240c", "name": "Commented-code block (5 lines) in apps/web/src/app/(admin)/projects/[id]/inspections/[inspectionId]/FieldRenderer.tsx:25", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/app/(admin)/projects/[id]/inspections/[inspectionId]/FieldRenderer.tsx:25"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8df86f4580a57f3b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/(admin)/projects/[id]/inspections/[inspectionId]/Signatur", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/(admin)/projects/[id]/inspections/[inspectionId]/SignatureModal.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-287632dbbb57b10b", "name": "Commented-code block (9 lines) in apps/web/src/app/(admin)/projects/[id]/inspections/[inspectionId]/fields/RepeatingGrou", "shortDescription": {"text": "Commented-code block (9 lines) in apps/web/src/app/(admin)/projects/[id]/inspections/[inspectionId]/fields/RepeatingGroupField.tsx:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ba4bd75bca254d57", "name": "Commented-code block (6 lines) in apps/web/src/app/(admin)/projects/[id]/inspections/[inspectionId]/fields/FileField.tes", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/app/(admin)/projects/[id]/inspections/[inspectionId]/fields/FileField.test.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-5243aa85b16242d2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/(admin)/projects/[id]/inspections/[inspectionId]/fields/u", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/(admin)/projects/[id]/inspections/[inspectionId]/fields/useFieldPhotos.ts: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-f66a300b38d58e6e", "name": "Commented-code block (5 lines) in apps/web/src/app/(admin)/projects/[id]/inspections/[inspectionId]/fields/FileField.tsx", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/app/(admin)/projects/[id]/inspections/[inspectionId]/fields/FileField.tsx:23"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cc80eeaace9c69d1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/(admin)/projects/[id]/inspections/[inspectionId]/fields/F", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/(admin)/projects/[id]/inspections/[inspectionId]/fields/FileField.tsx:66"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-352248ea56ea33a0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/(admin)/projects/[id]/tenant-schedule/_components/Documen", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/(admin)/projects/[id]/tenant-schedule/_components/DocumentRevisionDrawer.tsx:126"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-808fa3050ba3be3f", "name": "Commented-code block (5 lines) in apps/web/src/app/(admin)/projects/[id]/tenant-schedule/_components/TenantDocumentList.", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/app/(admin)/projects/[id]/tenant-schedule/_components/TenantDocumentList.tsx:47"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-27e3d45e6d280551", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/(admin)/projects/[id]/tenant-schedule/_components/TenantD", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/(admin)/projects/[id]/tenant-schedule/_components/TenantDocumentList.tsx:181"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-46ee83db7a493afc", "name": "Commented-code block (12 lines) in apps/web/src/app/(admin)/projects/[id]/cables/[revisionId]/CableFormModal.tsx:120", "shortDescription": {"text": "Commented-code block (12 lines) in apps/web/src/app/(admin)/projects/[id]/cables/[revisionId]/CableFormModal.tsx:120"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-412eae44aa4c841f", "name": "Commented-code block (5 lines) in apps/web/src/app/(admin)/projects/[id]/cables/[revisionId]/CableScheduleGrid.tsx:890", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/app/(admin)/projects/[id]/cables/[revisionId]/CableScheduleGrid.tsx:890"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-94e6477a02d711a3", "name": "Commented-code block (6 lines) in apps/web/src/app/(admin)/projects/[id]/cables/[revisionId]/page.tsx:295", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/app/(admin)/projects/[id]/cables/[revisionId]/page.tsx:295"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-09ed1e24ec25a798", "name": "Commented-code block (8 lines) in apps/web/src/app/(admin)/projects/[id]/cables/[revisionId]/ExportMenu.tsx:221", "shortDescription": {"text": "Commented-code block (8 lines) in apps/web/src/app/(admin)/projects/[id]/cables/[revisionId]/ExportMenu.tsx:221"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-81b1329f40917f5f", "name": "Commented-code block (6 lines) in apps/web/src/app/(admin)/projects/[id]/cables/[revisionId]/cost/page.tsx:19", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/app/(admin)/projects/[id]/cables/[revisionId]/cost/page.tsx:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cf6d15f052585ea8", "name": "Commented-code block (6 lines) in apps/web/src/app/(admin)/projects/[id]/cables/[revisionId]/tags/page.tsx:163", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/app/(admin)/projects/[id]/cables/[revisionId]/tags/page.tsx:163"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-362ee2a73f193b80", "name": "Commented-code block (8 lines) in apps/web/src/app/(admin)/projects/[id]/generator-cost-recovery/SettingsForm.test.tsx:4", "shortDescription": {"text": "Commented-code block (8 lines) in apps/web/src/app/(admin)/projects/[id]/generator-cost-recovery/SettingsForm.test.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-aa3bc65042c8f835", "name": "Commented-code block (6 lines) in apps/web/src/app/(admin)/inspections/templates/_builder/field-editors/RepeatingGroupEd", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/app/(admin)/inspections/templates/_builder/field-editors/RepeatingGroupEditor.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-9b3a2ac066b28213", "name": "Commented-code block (6 lines) in apps/web/src/app/(auth)/verify-email/page.tsx:8", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/app/(auth)/verify-email/page.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-7cd06059abeadaa0", "name": "Commented-code block (5 lines) in apps/web/src/app/(scan)/site/tag/[text]/page.tsx:44", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/app/(scan)/site/tag/[text]/page.tsx:44"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9dbbb1c466f3c00a", "name": "Commented-code block (5 lines) in apps/web/src/app/(public)/layout.tsx:26", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/app/(public)/layout.tsx:26"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-56a6846a47d6e662", "name": "Commented-code block (5 lines) in apps/web/src/app/(public)/legal/acceptable-use-policy/page.tsx:10", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/app/(public)/legal/acceptable-use-policy/page.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-a579f7be4539934f", "name": "Commented-code block (5 lines) in apps/web/src/lib/boq/parse-boq-xlsx.ts:413", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/lib/boq/parse-boq-xlsx.ts:413"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-53f7fc28a409fd48", "name": "Commented-code block (5 lines) in apps/web/src/lib/boq/parse-boq-xlsx.test.ts:8", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/lib/boq/parse-boq-xlsx.test.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c382a596f0a2f019", "name": "Commented-code block (6 lines) in apps/web/src/lib/boq/parse-sheet.ts:137", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/lib/boq/parse-sheet.ts:137"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8a657b6b5552b8b8", "name": "Commented-code block (5 lines) in apps/web/src/lib/cable-schedule/export-csv.ts:60", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/lib/cable-schedule/export-csv.ts:60"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c5a41ee16a6a4b57", "name": "Commented-code block (11 lines) in apps/web/src/lib/cable-schedule/export-payload.ts:280", "shortDescription": {"text": "Commented-code block (11 lines) in apps/web/src/lib/cable-schedule/export-payload.ts:280"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3a2d65f39bfc95df", "name": "Commented-code block (10 lines) in apps/web/src/lib/cable-schedule/export-excel.ts:107", "shortDescription": {"text": "Commented-code block (10 lines) in apps/web/src/lib/cable-schedule/export-excel.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-aaf998ee699f5058", "name": "Commented-code block (5 lines) in apps/web/src/lib/cable-schedule/excel-importer.ts:385", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/lib/cable-schedule/excel-importer.ts:385"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-17d32a13c2fb32a7", "name": "Commented-code block (7 lines) in apps/web/src/lib/cable-schedule/export-pdf.ts:734", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/src/lib/cable-schedule/export-pdf.ts:734"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c68e6392f3d9a461", "name": "Commented-code block (6 lines) in apps/web/src/lib/supabase/server.ts:6", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/lib/supabase/server.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-e195dd41fb3d2821", "name": "Commented-code block (7 lines) in apps/web/src/lib/reports/interior.tsx:6", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/src/lib/reports/interior.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-f2fb9cd8dca67b82", "name": "Commented-code block (5 lines) in apps/web/src/lib/reports/inspection-report-data.test.ts:574", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/lib/reports/inspection-report-data.test.ts:574"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-95910d15df27db64", "name": "Commented-code block (6 lines) in apps/web/src/lib/reports/valuation-report-data.test.ts:88", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/lib/reports/valuation-report-data.test.ts:88"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a725f7c0e0f6b76e", "name": "Commented-code block (6 lines) in apps/web/src/lib/reports/inspection-report-data.ts:120", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/lib/reports/inspection-report-data.ts:120"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b84585f0d7419293", "name": "Commented-code block (5 lines) in apps/web/src/services/cloud-storage.server.ts:145", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/services/cloud-storage.server.ts:145"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c75ebe0707a7a996", "name": "Commented-code block (5 lines) in apps/web/src/services/cloud-storage-folder.server.ts:86", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/services/cloud-storage-folder.server.ts:86"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7d3165e617bdf6d4", "name": "Commented-code block (5 lines) in apps/web/src/actions/cable-cost.actions.ts:199", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/actions/cable-cost.actions.ts:199"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-327473a4eba92b87", "name": "Commented-code block (6 lines) in apps/web/src/actions/inspections-certify.actions.ts:140", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/actions/inspections-certify.actions.ts:140"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2288bccf694d800d", "name": "Commented-code block (6 lines) in apps/web/src/actions/handover.actions.ts:434", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/actions/handover.actions.ts:434"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-715ff0ce3dc86dd2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/node-order-document.actions.ts:45", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/node-order-document.actions.ts:45"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7745c155137147d4", "name": "Commented-code block (5 lines) in apps/web/src/actions/snag-visit.actions.test.ts:477", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/actions/snag-visit.actions.test.ts:477"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3b2afe1920fdbde7", "name": "Commented-code block (7 lines) in apps/web/src/actions/equipment.actions.ts:195", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/src/actions/equipment.actions.ts:195"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4b7f7f40cca43eab", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/equipment.actions.ts:46", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/equipment.actions.ts:46"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d4342d648b3cd26d", "name": "Commented-code block (7 lines) in apps/web/src/actions/project-members.actions.ts:96", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/src/actions/project-members.actions.ts:96"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e01175288bc6635f", "name": "Commented-code block (5 lines) in apps/web/src/actions/sub-organisations.actions.test.ts:168", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/actions/sub-organisations.actions.test.ts:168"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2e1e3878decdaac7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/tenant-board.actions.ts:35", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/tenant-board.actions.ts:35"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e073fdefd7bc27ed", "name": "Commented-code block (7 lines) in apps/web/src/actions/cable-revision.actions.ts:110", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/src/actions/cable-revision.actions.ts:110"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a25542aa617aa26c", "name": "Commented-code block (6 lines) in apps/web/src/actions/valuation.actions.ts:509", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/actions/valuation.actions.ts:509"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c3e4f30552487c25", "name": "Commented-code block (6 lines) in apps/web/src/actions/cloud-storage.actions.ts:33", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/actions/cloud-storage.actions.ts:33"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-92a08db857a5a28e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/cloud-storage.actions.ts:209", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/cloud-storage.actions.ts:209"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9a9c7b28cc4e7b88", "name": "Commented-code block (6 lines) in apps/web/src/actions/board-short-code.actions.ts:67", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/actions/board-short-code.actions.ts:67"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-12706dca60ac13b1", "name": "Commented-code block (6 lines) in apps/web/src/actions/inspections.actions.ts:710", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/actions/inspections.actions.ts:710"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5487104e3247a88c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/inspections.actions.ts:722", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/inspections.actions.ts:722"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5f50bb9c1f033285", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/snag.actions.ts:133", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/snag.actions.ts:133"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e402dde7d089b888", "name": "Commented-code block (5 lines) in apps/web/src/actions/mv-protection.actions.ts:155", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/actions/mv-protection.actions.ts:155"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f1f18c155ce0680a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/node-order.actions.ts:51", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/node-order.actions.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-79e01951cf2f06c0", "name": "Commented-code block (6 lines) in apps/web/src/actions/variation.actions.ts:254", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/actions/variation.actions.ts:254"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c10328d9d03157fd", "name": "Commented-code block (7 lines) in apps/web/src/actions/cable-entities.actions.ts:121", "shortDescription": {"text": "Commented-code block (7 lines) in apps/web/src/actions/cable-entities.actions.ts:121"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b27f59c61e8061d4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/supplier.actions.ts:353", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/supplier.actions.ts:353"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8b0034de029c699d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/tenant-documents.actions.ts:80", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/tenant-documents.actions.ts:80"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-665f45b83621844e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/node-order-shop-drawing.actions.ts:57", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/node-order-shop-drawing.actions.ts:57"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5df1b2a1cd61f552", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/tenant-bo.actions.ts:62", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/tenant-bo.actions.ts:62"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea9038af3e8b961a", "name": "Commented-code block (5 lines) in apps/web/src/actions/snag-visit.actions.ts:476", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/actions/snag-visit.actions.ts:476"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-20ec2887f4553cec", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/snag-visit.actions.ts:329", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/snag-visit.actions.ts:329"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-50a36b2713211b78", "name": "Commented-code block (5 lines) in apps/web/src/actions/sub-org-members.actions.test.ts:68", "shortDescription": {"text": "Commented-code block (5 lines) in apps/web/src/actions/sub-org-members.actions.test.ts:68"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c2c5f0cd31aaf87e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/tenant-scope.actions.ts:49", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/tenant-scope.actions.ts:49"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eda2ac4526408f89", "name": "Commented-code block (6 lines) in apps/web/src/actions/tenant-delete.actions.ts:428", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/actions/tenant-delete.actions.ts:428"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-64bcb90fb3e3964a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/tenant-delete.actions.ts:83", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/tenant-delete.actions.ts:83"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-14993d09b724b65c", "name": "Commented-code block (6 lines) in apps/web/src/actions/cable-length.actions.ts:164", "shortDescription": {"text": "Commented-code block (6 lines) in apps/web/src/actions/cable-length.actions.ts:164"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3055600745c63835", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/import-templates-to-staging.ts:29", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/import-templates-to-staging.ts:29"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-87a7e123ecbaf056", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/reimport-templates-to-staging.ts:37", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/reimport-templates-to-staging.ts:37"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b2caeebe3aa5670e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/reimport-inline-photo-cleanup.cjs:46", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/reimport-inline-photo-cleanup.cjs:46"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-af13b9c77b86ac0f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/paystack/pilot-test.ts:120", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/paystack/pilot-test.ts:120"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-951f93c6f72c1513", "name": "Commented-code block (7 lines) in packages/shared/src/index.ts:19", "shortDescription": {"text": "Commented-code block (7 lines) in packages/shared/src/index.ts:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-827cf161bc3f6fc5", "name": "Commented-code block (5 lines) in packages/shared/src/__tests__/cloud-storage/dropbox.test.ts:98", "shortDescription": {"text": "Commented-code block (5 lines) in packages/shared/src/__tests__/cloud-storage/dropbox.test.ts:98"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5a6f8596323a5e27", "name": "Commented-code block (5 lines) in packages/shared/src/structure/node.service.test.ts:12", "shortDescription": {"text": "Commented-code block (5 lines) in packages/shared/src/structure/node.service.test.ts:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-78afa02e6bd0ff19", "name": "Commented-code block (6 lines) in packages/shared/src/structure/tenant-import-parser.ts:320", "shortDescription": {"text": "Commented-code block (6 lines) in packages/shared/src/structure/tenant-import-parser.ts:320"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-63ef4aca4c437f89", "name": "Commented-code block (5 lines) in packages/shared/src/inspections/engine.test.ts:214", "shortDescription": {"text": "Commented-code block (5 lines) in packages/shared/src/inspections/engine.test.ts:214"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-363b60e248bb8ac5", "name": "Commented-code block (7 lines) in packages/shared/src/inspections/engine.ts:182", "shortDescription": {"text": "Commented-code block (7 lines) in packages/shared/src/inspections/engine.ts:182"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7edf359c57440849", "name": "Commented-code block (6 lines) in packages/shared/src/inspections/validation-rules/mini-sub.test.ts:114", "shortDescription": {"text": "Commented-code block (6 lines) in packages/shared/src/inspections/validation-rules/mini-sub.test.ts:114"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e8c0b3d41f21c9b4", "name": "Commented-code block (5 lines) in packages/shared/src/inspections/validation-rules/rmu.test.ts:32", "shortDescription": {"text": "Commented-code block (5 lines) in packages/shared/src/inspections/validation-rules/rmu.test.ts:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9acbd300734d13da", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/shared/src/services/storage.service.ts:32", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/shared/src/services/storage.service.ts:32"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3eb6d3cd457af9eb", "name": "Commented-code block (6 lines) in packages/shared/src/services/variation.service.client.test.ts:297", "shortDescription": {"text": "Commented-code block (6 lines) in packages/shared/src/services/variation.service.client.test.ts:297"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3213acaa58b12395", "name": "Commented-code block (7 lines) in packages/shared/src/services/_project-settings-mappers.ts:7", "shortDescription": {"text": "Commented-code block (7 lines) in packages/shared/src/services/_project-settings-mappers.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-2bf4aef2a72c1af8", "name": "Commented-code block (8 lines) in packages/shared/src/services/sans-lookup.service.ts:245", "shortDescription": {"text": "Commented-code block (8 lines) in packages/shared/src/services/sans-lookup.service.ts:245"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1e1530d20def9685", "name": "Commented-code block (5 lines) in packages/shared/src/services/cable-structure.service.ts:111", "shortDescription": {"text": "Commented-code block (5 lines) in packages/shared/src/services/cable-structure.service.ts:111"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-734a209e0d5f1497", "name": "Commented-code block (5 lines) in packages/shared/src/services/snag-visit-buckets.ts:10", "shortDescription": {"text": "Commented-code block (5 lines) in packages/shared/src/services/snag-visit-buckets.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-fd169c5886be5567", "name": "Legacy-named symbol `daysOld` in packages/shared/src/services/sla.service.ts:81", "shortDescription": {"text": "Legacy-named symbol `daysOld` in packages/shared/src/services/sla.service.ts:81"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9881d0b691b1570b", "name": "Commented-code block (9 lines) in packages/shared/src/services/billing.service.ts:5", "shortDescription": {"text": "Commented-code block (9 lines) in packages/shared/src/services/billing.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-1daf8ccf7778a8f3", "name": "Commented-code block (6 lines) in packages/shared/src/services/cable-structure.service.test.ts:67", "shortDescription": {"text": "Commented-code block (6 lines) in packages/shared/src/services/cable-structure.service.test.ts:67"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9dca0775bf6103f5", "name": "Legacy-named symbol `create_folder_v2` in packages/shared/src/services/cloud-storage/dropbox.provider.ts:32", "shortDescription": {"text": "Legacy-named symbol `create_folder_v2` in packages/shared/src/services/cloud-storage/dropbox.provider.ts:32"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4505b972b8c48d25", "name": "Commented-code block (7 lines) in packages/shared/src/services/cloud-storage/dropbox.provider.ts:31", "shortDescription": {"text": "Commented-code block (7 lines) in packages/shared/src/services/cloud-storage/dropbox.provider.ts:31"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7caded7378cdb53e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/shared/src/services/cloud-storage/dropbox.provider.ts:126", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/shared/src/services/cloud-storage/dropbox.provider.ts:126"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-95c4be6fdd000f48", "name": "Commented-code block (6 lines) in packages/shared/src/services/cloud-storage/google-drive.provider.ts:22", "shortDescription": {"text": "Commented-code block (6 lines) in packages/shared/src/services/cloud-storage/google-drive.provider.ts:22"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c5b723568c4452b5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/shared/src/services/cloud-storage/google-drive.provider.ts:123", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/shared/src/services/cloud-storage/google-drive.provider.ts: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-bebb1410caadc874", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/shared/src/services/cloud-storage/provider-utils.ts:91", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/shared/src/services/cloud-storage/provider-utils.ts:91"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3b1ac14138e3022c", "name": "Commented-code block (5 lines) in packages/shared/src/services/cloud-storage/onedrive.provider.ts:23", "shortDescription": {"text": "Commented-code block (5 lines) in packages/shared/src/services/cloud-storage/onedrive.provider.ts:23"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-329a7ede1e1271a8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/shared/src/services/cloud-storage/onedrive.provider.ts:107", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/shared/src/services/cloud-storage/onedrive.provider.ts:107"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-97330b7f937e4328", "name": "Commented-code block (13 lines) in packages/shared/src/services/generator-cost-recovery/operational.ts:3", "shortDescription": {"text": "Commented-code block (13 lines) in packages/shared/src/services/generator-cost-recovery/operational.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-7cda82aede1b5fac", "name": "Commented-code block (8 lines) in packages/shared/src/services/generator-cost-recovery/golden-master.test.ts:12", "shortDescription": {"text": "Commented-code block (8 lines) in packages/shared/src/services/generator-cost-recovery/golden-master.test.ts:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9a19702d5ef89ed3", "name": "Commented-code block (8 lines) in packages/shared/src/services/generator-cost-recovery/operational.test.ts:7", "shortDescription": {"text": "Commented-code block (8 lines) in packages/shared/src/services/generator-cost-recovery/operational.test.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7c7a9bf31d1ab24c", "name": "Commented-code block (8 lines) in packages/shared/src/services/generator-cost-recovery/capital.ts:14", "shortDescription": {"text": "Commented-code block (8 lines) in packages/shared/src/services/generator-cost-recovery/capital.ts:14"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-803fa9261bc1b0c1", "name": "Commented-code block (5 lines) in packages/shared/src/services/generator-cost-recovery/sizing-table.ts:36", "shortDescription": {"text": "Commented-code block (5 lines) in packages/shared/src/services/generator-cost-recovery/sizing-table.ts:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9332a49a51c6eba3", "name": "Commented-code block (6 lines) in packages/shared/src/schemas/mv-protection.schema.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in packages/shared/src/schemas/mv-protection.schema.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-ef1944d9d53ba8db", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/db/src/services/payment.service.ts:116", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/db/src/services/payment.service.ts:116"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ef22fd58bfde6f76", "name": "51 env vars used in code but missing from .env.example", "shortDescription": {"text": "51 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `BASE_URL`, `CI`, `DROPBOX_APP_KEY`, `DROPBOX_APP_SECRET`, `DRY_RUN`, `E2E_USER_EMAIL`, `E2E_USER_PASSWORD`, `EAS_BUILD_PROFILE` + 43 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/22578"}, "properties": {"repository": "WattMatt/e-site", "repoUrl": "https://github.com/WattMatt/e-site", "branch": "main"}, "results": [{"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-2f2b78e94231cf0d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/edge-functions/supabase/functions/send-notification/index.ts:153"}, "properties": {"repobilityId": "51d56773da5c32dd", "scanner": "scanner-primary", "fingerprint": "2f2b78e94231cf0d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-90c4089ef1d0ad88", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/edge-functions/supabase/functions/paystack-webhook/index.ts:65"}, "properties": {"repobilityId": "595c5ea3606c3d18", "scanner": "scanner-primary", "fingerprint": "90c4089ef1d0ad88", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5e85fcad2db6057c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/edge-functions/supabase/functions/compliance-complete/index.ts:163"}, "properties": {"repobilityId": "02c8e9c68298c9aa", "scanner": "scanner-primary", "fingerprint": "5e85fcad2db6057c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5fb02e061d0748a5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/edge-functions/supabase/functions/eft-invoice/index.ts:108"}, "properties": {"repobilityId": "e85f7b1111b3ae7c", "scanner": "scanner-primary", "fingerprint": "5fb02e061d0748a5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1010bec5d8a529ec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/edge-functions/supabase/functions/_shared/encryption.ts:88"}, "properties": {"repobilityId": "8956395fb89d2894", "scanner": "scanner-primary", "fingerprint": "1010bec5d8a529ec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-415dce7795695ee6", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 apps/web/next.config.ts:23"}, "properties": {"repobilityId": "dc383068b6c62af0", "scanner": "scanner-primary", "fingerprint": "415dce7795695ee6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-d5fd005fc233fa8e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 apps/web/src/app/api/medium-voltage/study/route.ts:93"}, "properties": {"repobilityId": "4561daacf7438500", "scanner": "scanner-primary", "fingerprint": "d5fd005fc233fa8e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-253fd488c69f754d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/app/(admin)/inspections/templates/_builder/SectionEditor.tsx:189"}, "properties": {"repobilityId": "3e2f32ec730f270b", "scanner": "scanner-primary", "fingerprint": "253fd488c69f754d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-727a1171855ed3b5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/app/(admin)/inspections/templates/_builder/SectionsList.tsx:42"}, "properties": {"repobilityId": "88019a3e256c46fb", "scanner": "scanner-primary", "fingerprint": "727a1171855ed3b5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2b7f65887aece679", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/web/src/app/(admin)/inspections/templates/_builder/field-editors/RepeatingGroupEditor.tsx:206"}, "properties": {"repobilityId": "9f6e191aa2d8eded", "scanner": "scanner-primary", "fingerprint": "2b7f65887aece679", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f2fcfc84fa036c2c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/web/src/actions/cable-entities.actions.ts:1185"}, "properties": {"repobilityId": "1a513e9068561d65", "scanner": "scanner-primary", "fingerprint": "f2fcfc84fa036c2c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-deed94dd1b0cf933", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 apps/web/src/actions/tenant-documents.actions.ts:59"}, "properties": {"repobilityId": "4dd482d93e0b9a24", "scanner": "scanner-primary", "fingerprint": "deed94dd1b0cf933", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-5f8904770718257b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-template.ts:33"}, "properties": {"repobilityId": "a061d9857b3b6539", "scanner": "scanner-primary", "fingerprint": "5f8904770718257b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a265151a19d4b66c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-templates-to-staging.ts:70"}, "properties": {"repobilityId": "b6a59af8173be419", "scanner": "scanner-primary", "fingerprint": "a265151a19d4b66c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2b3d1d97d17416d1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-demo.ts:89"}, "properties": {"repobilityId": "b7f1ec3c1a06f2fb", "scanner": "scanner-primary", "fingerprint": "2b3d1d97d17416d1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-046a06e536b16607", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reimport-templates-to-staging.ts:63"}, "properties": {"repobilityId": "7fccde942eae3adf", "scanner": "scanner-primary", "fingerprint": "046a06e536b16607", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-50af57e2af342697", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/paystack/pilot-test.ts:115"}, "properties": {"repobilityId": "e500dea630687b77", "scanner": "scanner-primary", "fingerprint": "50af57e2af342697", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2752b5a55f5beaae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/jbcc/extract-seed.ts:309"}, "properties": {"repobilityId": "18b49fba0337ac7a", "scanner": "scanner-primary", "fingerprint": "2752b5a55f5beaae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fb3f482c5c583629", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/db/src/encryption.ts:82"}, "properties": {"repobilityId": "832520025d9897df", "scanner": "scanner-primary", "fingerprint": "fb3f482c5c583629", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f30b33566f54bc66", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/db/src/__tests__/rls-benchmark.test.ts:197"}, "properties": {"repobilityId": "dbdcf32832bc79aa", "scanner": "scanner-primary", "fingerprint": "f30b33566f54bc66", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b18ad390d2add126", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/db/src/__tests__/rls/rls-policy.test.ts:282"}, "properties": {"repobilityId": "0194792b0c092c8a", "scanner": "scanner-primary", "fingerprint": "b18ad390d2add126", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b7a2d0f0ca1ce6c4", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/send-notification/index.ts:33"}, "properties": {"repobilityId": "50dffb92d5cfb38d", "scanner": "scanner-primary", "fingerprint": "b7a2d0f0ca1ce6c4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/edge-functions/supabase/functions/send-notification/index.ts"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-52308d7643e1bcd6", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/marketplace-payment/index.ts:77"}, "properties": {"repobilityId": "d4b0da92f0826c0c", "scanner": "scanner-primary", "fingerprint": "52308d7643e1bcd6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/edge-functions/supabase/functions/marketplace-payment/index.ts"}, "region": {"startLine": 77}}}]}, {"ruleId": "scanner-4ea8c17177c4d68c", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/paystack-webhook/index.ts:431"}, "properties": {"repobilityId": "4ec98242de3646b0", "scanner": "scanner-primary", "fingerprint": "4ea8c17177c4d68c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/edge-functions/supabase/functions/paystack-webhook/index.ts"}, "region": {"startLine": 431}}}]}, {"ruleId": "scanner-464ce4be69bc9e9a", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/render-inspection-pdf/index.ts:37"}, "properties": {"repobilityId": "dc9a1db73e2de8d7", "scanner": "scanner-primary", "fingerprint": "464ce4be69bc9e9a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/edge-functions/supabase/functions/render-inspection-pdf/index.ts"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-3c51883c2501d19f", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/compliance-complete/index.ts:60"}, "properties": {"repobilityId": "ce713f0fc20b7a53", "scanner": "scanner-primary", "fingerprint": "3c51883c2501d19f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/edge-functions/supabase/functions/compliance-complete/index.ts"}, "region": {"startLine": 60}}}]}, {"ruleId": "scanner-6bac4f797ca45fd0", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/cloud-sync-project/index.ts:92"}, "properties": {"repobilityId": "35705bff7f79949d", "scanner": "scanner-primary", "fingerprint": "6bac4f797ca45fd0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/edge-functions/supabase/functions/cloud-sync-project/index.ts"}, "region": {"startLine": 92}}}]}, {"ruleId": "scanner-d23282aefd407595", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/calculate-health-scores/index.ts:163"}, "properties": {"repobilityId": "909ae0c2623be876", "scanner": "scanner-primary", "fingerprint": "d23282aefd407595", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/edge-functions/supabase/functions/calculate-health-scores/index.ts"}, "region": {"startLine": 163}}}]}, {"ruleId": "scanner-ef85fd09cbbb9645", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/generate-report/index.ts:18"}, "properties": {"repobilityId": "20be02e195d452cb", "scanner": "scanner-primary", "fingerprint": "ef85fd09cbbb9645", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/edge-functions/supabase/functions/generate-report/index.ts"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-38e5daa641d45ff7", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/send-email/index.ts:68"}, "properties": {"repobilityId": "8cdb7243bb96e654", "scanner": "scanner-primary", "fingerprint": "38e5daa641d45ff7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/edge-functions/supabase/functions/send-email/index.ts"}, "region": {"startLine": 68}}}]}, {"ruleId": "scanner-c3741b090d3c8d5e", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/eft-invoice/index.ts:34"}, "properties": {"repobilityId": "213ca034a9764127", "scanner": "scanner-primary", "fingerprint": "c3741b090d3c8d5e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/edge-functions/supabase/functions/eft-invoice/index.ts"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-6834608ae7362eb8", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/validate-inspection/index.ts:61"}, "properties": {"repobilityId": "a122d7a8656e950c", "scanner": "scanner-primary", "fingerprint": "6834608ae7362eb8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/edge-functions/supabase/functions/validate-inspection/index.ts"}, "region": {"startLine": 61}}}]}, {"ruleId": "scanner-b516b802916be759", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in apps/edge-functions/supabase/functions/_shared/email-sequence.ts:202"}, "properties": {"repobilityId": "626765054a5530bf", "scanner": "scanner-primary", "fingerprint": "b516b802916be759", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/edge-functions/supabase/functions/_shared/email-sequence.ts"}, "region": {"startLine": 202}}}]}, {"ruleId": "scanner-e3ee6cd053239e8d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/superpowers/mockups/2026-06-08-generator-cost-recovery/index.html:1017"}, "properties": {"repobilityId": "0c59768ebb986fc8", "scanner": "scanner-primary", "fingerprint": "e3ee6cd053239e8d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/superpowers/mockups/2026-06-08-generator-cost-recovery/index.html"}, "region": {"startLine": 1017}}}]}, {"ruleId": "scanner-d1b2306ed360c90c", "level": "error", "message": {"text": "Possible secret in scripts/seed-demo.ts"}, "properties": {"repobilityId": "ef6b1a2033a44417", "scanner": "scanner-primary", "fingerprint": "d1b2306ed360c90c", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/seed-demo.ts"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-c61b2606fb440718", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/jbcc/extract-seed.ts:9"}, "properties": {"repobilityId": "683aeceefbfc23b5", "scanner": "scanner-primary", "fingerprint": "c61b2606fb440718", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/jbcc/extract-seed.ts"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-f150fcfec97eda3c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in graphify-out/graph.html:122"}, "properties": {"repobilityId": "351fcd8a0cdaa114", "scanner": "scanner-primary", "fingerprint": "f150fcfec97eda3c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "graphify-out/graph.html"}, "region": {"startLine": 122}}}]}, {"ruleId": "scanner-3656a839b8d6a2c3", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/shared/src/lib/jbcc/placeholder-fill.test.ts:4"}, "properties": {"repobilityId": "b0c80fcf15a56ec8", "scanner": "scanner-primary", "fingerprint": "3656a839b8d6a2c3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/shared/src/lib/jbcc/placeholder-fill.test.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a3c03147ef1f40b5", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-fb021a1008ee0fb4", "level": "note", "message": {"text": "Very large file: apps/web/src/app/(admin)/projects/[id]/floor-plans/[planId]/MarkupCanvas.tsx (1721 lines)"}, "properties": {"repobilityId": "3864c8cfc2baca5f", "scanner": "scanner-primary", "fingerprint": "fb021a1008ee0fb4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a45fea9b956b261a", "level": "note", "message": {"text": "Very large file: apps/web/src/app/(admin)/projects/[id]/cables/[revisionId]/CableScheduleGrid.tsx (1448 lines)"}, "properties": {"repobilityId": "3a02e57d7f6a8e6f", "scanner": "scanner-primary", "fingerprint": "a45fea9b956b261a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-707f6d8f7d5dcbf1", "level": "note", "message": {"text": "Very large file: apps/web/src/actions/cable-entities.actions.ts (1633 lines)"}, "properties": {"repobilityId": "6d8959a4041cf9c1", "scanner": "scanner-primary", "fingerprint": "707f6d8f7d5dcbf1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-32ae462dd1386b85", "level": "note", "message": {"text": "Very large file: packages/db/src/types.ts (4643 lines)"}, "properties": {"repobilityId": "bad67970346b5ddc", "scanner": "scanner-primary", "fingerprint": "32ae462dd1386b85", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea3b5e389d8c9c0f", "level": "note", "message": {"text": "Low test-to-source ratio"}, "properties": {"repobilityId": "ef7b2552cc00a375", "scanner": "scanner-primary", "fingerprint": "ea3b5e389d8c9c0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["tests"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "6e728aa475e1f3e8", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-faccb9061e9b52a0", "level": "note", "message": {"text": "No README detected"}, "properties": {"repobilityId": "8b7134d6a8c7b6c0", "scanner": "scanner-primary", "fingerprint": "faccb9061e9b52a0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["docs", "readme", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-d0c2205560692580", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/mobile/package.json"}, "properties": {"repobilityId": "b3dfed7bb3d70ed3", "scanner": "scanner-primary", "fingerprint": "d0c2205560692580", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/mobile/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4a9eb7dc7c6e3880", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/web/package.json"}, "properties": {"repobilityId": "6c1704bf24cf19ac", "scanner": "scanner-primary", "fingerprint": "4a9eb7dc7c6e3880", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/web/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2699d5f16ae11282", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/shared/package.json"}, "properties": {"repobilityId": "37ac218a4ef9b430", "scanner": "scanner-primary", "fingerprint": "2699d5f16ae11282", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/shared/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7b16ae2bd0fca524", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/db/package.json"}, "properties": {"repobilityId": "2bddd295d559a9b6", "scanner": "scanner-primary", "fingerprint": "7b16ae2bd0fca524", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/db/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "95f4133498f6a460", "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": "4d557e1070a95bac", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "e9db50cd496dc915", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "59a2e5c9a1374ad1", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "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": "6eecf6bb24515fd8", "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": "73c46519d0c08d1e", "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": "15f32084da844b84", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-0768800dc76ebd5d", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: .claude-handoff.md"}, "properties": {"repobilityId": "def19da9b8599516", "scanner": "scanner-primary", "fingerprint": "0768800dc76ebd5d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "agent_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude-handoff.md"}, "region": {"startLine": 54}}}]}, {"ruleId": "scanner-ac8564ae12d191fd", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/speckit-git-commit/SKILL.md"}, "properties": {"repobilityId": "43b42fab5524ece2", "scanner": "scanner-primary", "fingerprint": "ac8564ae12d191fd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/speckit-git-commit/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-68dfac0dc0956dd3", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/speckit-git-remote/SKILL.md"}, "properties": {"repobilityId": "36186e62c225cbd4", "scanner": "scanner-primary", "fingerprint": "68dfac0dc0956dd3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/speckit-git-remote/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-78ac78bc4ff3cf46", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/speckit-taskstoissues/SKILL.md"}, "properties": {"repobilityId": "6d7a8ed1d27102fc", "scanner": "scanner-primary", "fingerprint": "78ac78bc4ff3cf46", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/speckit-taskstoissues/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8d996699d6c06141", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/speckit-git-initialize/SKILL.md"}, "properties": {"repobilityId": "cee680aaebe12629", "scanner": "scanner-primary", "fingerprint": "8d996699d6c06141", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/speckit-git-initialize/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8f6d508c9d48fa9e", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/speckit-git-validate/SKILL.md"}, "properties": {"repobilityId": "9fb229a9a4c411ec", "scanner": "scanner-primary", "fingerprint": "8f6d508c9d48fa9e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/speckit-git-validate/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-79143aab6aa56ba9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/send-notification/index.ts:131"}, "properties": {"repobilityId": "c283634ae05b36ed", "scanner": "scanner-primary", "fingerprint": "79143aab6aa56ba9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-99361712dc727f67", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/marketplace-payment/index.ts:55"}, "properties": {"repobilityId": "5d142401cf7827b0", "scanner": "scanner-primary", "fingerprint": "99361712dc727f67", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3e2bf0a734eb2490", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/compliance-complete/index.ts:196"}, "properties": {"repobilityId": "e27768e99b0a5fc3", "scanner": "scanner-primary", "fingerprint": "3e2bf0a734eb2490", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0b26ff41242a5e07", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/edge-functions/supabase/functions/cloud-sync-project/index.ts:50"}, "properties": {"repobilityId": "b0f824b255a250c2", "scanner": "scanner-primary", "fingerprint": "0b26ff41242a5e07", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bed015440b90ac09", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/send-email/index.ts:29"}, "properties": {"repobilityId": "b5123c20cbee04c9", "scanner": "scanner-primary", "fingerprint": "bed015440b90ac09", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9c681b9dd0e96887", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/eft-invoice/index.ts:154"}, "properties": {"repobilityId": "9fcbd56533d4ebf0", "scanner": "scanner-primary", "fingerprint": "9c681b9dd0e96887", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1999079bc5ff6824", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/edge-functions/supabase/functions/validate-inspection/rules.ts:3"}, "properties": {"repobilityId": "b2d66795481f2be2", "scanner": "scanner-primary", "fingerprint": "1999079bc5ff6824", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d0b299308d71a617", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/_shared/email-sequence.ts:101"}, "properties": {"repobilityId": "17cb222a42a95fee", "scanner": "scanner-primary", "fingerprint": "d0b299308d71a617", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-777f386d20fe4091", "level": "note", "message": {"text": "Legacy-named symbol `create_folder_v2` in apps/edge-functions/supabase/functions/_shared/cloud-storage/dropbox.provider.ts:180"}, "properties": {"repobilityId": "2ab3d5c8688ab3b9", "scanner": "scanner-primary", "fingerprint": "777f386d20fe4091", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ac628df499755493", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/edge-functions/supabase/functions/_shared/cloud-storage/dropbox.provider.ts:278"}, "properties": {"repobilityId": "073e0b1f0ef6f753", "scanner": "scanner-primary", "fingerprint": "ac628df499755493", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-37935aa9addfd45b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/_shared/cloud-storage/dropbox.provider.ts:123"}, "properties": {"repobilityId": "e9d3098ac611a2d1", "scanner": "scanner-primary", "fingerprint": "37935aa9addfd45b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-12d29567c5b3c318", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/_shared/cloud-storage/google-drive.provider.ts:122"}, "properties": {"repobilityId": "e1b50d5f5183836b", "scanner": "scanner-primary", "fingerprint": "12d29567c5b3c318", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eef1920ecef125e2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/_shared/cloud-storage/provider-utils.ts:83"}, "properties": {"repobilityId": "34eac52a1f2d77ac", "scanner": "scanner-primary", "fingerprint": "eef1920ecef125e2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-70dc37d6d8c90337", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/edge-functions/supabase/functions/_shared/cloud-storage/onedrive.provider.ts:107"}, "properties": {"repobilityId": "7ea2be5c46cca0df", "scanner": "scanner-primary", "fingerprint": "70dc37d6d8c90337", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-268a187cb1a89339", "level": "none", "message": {"text": "Commented-code block (12 lines) in apps/edge-functions/supabase/functions/_shared/validation-rules/rmu.ts:4"}, "properties": {"repobilityId": "159157a90350073a", "scanner": "scanner-primary", "fingerprint": "268a187cb1a89339", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8374270fe9207a17", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/edge-functions/supabase/functions/_shared/validation-rules/generator-fat.ts:7"}, "properties": {"repobilityId": "843b1fc7a9ad7209", "scanner": "scanner-primary", "fingerprint": "8374270fe9207a17", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0653d8529601a252", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/edge-functions/supabase/functions/_shared/validation-rules/mini-sub.ts:6"}, "properties": {"repobilityId": "9908f4ed0411741f", "scanner": "scanner-primary", "fingerprint": "0653d8529601a252", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb109b0d7334b1b7", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/edge-functions/supabase/functions/_shared/validation-rules/solar-pv.ts:9"}, "properties": {"repobilityId": "fdf4e6327447f950", "scanner": "scanner-primary", "fingerprint": "fb109b0d7334b1b7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-714b53792737b75a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/mobile/app/snags/[id]/index.tsx:76"}, "properties": {"repobilityId": "86353a1a37d984c1", "scanner": "scanner-primary", "fingerprint": "714b53792737b75a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-39b91a35fea61ad2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/mobile/src/components/attachments/commit.ts:86"}, "properties": {"repobilityId": "aaa5454a59cebb00", "scanner": "scanner-primary", "fingerprint": "39b91a35fea61ad2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2d089b1ba7784572", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/mobile/src/lib/diary-attachments.ts:21"}, "properties": {"repobilityId": "0d281b26f02b95a8", "scanner": "scanner-primary", "fingerprint": "2d089b1ba7784572", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b1f9134120794cf5", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/mobile/src/inspections/upload-worker.ts:7"}, "properties": {"repobilityId": "dd78afb6b514c868", "scanner": "scanner-primary", "fingerprint": "b1f9134120794cf5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cafe6398ffd34885", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/mobile/src/inspections/attachment-queue.ts:5"}, "properties": {"repobilityId": "593f2a0c48309719", "scanner": "scanner-primary", "fingerprint": "cafe6398ffd34885", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e53e1a41722fdb19", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/mobile/src/inspections/FieldRenderers.tsx:63"}, "properties": {"repobilityId": "ee426ebd60e32f41", "scanner": "scanner-primary", "fingerprint": "e53e1a41722fdb19", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fc589672a0f526f6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/mobile/src/inspections/FieldRenderers.tsx:696"}, "properties": {"repobilityId": "ead49afd9438004c", "scanner": "scanner-primary", "fingerprint": "fc589672a0f526f6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a0674b1f44c74532", "level": "none", "message": {"text": "Commented-code block (11 lines) in apps/web/next.config.ts:10"}, "properties": {"repobilityId": "9c695c2715f10e37", "scanner": "scanner-primary", "fingerprint": "a0674b1f44c74532", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2bbd9dffc8302efa", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/src/middleware.ts:107"}, "properties": {"repobilityId": "2c43a2ccfd2a8262", "scanner": "scanner-primary", "fingerprint": "2bbd9dffc8302efa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-977cc1d65f5544b4", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/components/providers/SentryBoot.tsx:9"}, "properties": {"repobilityId": "1bcb40e972bdaf8d", "scanner": "scanner-primary", "fingerprint": "977cc1d65f5544b4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fe6f5f89ebdca868", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/notifications/dispatch/route.ts:132"}, "properties": {"repobilityId": "fb635ffb83906556", "scanner": "scanner-primary", "fingerprint": "fe6f5f89ebdca868", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eb101188b376a1b9", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/app/api/paystack/webhook/route.ts:110"}, "properties": {"repobilityId": "1fd659ccff0de479", "scanner": "scanner-primary", "fingerprint": "eb101188b376a1b9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c2f8a672dd7099b", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/src/app/api/paystack/callback/route.ts:30"}, "properties": {"repobilityId": "5fb9fcfbbb718b2f", "scanner": "scanner-primary", "fingerprint": "6c2f8a672dd7099b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-194adad561ea5c3b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/paystack/callback/route.ts:15"}, "properties": {"repobilityId": "e8075bc4c461d549", "scanner": "scanner-primary", "fingerprint": "194adad561ea5c3b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3a136ea5103c06e8", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/web/src/app/api/paystack/mv-subscribe/route.ts:9"}, "properties": {"repobilityId": "427a469cc736c3c4", "scanner": "scanner-primary", "fingerprint": "3a136ea5103c06e8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d334c54114c43076", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/paystack/mv-subscribe/route.ts:83"}, "properties": {"repobilityId": "b2b68c80feb158b8", "scanner": "scanner-primary", "fingerprint": "d334c54114c43076", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1d8bf26542d701ad", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/app/api/paystack/feature-seat/route.ts:8"}, "properties": {"repobilityId": "95c0575d26b7366e", "scanner": "scanner-primary", "fingerprint": "1d8bf26542d701ad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-678ec1f38b5c073c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/paystack/feature-seat/route.ts:102"}, "properties": {"repobilityId": "4f55cdcd9b46f2a7", "scanner": "scanner-primary", "fingerprint": "678ec1f38b5c073c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dd57b0196e488e9e", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/app/api/paystack/feature-unlock/route.ts:8"}, "properties": {"repobilityId": "6cdf14ad4a057d45", "scanner": "scanner-primary", "fingerprint": "dd57b0196e488e9e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8e71554132516814", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/paystack/feature-unlock/route.ts:83"}, "properties": {"repobilityId": "2c3db6e37d43f13c", "scanner": "scanner-primary", "fingerprint": "8e71554132516814", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-927bfbcee3d7cb24", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/paystack/checkout/route.ts:79"}, "properties": {"repobilityId": "b6ced8476e276346", "scanner": "scanner-primary", "fingerprint": "927bfbcee3d7cb24", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b2002a9d75e1112c", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/src/app/api/cable-schedule/parse/route.ts:95"}, "properties": {"repobilityId": "a431c64648f198c3", "scanner": "scanner-primary", "fingerprint": "b2002a9d75e1112c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-42cfbb5dc0f0a7f3", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/app/api/cable-schedule/export/csv/route.ts:30"}, "properties": {"repobilityId": "e5100c4ae8c88a73", "scanner": "scanner-primary", "fingerprint": "42cfbb5dc0f0a7f3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6f0958cec89f9081", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/app/api/medium-voltage/study/route.ts:93"}, "properties": {"repobilityId": "b0bed076cc839cfd", "scanner": "scanner-primary", "fingerprint": "6f0958cec89f9081", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c0dde4abf46d299", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/inspections/upload-signature/route.ts:65"}, "properties": {"repobilityId": "698fa6e8b46aed2d", "scanner": "scanner-primary", "fingerprint": "7c0dde4abf46d299", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-11dba4e0382024f2", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/app/api/inspections/upload-photo/route.ts:54"}, "properties": {"repobilityId": "cd67a21fa21104e1", "scanner": "scanner-primary", "fingerprint": "11dba4e0382024f2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d89bd446a0490881", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/inspections/upload-photo/route.ts:66"}, "properties": {"repobilityId": "a7cfaff8717fb97b", "scanner": "scanner-primary", "fingerprint": "d89bd446a0490881", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-de0f363f11dc83de", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/app/api/inspections/delete-photo/route.ts:89"}, "properties": {"repobilityId": "60398725227987e3", "scanner": "scanner-primary", "fingerprint": "de0f363f11dc83de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d5572adbf15fa1b5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/inspections/delete-photo/route.ts:69"}, "properties": {"repobilityId": "1f18ef3ed5ed8c68", "scanner": "scanner-primary", "fingerprint": "d5572adbf15fa1b5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b373f1e9391f2458", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/inspections/upload-file/route.ts:65"}, "properties": {"repobilityId": "b257f8d476e99454", "scanner": "scanner-primary", "fingerprint": "b373f1e9391f2458", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fa8016bb4a7f98e5", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/app/api/tenant-schedule/parse/route.ts:93"}, "properties": {"repobilityId": "429aeeebbfca1746", "scanner": "scanner-primary", "fingerprint": "fa8016bb4a7f98e5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b7de1605342fe87", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/src/app/api/tenant-schedule/commit/route.ts:339"}, "properties": {"repobilityId": "b921844bc137fe59", "scanner": "scanner-primary", "fingerprint": "7b7de1605342fe87", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-39cf1c30eaa6b082", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/api/tenant-schedule/commit/route.ts:83"}, "properties": {"repobilityId": "0f7beb7adf98e9da", "scanner": "scanner-primary", "fingerprint": "39cf1c30eaa6b082", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-64c9b89e28bd5c42", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/src/app/(admin)/settings/integrations/page.tsx:31"}, "properties": {"repobilityId": "a457a15a51b87e9a", "scanner": "scanner-primary", "fingerprint": "64c9b89e28bd5c42", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-18b421caa2449d4c", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/web/src/app/(admin)/projects/[id]/handover/documents/HandoverCloudPicker.tsx:82"}, "properties": {"repobilityId": "db7471288b6012fd", "scanner": "scanner-primary", "fingerprint": "18b421caa2449d4c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a01fec14bd05f953", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/src/app/(admin)/projects/[id]/floor-plans/[planId]/MarkupCanvas.tsx:656"}, "properties": {"repobilityId": "e4808207d7d55cde", "scanner": "scanner-primary", "fingerprint": "a01fec14bd05f953", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce16d2e6c58b18eb", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/app/(admin)/projects/[id]/equipment-materials/page.tsx:230"}, "properties": {"repobilityId": "32f647bf4720eb3f", "scanner": "scanner-primary", "fingerprint": "ce16d2e6c58b18eb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3256b42e4638d96c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/(admin)/projects/[id]/equipment-materials/_components/UnifiedDocSlot.tsx:57"}, "properties": {"repobilityId": "ef51ab9019b70cfd", "scanner": "scanner-primary", "fingerprint": "3256b42e4638d96c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9352bfb8dc2a8e81", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/(admin)/projects/[id]/equipment-materials/_components/UnifiedShopDrawingList.tsx:72"}, "properties": {"repobilityId": "4b918cc24bdf23c8", "scanner": "scanner-primary", "fingerprint": "9352bfb8dc2a8e81", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fffbbc2fac5e03d2", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/app/(admin)/projects/[id]/medium-voltage/[revisionId]/mv-unlock/page.tsx:29"}, "properties": {"repobilityId": "33c091f9f539afe3", "scanner": "scanner-primary", "fingerprint": "fffbbc2fac5e03d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-28ad53938272c69f", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/app/(admin)/projects/[id]/inspections/[inspectionId]/page.tsx:46"}, "properties": {"repobilityId": "ebb51bda219a3a20", "scanner": "scanner-primary", "fingerprint": "28ad53938272c69f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d974a6a06950240c", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/app/(admin)/projects/[id]/inspections/[inspectionId]/FieldRenderer.tsx:25"}, "properties": {"repobilityId": "66036dde85246ffe", "scanner": "scanner-primary", "fingerprint": "d974a6a06950240c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8df86f4580a57f3b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/(admin)/projects/[id]/inspections/[inspectionId]/SignatureModal.tsx:55"}, "properties": {"repobilityId": "c923c0b0168037a7", "scanner": "scanner-primary", "fingerprint": "8df86f4580a57f3b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-287632dbbb57b10b", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/web/src/app/(admin)/projects/[id]/inspections/[inspectionId]/fields/RepeatingGroupField.tsx:19"}, "properties": {"repobilityId": "59b36e4b55d30624", "scanner": "scanner-primary", "fingerprint": "287632dbbb57b10b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ba4bd75bca254d57", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/app/(admin)/projects/[id]/inspections/[inspectionId]/fields/FileField.test.tsx:6"}, "properties": {"repobilityId": "2bd1196e6ac9c82f", "scanner": "scanner-primary", "fingerprint": "ba4bd75bca254d57", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5243aa85b16242d2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/(admin)/projects/[id]/inspections/[inspectionId]/fields/useFieldPhotos.ts:115"}, "properties": {"repobilityId": "8f11be00fedc16b4", "scanner": "scanner-primary", "fingerprint": "5243aa85b16242d2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f66a300b38d58e6e", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/app/(admin)/projects/[id]/inspections/[inspectionId]/fields/FileField.tsx:23"}, "properties": {"repobilityId": "b05fd9757dba5d59", "scanner": "scanner-primary", "fingerprint": "f66a300b38d58e6e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cc80eeaace9c69d1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/(admin)/projects/[id]/inspections/[inspectionId]/fields/FileField.tsx:66"}, "properties": {"repobilityId": "4dd07abb18b4f07d", "scanner": "scanner-primary", "fingerprint": "cc80eeaace9c69d1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-352248ea56ea33a0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/(admin)/projects/[id]/tenant-schedule/_components/DocumentRevisionDrawer.tsx:126"}, "properties": {"repobilityId": "d70a4d2d8ee2d7c9", "scanner": "scanner-primary", "fingerprint": "352248ea56ea33a0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-808fa3050ba3be3f", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/app/(admin)/projects/[id]/tenant-schedule/_components/TenantDocumentList.tsx:47"}, "properties": {"repobilityId": "b98c17ae4174e5f6", "scanner": "scanner-primary", "fingerprint": "808fa3050ba3be3f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-27e3d45e6d280551", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/app/(admin)/projects/[id]/tenant-schedule/_components/TenantDocumentList.tsx:181"}, "properties": {"repobilityId": "b48a038e704bc9c9", "scanner": "scanner-primary", "fingerprint": "27e3d45e6d280551", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-46ee83db7a493afc", "level": "none", "message": {"text": "Commented-code block (12 lines) in apps/web/src/app/(admin)/projects/[id]/cables/[revisionId]/CableFormModal.tsx:120"}, "properties": {"repobilityId": "cb7f52e20b258f26", "scanner": "scanner-primary", "fingerprint": "46ee83db7a493afc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-412eae44aa4c841f", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/app/(admin)/projects/[id]/cables/[revisionId]/CableScheduleGrid.tsx:890"}, "properties": {"repobilityId": "d41c3f3fc91adb09", "scanner": "scanner-primary", "fingerprint": "412eae44aa4c841f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-94e6477a02d711a3", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/app/(admin)/projects/[id]/cables/[revisionId]/page.tsx:295"}, "properties": {"repobilityId": "9bc5292b2cce27af", "scanner": "scanner-primary", "fingerprint": "94e6477a02d711a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-09ed1e24ec25a798", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/web/src/app/(admin)/projects/[id]/cables/[revisionId]/ExportMenu.tsx:221"}, "properties": {"repobilityId": "c07a55e3132bcd3d", "scanner": "scanner-primary", "fingerprint": "09ed1e24ec25a798", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-81b1329f40917f5f", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/app/(admin)/projects/[id]/cables/[revisionId]/cost/page.tsx:19"}, "properties": {"repobilityId": "7af32a35d623aa6b", "scanner": "scanner-primary", "fingerprint": "81b1329f40917f5f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cf6d15f052585ea8", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/app/(admin)/projects/[id]/cables/[revisionId]/tags/page.tsx:163"}, "properties": {"repobilityId": "6ad9d518cac59770", "scanner": "scanner-primary", "fingerprint": "cf6d15f052585ea8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-362ee2a73f193b80", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/web/src/app/(admin)/projects/[id]/generator-cost-recovery/SettingsForm.test.tsx:4"}, "properties": {"repobilityId": "060870e726a266f0", "scanner": "scanner-primary", "fingerprint": "362ee2a73f193b80", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aa3bc65042c8f835", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/app/(admin)/inspections/templates/_builder/field-editors/RepeatingGroupEditor.tsx:8"}, "properties": {"repobilityId": "e513b1bc11ba5579", "scanner": "scanner-primary", "fingerprint": "aa3bc65042c8f835", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9b3a2ac066b28213", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/app/(auth)/verify-email/page.tsx:8"}, "properties": {"repobilityId": "4c8781fc47bbae0e", "scanner": "scanner-primary", "fingerprint": "9b3a2ac066b28213", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7cd06059abeadaa0", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/app/(scan)/site/tag/[text]/page.tsx:44"}, "properties": {"repobilityId": "97904a6825c92e08", "scanner": "scanner-primary", "fingerprint": "7cd06059abeadaa0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9dbbb1c466f3c00a", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/app/(public)/layout.tsx:26"}, "properties": {"repobilityId": "e066076fd2ba1a39", "scanner": "scanner-primary", "fingerprint": "9dbbb1c466f3c00a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-56a6846a47d6e662", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/app/(public)/legal/acceptable-use-policy/page.tsx:10"}, "properties": {"repobilityId": "7d50a3300f21ea43", "scanner": "scanner-primary", "fingerprint": "56a6846a47d6e662", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a579f7be4539934f", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/lib/boq/parse-boq-xlsx.ts:413"}, "properties": {"repobilityId": "e35e707a3449f010", "scanner": "scanner-primary", "fingerprint": "a579f7be4539934f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53f7fc28a409fd48", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/lib/boq/parse-boq-xlsx.test.ts:8"}, "properties": {"repobilityId": "f484361ee6c45a04", "scanner": "scanner-primary", "fingerprint": "53f7fc28a409fd48", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c382a596f0a2f019", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/lib/boq/parse-sheet.ts:137"}, "properties": {"repobilityId": "599295b6792619a3", "scanner": "scanner-primary", "fingerprint": "c382a596f0a2f019", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8a657b6b5552b8b8", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/lib/cable-schedule/export-csv.ts:60"}, "properties": {"repobilityId": "3fa0f7827a8c07ed", "scanner": "scanner-primary", "fingerprint": "8a657b6b5552b8b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c5a41ee16a6a4b57", "level": "none", "message": {"text": "Commented-code block (11 lines) in apps/web/src/lib/cable-schedule/export-payload.ts:280"}, "properties": {"repobilityId": "9ec8af41d4a6af5a", "scanner": "scanner-primary", "fingerprint": "c5a41ee16a6a4b57", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3a2d65f39bfc95df", "level": "none", "message": {"text": "Commented-code block (10 lines) in apps/web/src/lib/cable-schedule/export-excel.ts:107"}, "properties": {"repobilityId": "639a90663c6b24f2", "scanner": "scanner-primary", "fingerprint": "3a2d65f39bfc95df", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aaf998ee699f5058", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/lib/cable-schedule/excel-importer.ts:385"}, "properties": {"repobilityId": "cdd91de9a3d03f3b", "scanner": "scanner-primary", "fingerprint": "aaf998ee699f5058", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-17d32a13c2fb32a7", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/src/lib/cable-schedule/export-pdf.ts:734"}, "properties": {"repobilityId": "1c752ad29522c4a7", "scanner": "scanner-primary", "fingerprint": "17d32a13c2fb32a7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c68e6392f3d9a461", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/lib/supabase/server.ts:6"}, "properties": {"repobilityId": "3be23f3b356f741f", "scanner": "scanner-primary", "fingerprint": "c68e6392f3d9a461", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e195dd41fb3d2821", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/src/lib/reports/interior.tsx:6"}, "properties": {"repobilityId": "29ddbf33633e7021", "scanner": "scanner-primary", "fingerprint": "e195dd41fb3d2821", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2fb9cd8dca67b82", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/lib/reports/inspection-report-data.test.ts:574"}, "properties": {"repobilityId": "2dfa9a634376d169", "scanner": "scanner-primary", "fingerprint": "f2fb9cd8dca67b82", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-95910d15df27db64", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/lib/reports/valuation-report-data.test.ts:88"}, "properties": {"repobilityId": "f57468b1940a84bc", "scanner": "scanner-primary", "fingerprint": "95910d15df27db64", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a725f7c0e0f6b76e", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/lib/reports/inspection-report-data.ts:120"}, "properties": {"repobilityId": "bea405c793e660cb", "scanner": "scanner-primary", "fingerprint": "a725f7c0e0f6b76e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b84585f0d7419293", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/services/cloud-storage.server.ts:145"}, "properties": {"repobilityId": "bc5653b37b21131b", "scanner": "scanner-primary", "fingerprint": "b84585f0d7419293", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c75ebe0707a7a996", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/services/cloud-storage-folder.server.ts:86"}, "properties": {"repobilityId": "c159b5b7ad977ab5", "scanner": "scanner-primary", "fingerprint": "c75ebe0707a7a996", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7d3165e617bdf6d4", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/actions/cable-cost.actions.ts:199"}, "properties": {"repobilityId": "fb8b37d27fb6cf1f", "scanner": "scanner-primary", "fingerprint": "7d3165e617bdf6d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-327473a4eba92b87", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/actions/inspections-certify.actions.ts:140"}, "properties": {"repobilityId": "b18a6e7b926923ea", "scanner": "scanner-primary", "fingerprint": "327473a4eba92b87", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2288bccf694d800d", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/actions/handover.actions.ts:434"}, "properties": {"repobilityId": "0dbd7d190fb4c249", "scanner": "scanner-primary", "fingerprint": "2288bccf694d800d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-715ff0ce3dc86dd2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/node-order-document.actions.ts:45"}, "properties": {"repobilityId": "204265a0ce62390c", "scanner": "scanner-primary", "fingerprint": "715ff0ce3dc86dd2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7745c155137147d4", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/actions/snag-visit.actions.test.ts:477"}, "properties": {"repobilityId": "90306f5dd9bc0e1b", "scanner": "scanner-primary", "fingerprint": "7745c155137147d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3b2afe1920fdbde7", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/src/actions/equipment.actions.ts:195"}, "properties": {"repobilityId": "45a4c73505b40504", "scanner": "scanner-primary", "fingerprint": "3b2afe1920fdbde7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b7f7f40cca43eab", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/equipment.actions.ts:46"}, "properties": {"repobilityId": "9094341a923d6833", "scanner": "scanner-primary", "fingerprint": "4b7f7f40cca43eab", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d4342d648b3cd26d", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/src/actions/project-members.actions.ts:96"}, "properties": {"repobilityId": "7a6bf23fcdc12e55", "scanner": "scanner-primary", "fingerprint": "d4342d648b3cd26d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e01175288bc6635f", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/actions/sub-organisations.actions.test.ts:168"}, "properties": {"repobilityId": "93dd6c1065fa4e11", "scanner": "scanner-primary", "fingerprint": "e01175288bc6635f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e1e3878decdaac7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/tenant-board.actions.ts:35"}, "properties": {"repobilityId": "f12544cdefa552c9", "scanner": "scanner-primary", "fingerprint": "2e1e3878decdaac7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e073fdefd7bc27ed", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/src/actions/cable-revision.actions.ts:110"}, "properties": {"repobilityId": "cd76221d642031b1", "scanner": "scanner-primary", "fingerprint": "e073fdefd7bc27ed", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a25542aa617aa26c", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/actions/valuation.actions.ts:509"}, "properties": {"repobilityId": "baf3b8afc7756ba3", "scanner": "scanner-primary", "fingerprint": "a25542aa617aa26c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c3e4f30552487c25", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/actions/cloud-storage.actions.ts:33"}, "properties": {"repobilityId": "0d1f71bf58f85d8d", "scanner": "scanner-primary", "fingerprint": "c3e4f30552487c25", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-92a08db857a5a28e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/cloud-storage.actions.ts:209"}, "properties": {"repobilityId": "5510ee6d70fa1a13", "scanner": "scanner-primary", "fingerprint": "92a08db857a5a28e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9a9c7b28cc4e7b88", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/actions/board-short-code.actions.ts:67"}, "properties": {"repobilityId": "ac46c35c49cc37a0", "scanner": "scanner-primary", "fingerprint": "9a9c7b28cc4e7b88", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-12706dca60ac13b1", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/actions/inspections.actions.ts:710"}, "properties": {"repobilityId": "c7ceb1ab79d4e03f", "scanner": "scanner-primary", "fingerprint": "12706dca60ac13b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5487104e3247a88c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/inspections.actions.ts:722"}, "properties": {"repobilityId": "6491827d394dbb48", "scanner": "scanner-primary", "fingerprint": "5487104e3247a88c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5f50bb9c1f033285", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/snag.actions.ts:133"}, "properties": {"repobilityId": "445f09c2a6e6be55", "scanner": "scanner-primary", "fingerprint": "5f50bb9c1f033285", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e402dde7d089b888", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/actions/mv-protection.actions.ts:155"}, "properties": {"repobilityId": "2f5cdc54072a708f", "scanner": "scanner-primary", "fingerprint": "e402dde7d089b888", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f1f18c155ce0680a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/node-order.actions.ts:51"}, "properties": {"repobilityId": "7565051595ad85af", "scanner": "scanner-primary", "fingerprint": "f1f18c155ce0680a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-79e01951cf2f06c0", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/actions/variation.actions.ts:254"}, "properties": {"repobilityId": "2988ddaf99ac4ebf", "scanner": "scanner-primary", "fingerprint": "79e01951cf2f06c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c10328d9d03157fd", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/web/src/actions/cable-entities.actions.ts:121"}, "properties": {"repobilityId": "86c6bcc67c2cae3b", "scanner": "scanner-primary", "fingerprint": "c10328d9d03157fd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b27f59c61e8061d4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/supplier.actions.ts:353"}, "properties": {"repobilityId": "b3cc73f05eb2a574", "scanner": "scanner-primary", "fingerprint": "b27f59c61e8061d4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8b0034de029c699d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/tenant-documents.actions.ts:80"}, "properties": {"repobilityId": "c680bdc43332ddfd", "scanner": "scanner-primary", "fingerprint": "8b0034de029c699d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-665f45b83621844e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/node-order-shop-drawing.actions.ts:57"}, "properties": {"repobilityId": "0f949b327bb5bde7", "scanner": "scanner-primary", "fingerprint": "665f45b83621844e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5df1b2a1cd61f552", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/tenant-bo.actions.ts:62"}, "properties": {"repobilityId": "1eeb4b886df6b669", "scanner": "scanner-primary", "fingerprint": "5df1b2a1cd61f552", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ea9038af3e8b961a", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/actions/snag-visit.actions.ts:476"}, "properties": {"repobilityId": "8850530d6559bb82", "scanner": "scanner-primary", "fingerprint": "ea9038af3e8b961a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-20ec2887f4553cec", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/snag-visit.actions.ts:329"}, "properties": {"repobilityId": "57c449416c406ef0", "scanner": "scanner-primary", "fingerprint": "20ec2887f4553cec", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-50a36b2713211b78", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/web/src/actions/sub-org-members.actions.test.ts:68"}, "properties": {"repobilityId": "400ab583352b66e6", "scanner": "scanner-primary", "fingerprint": "50a36b2713211b78", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c2c5f0cd31aaf87e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/tenant-scope.actions.ts:49"}, "properties": {"repobilityId": "11c09f5d4f564374", "scanner": "scanner-primary", "fingerprint": "c2c5f0cd31aaf87e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eda2ac4526408f89", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/actions/tenant-delete.actions.ts:428"}, "properties": {"repobilityId": "5f333fc49bf9ac65", "scanner": "scanner-primary", "fingerprint": "eda2ac4526408f89", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-64bcb90fb3e3964a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/web/src/actions/tenant-delete.actions.ts:83"}, "properties": {"repobilityId": "f31acff8da77d063", "scanner": "scanner-primary", "fingerprint": "64bcb90fb3e3964a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-14993d09b724b65c", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/web/src/actions/cable-length.actions.ts:164"}, "properties": {"repobilityId": "f0bf1174717c595f", "scanner": "scanner-primary", "fingerprint": "14993d09b724b65c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3055600745c63835", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/import-templates-to-staging.ts:29"}, "properties": {"repobilityId": "4345d05d42ed6edc", "scanner": "scanner-primary", "fingerprint": "3055600745c63835", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-87a7e123ecbaf056", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/reimport-templates-to-staging.ts:37"}, "properties": {"repobilityId": "38a9a066ae6409ea", "scanner": "scanner-primary", "fingerprint": "87a7e123ecbaf056", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b2caeebe3aa5670e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/reimport-inline-photo-cleanup.cjs:46"}, "properties": {"repobilityId": "dec9124daf0977ae", "scanner": "scanner-primary", "fingerprint": "b2caeebe3aa5670e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-af13b9c77b86ac0f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/paystack/pilot-test.ts:120"}, "properties": {"repobilityId": "290602f82587fd89", "scanner": "scanner-primary", "fingerprint": "af13b9c77b86ac0f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-951f93c6f72c1513", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/shared/src/index.ts:19"}, "properties": {"repobilityId": "ef05edbe514cf375", "scanner": "scanner-primary", "fingerprint": "951f93c6f72c1513", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-827cf161bc3f6fc5", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/shared/src/__tests__/cloud-storage/dropbox.test.ts:98"}, "properties": {"repobilityId": "8c2145ec9aa3eaa3", "scanner": "scanner-primary", "fingerprint": "827cf161bc3f6fc5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5a6f8596323a5e27", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/shared/src/structure/node.service.test.ts:12"}, "properties": {"repobilityId": "f260e0b93e356758", "scanner": "scanner-primary", "fingerprint": "5a6f8596323a5e27", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-78afa02e6bd0ff19", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/shared/src/structure/tenant-import-parser.ts:320"}, "properties": {"repobilityId": "eea4654fa7e7f8a6", "scanner": "scanner-primary", "fingerprint": "78afa02e6bd0ff19", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-63ef4aca4c437f89", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/shared/src/inspections/engine.test.ts:214"}, "properties": {"repobilityId": "f718dd8a01d11adb", "scanner": "scanner-primary", "fingerprint": "63ef4aca4c437f89", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-363b60e248bb8ac5", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/shared/src/inspections/engine.ts:182"}, "properties": {"repobilityId": "4521ec68d5a7f22c", "scanner": "scanner-primary", "fingerprint": "363b60e248bb8ac5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7edf359c57440849", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/shared/src/inspections/validation-rules/mini-sub.test.ts:114"}, "properties": {"repobilityId": "e9bb0bc960997e53", "scanner": "scanner-primary", "fingerprint": "7edf359c57440849", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e8c0b3d41f21c9b4", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/shared/src/inspections/validation-rules/rmu.test.ts:32"}, "properties": {"repobilityId": "2c36546c66d228ab", "scanner": "scanner-primary", "fingerprint": "e8c0b3d41f21c9b4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9acbd300734d13da", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/shared/src/services/storage.service.ts:32"}, "properties": {"repobilityId": "590db28d4b88fd6a", "scanner": "scanner-primary", "fingerprint": "9acbd300734d13da", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3eb6d3cd457af9eb", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/shared/src/services/variation.service.client.test.ts:297"}, "properties": {"repobilityId": "46f7d310cc61c428", "scanner": "scanner-primary", "fingerprint": "3eb6d3cd457af9eb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3213acaa58b12395", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/shared/src/services/_project-settings-mappers.ts:7"}, "properties": {"repobilityId": "ddddfc649a45e6b3", "scanner": "scanner-primary", "fingerprint": "3213acaa58b12395", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2bf4aef2a72c1af8", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/shared/src/services/sans-lookup.service.ts:245"}, "properties": {"repobilityId": "6c9e7553a53024f9", "scanner": "scanner-primary", "fingerprint": "2bf4aef2a72c1af8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1e1530d20def9685", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/shared/src/services/cable-structure.service.ts:111"}, "properties": {"repobilityId": "84259a96a30bc856", "scanner": "scanner-primary", "fingerprint": "1e1530d20def9685", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-734a209e0d5f1497", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/shared/src/services/snag-visit-buckets.ts:10"}, "properties": {"repobilityId": "4d854820181d3137", "scanner": "scanner-primary", "fingerprint": "734a209e0d5f1497", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd169c5886be5567", "level": "note", "message": {"text": "Legacy-named symbol `daysOld` in packages/shared/src/services/sla.service.ts:81"}, "properties": {"repobilityId": "0fb69f73b60d92cd", "scanner": "scanner-primary", "fingerprint": "fd169c5886be5567", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9881d0b691b1570b", "level": "none", "message": {"text": "Commented-code block (9 lines) in packages/shared/src/services/billing.service.ts:5"}, "properties": {"repobilityId": "ddb4644dd082ce27", "scanner": "scanner-primary", "fingerprint": "9881d0b691b1570b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1daf8ccf7778a8f3", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/shared/src/services/cable-structure.service.test.ts:67"}, "properties": {"repobilityId": "5c5764a1d0c81482", "scanner": "scanner-primary", "fingerprint": "1daf8ccf7778a8f3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9dca0775bf6103f5", "level": "note", "message": {"text": "Legacy-named symbol `create_folder_v2` in packages/shared/src/services/cloud-storage/dropbox.provider.ts:32"}, "properties": {"repobilityId": "a4f757da9fd4a688", "scanner": "scanner-primary", "fingerprint": "9dca0775bf6103f5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4505b972b8c48d25", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/shared/src/services/cloud-storage/dropbox.provider.ts:31"}, "properties": {"repobilityId": "6d38c6b937891d95", "scanner": "scanner-primary", "fingerprint": "4505b972b8c48d25", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7caded7378cdb53e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/shared/src/services/cloud-storage/dropbox.provider.ts:126"}, "properties": {"repobilityId": "f030ed634e59a8d7", "scanner": "scanner-primary", "fingerprint": "7caded7378cdb53e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-95c4be6fdd000f48", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/shared/src/services/cloud-storage/google-drive.provider.ts:22"}, "properties": {"repobilityId": "14c0ab78e5379907", "scanner": "scanner-primary", "fingerprint": "95c4be6fdd000f48", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c5b723568c4452b5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/shared/src/services/cloud-storage/google-drive.provider.ts:123"}, "properties": {"repobilityId": "8d5251bb2ae5145f", "scanner": "scanner-primary", "fingerprint": "c5b723568c4452b5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bebb1410caadc874", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/shared/src/services/cloud-storage/provider-utils.ts:91"}, "properties": {"repobilityId": "6e6097deb8d983a6", "scanner": "scanner-primary", "fingerprint": "bebb1410caadc874", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3b1ac14138e3022c", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/shared/src/services/cloud-storage/onedrive.provider.ts:23"}, "properties": {"repobilityId": "ad0f9354e927767a", "scanner": "scanner-primary", "fingerprint": "3b1ac14138e3022c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-329a7ede1e1271a8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/shared/src/services/cloud-storage/onedrive.provider.ts:107"}, "properties": {"repobilityId": "1543db53a6d0351d", "scanner": "scanner-primary", "fingerprint": "329a7ede1e1271a8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-97330b7f937e4328", "level": "none", "message": {"text": "Commented-code block (13 lines) in packages/shared/src/services/generator-cost-recovery/operational.ts:3"}, "properties": {"repobilityId": "0771312dd35942e9", "scanner": "scanner-primary", "fingerprint": "97330b7f937e4328", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7cda82aede1b5fac", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/shared/src/services/generator-cost-recovery/golden-master.test.ts:12"}, "properties": {"repobilityId": "25ce047c011485d3", "scanner": "scanner-primary", "fingerprint": "7cda82aede1b5fac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9a19702d5ef89ed3", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/shared/src/services/generator-cost-recovery/operational.test.ts:7"}, "properties": {"repobilityId": "0ea1ad7c30cb72d8", "scanner": "scanner-primary", "fingerprint": "9a19702d5ef89ed3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c7a9bf31d1ab24c", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/shared/src/services/generator-cost-recovery/capital.ts:14"}, "properties": {"repobilityId": "7e54382e4156a1f5", "scanner": "scanner-primary", "fingerprint": "7c7a9bf31d1ab24c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-803fa9261bc1b0c1", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/shared/src/services/generator-cost-recovery/sizing-table.ts:36"}, "properties": {"repobilityId": "1fbc3d1959d80ba9", "scanner": "scanner-primary", "fingerprint": "803fa9261bc1b0c1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9332a49a51c6eba3", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/shared/src/schemas/mv-protection.schema.ts:3"}, "properties": {"repobilityId": "79d6ad1d9811e162", "scanner": "scanner-primary", "fingerprint": "9332a49a51c6eba3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef1944d9d53ba8db", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/db/src/services/payment.service.ts:116"}, "properties": {"repobilityId": "886b48bf06dba6b0", "scanner": "scanner-primary", "fingerprint": "ef1944d9d53ba8db", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ef22fd58bfde6f76", "level": "note", "message": {"text": "51 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "3022eac3b673b267", "scanner": "scanner-primary", "fingerprint": "ef22fd58bfde6f76", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}