{"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-b0f84dcd8e3c6c91", "name": "Stray `console.log` in TS/JS \u2014 platform-admin-api/src/main.ts:177", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 platform-admin-api/src/main.ts:177"}, "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-041f96985808758d", "name": "Stray `console.log` in TS/JS \u2014 platform-admin-api/src/db.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 platform-admin-api/src/db.ts:37"}, "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-c948c129ff8aeee2", "name": "Stray `console.log` in TS/JS \u2014 platform-admin-api/src/lib/sync-scheduler.ts:93", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 platform-admin-api/src/lib/sync-scheduler.ts:93"}, "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-25576783271d7c64", "name": "Stray `console.log` in TS/JS \u2014 platform-admin-api/src/lib/auto-recharge.ts:146", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 platform-admin-api/src/lib/auto-recharge.ts:146"}, "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-dd18be8b1ac357c2", "name": "Stray `console.log` in TS/JS \u2014 platform-admin-api/src/routes/stripe-webhook.ts:227", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 platform-admin-api/src/routes/stripe-webhook.ts:227"}, "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-48ca81577ab1c04b", "name": "Stray `console.log` in TS/JS \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/cron-sync/index.ts:111", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/cron-sync/index.ts:111"}, "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-df7ef3b7f54aee89", "name": "Stray `console.log` in TS/JS \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/payments-webhook/index.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/payments-webhook/index.ts:44"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-52ec20f8496cb81c", "name": "Stray `console.log` in TS/JS \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/ghl-proxy/index.ts:377", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/ghl-proxy/index.ts:377"}, "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-f4e0118f428c229b", "name": "Stray `console.log` in TS/JS \u2014 my-acq-coach-5b771b53/supabase/functions/cron-sync/index.ts:117", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 my-acq-coach-5b771b53/supabase/functions/cron-sync/index.ts:117"}, "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-fffa4770b210e49f", "name": "Stray `console.log` in TS/JS \u2014 my-acq-coach-5b771b53/supabase/functions/payments-webhook/index.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 my-acq-coach-5b771b53/supabase/functions/payments-webhook/index.ts:44"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e951e7c6794cb514", "name": "Stray `console.log` in TS/JS \u2014 my-acq-coach-5b771b53/supabase/functions/ghl-proxy/index.ts:377", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 my-acq-coach-5b771b53/supabase/functions/ghl-proxy/index.ts:377"}, "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-685bf8e65864a76e", "name": "Icon-only button without accessible name \u2014 my-acq-coach-5b771b53/src/RepView.jsx:1554", "shortDescription": {"text": "Icon-only button without accessible name \u2014 my-acq-coach-5b771b53/src/RepView.jsx:1554"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-369be76b0121373b", "name": "Icon-only button without accessible name \u2014 my-acq-coach-5b771b53/src/ACQCoach.jsx:559", "shortDescription": {"text": "Icon-only button without accessible name \u2014 my-acq-coach-5b771b53/src/ACQCoach.jsx:559"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-afc1827703968285", "name": "Icon-only button without accessible name \u2014 my-acq-coach-5b771b53/src/RepDrillDown.jsx:220", "shortDescription": {"text": "Icon-only button without accessible name \u2014 my-acq-coach-5b771b53/src/RepDrillDown.jsx:220"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2b053fb7bb8f97b4", "name": "Stray `console.log` in TS/JS \u2014 my-acq-coach-5b771b53/src/ccSsoHandoff.ts:146", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 my-acq-coach-5b771b53/src/ccSsoHandoff.ts:146"}, "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-c621c81765ca4053", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 my-acq-coach-5b771b53/src/components/ui/chart.tsx:70", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 my-acq-coach-5b771b53/src/components/ui/chart.tsx:70"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bff9176d09ded82b", "name": "`truncate` class without `title=` for hover reveal \u2014 my-acq-coach-5b771b53/src/admin/SyncRunDetailSheet.tsx:83", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 my-acq-coach-5b771b53/src/admin/SyncRunDetailSheet.tsx:83"}, "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-621a148c4fc66326", "name": "`truncate` class without `title=` for hover reveal \u2014 my-acq-coach-5b771b53/src/admin/CustomerDetailSheet.tsx:198", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 my-acq-coach-5b771b53/src/admin/CustomerDetailSheet.tsx:198"}, "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-53c59004035bc950", "name": "`truncate` class without `title=` for hover reveal \u2014 my-acq-coach-5b771b53/src/pages/SuperAdmin.tsx:75", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 my-acq-coach-5b771b53/src/pages/SuperAdmin.tsx:75"}, "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-451ae85198b98bd8", "name": "`truncate` class without `title=` for hover reveal \u2014 my-acq-coach-5b771b53/src/pages/Team.tsx:229", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 my-acq-coach-5b771b53/src/pages/Team.tsx:229"}, "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-054114feb45949e7", "name": "`truncate` class without `title=` for hover reveal \u2014 my-acq-coach-5b771b53/src/pages/Billing.tsx:555", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 my-acq-coach-5b771b53/src/pages/Billing.tsx:555"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9440dd7833b8764a", "name": "Icon-only button without accessible name \u2014 platform-launcher/src/AccountSettings.tsx:104", "shortDescription": {"text": "Icon-only button without accessible name \u2014 platform-launcher/src/AccountSettings.tsx:104"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9338318a95b68be1", "name": "Stray `console.log` in TS/JS \u2014 platform-launcher/src/admin/Toast.tsx:79", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 platform-launcher/src/admin/Toast.tsx:79"}, "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-9ae07911625464d9", "name": "Stray `console.log` in TS/JS \u2014 acq-coach-selfhost/apps/web/supabase/functions/cron-sync/index.ts:117", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 acq-coach-selfhost/apps/web/supabase/functions/cron-sync/index.ts:117"}, "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-b9d11a1f02b05ecb", "name": "Stray `console.log` in TS/JS \u2014 acq-coach-selfhost/apps/web/supabase/functions/payments-webhook/index.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 acq-coach-selfhost/apps/web/supabase/functions/payments-webhook/index.ts:44"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-768e5f5eb38f372a", "name": "Stray `console.log` in TS/JS \u2014 acq-coach-selfhost/apps/web/supabase/functions/ghl-proxy/index.ts:383", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 acq-coach-selfhost/apps/web/supabase/functions/ghl-proxy/index.ts:383"}, "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-b55ad7bbde2a838c", "name": "Icon-only button without accessible name \u2014 acq-coach-selfhost/apps/web/src/RepView.jsx:1554", "shortDescription": {"text": "Icon-only button without accessible name \u2014 acq-coach-selfhost/apps/web/src/RepView.jsx:1554"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9cfa53b850c42ccd", "name": "Icon-only button without accessible name \u2014 acq-coach-selfhost/apps/web/src/ACQCoach.jsx:559", "shortDescription": {"text": "Icon-only button without accessible name \u2014 acq-coach-selfhost/apps/web/src/ACQCoach.jsx:559"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-65e7d3c5f158e095", "name": "Icon-only button without accessible name \u2014 acq-coach-selfhost/apps/web/src/RepDrillDown.jsx:220", "shortDescription": {"text": "Icon-only button without accessible name \u2014 acq-coach-selfhost/apps/web/src/RepDrillDown.jsx:220"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-154fdee80ce42b83", "name": "Stray `console.log` in TS/JS \u2014 acq-coach-selfhost/apps/web/src/ccSsoHandoff.ts:146", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 acq-coach-selfhost/apps/web/src/ccSsoHandoff.ts:146"}, "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-5117c2e3634adf0c", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 acq-coach-selfhost/apps/web/src/components/ui/chart.tsx:70", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 acq-coach-selfhost/apps/web/src/components/ui/chart.tsx:70"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5e1a1ba21c563b4b", "name": "`truncate` class without `title=` for hover reveal \u2014 acq-coach-selfhost/apps/web/src/admin/SyncRunDetailSheet.tsx:83", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 acq-coach-selfhost/apps/web/src/admin/SyncRunDetailSheet.tsx:83"}, "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-320142f626ac64c6", "name": "`truncate` class without `title=` for hover reveal \u2014 acq-coach-selfhost/apps/web/src/admin/CustomerDetailSheet.tsx:198", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 acq-coach-selfhost/apps/web/src/admin/CustomerDetailSheet.tsx:198"}, "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-1d411e8e1b1f3fb6", "name": "`truncate` class without `title=` for hover reveal \u2014 acq-coach-selfhost/apps/web/src/pages/SuperAdmin.tsx:75", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 acq-coach-selfhost/apps/web/src/pages/SuperAdmin.tsx:75"}, "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-1740ce0a0e07c92c", "name": "`truncate` class without `title=` for hover reveal \u2014 acq-coach-selfhost/apps/web/src/pages/Team.tsx:229", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 acq-coach-selfhost/apps/web/src/pages/Team.tsx:229"}, "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-4dea9ef6c96727b6", "name": "`truncate` class without `title=` for hover reveal \u2014 acq-coach-selfhost/apps/web/src/pages/Billing.tsx:555", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 acq-coach-selfhost/apps/web/src/pages/Billing.tsx:555"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3fa17ed960a15311", "name": "Stray `console.log` in TS/JS \u2014 acq-coach-selfhost/supabase/functions/cron-sync/index.ts:117", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 acq-coach-selfhost/supabase/functions/cron-sync/index.ts:117"}, "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-a246249b5b50228b", "name": "Stray `console.log` in TS/JS \u2014 acq-coach-selfhost/supabase/functions/payments-webhook/index.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 acq-coach-selfhost/supabase/functions/payments-webhook/index.ts:44"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-53b26fd90b581de5", "name": "Stray `console.log` in TS/JS \u2014 acq-coach-selfhost/supabase/functions/main/index.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 acq-coach-selfhost/supabase/functions/main/index.ts:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-019f793a59fa1de5", "name": "Stray `console.log` in TS/JS \u2014 acq-coach-selfhost/supabase/functions/ghl-proxy/index.ts:377", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 acq-coach-selfhost/supabase/functions/ghl-proxy/index.ts:377"}, "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-c36e3318230464bc", "name": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/backups/backend-export/edge-functions/payments-webhook/index.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/backups/backend-export/edge-functions/payments-webhook/index.ts:50"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dbca869ea2cd8146", "name": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/backups/backend-export/edge-functions/delete-tenant/index.ts:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/backups/backend-export/edge-functions/delete-tenant/index.ts:73"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9f9d278037b883d0", "name": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/backups/backend-export/edge-functions/sync-resume-cron/index.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/backups/backend-export/edge-functions/sync-resume-cron/index.ts:49"}, "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-353b66defd85e2c8", "name": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/backups/backend-export/edge-functions/ghl-sync/index.ts:279", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/backups/backend-export/edge-functions/ghl-sync/index.ts:279"}, "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-7c70663ecc762786", "name": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/backups/backend-export/edge-functions/sync-all-tenants-cron/index.", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/backups/backend-export/edge-functions/sync-all-tenants-cron/index.ts:49"}, "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-ce58e0c05c6469e2", "name": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/supabase/functions/payments-webhook/index.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/supabase/functions/payments-webhook/index.ts:50"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2cdc1e80e8300e4c", "name": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/supabase/functions/delete-tenant/index.ts:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/supabase/functions/delete-tenant/index.ts:73"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c0eff8c060b057f9", "name": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/supabase/functions/sync-resume-cron/index.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/supabase/functions/sync-resume-cron/index.ts:49"}, "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-98b5b0bd89d9a5fe", "name": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/supabase/functions/ghl-sync/index.ts:279", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/supabase/functions/ghl-sync/index.ts:279"}, "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-aa7c09d2d60d0fef", "name": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/supabase/functions/sync-all-tenants-cron/index.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/supabase/functions/sync-all-tenants-cron/index.ts:49"}, "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-0b559ea1c2105dd4", "name": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/src/ccSsoHandoff.ts:146", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/src/ccSsoHandoff.ts:146"}, "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-ca3395173c7552d6", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 closercontrolleadintel/src/components/ui/chart.tsx:70", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 closercontrolleadintel/src/components/ui/chart.tsx:70"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cbc26015639930ef", "name": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/apps/web/supabase/functions/payments-webhook/index.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/apps/web/supabase/functions/payments-webhook/index.ts:50"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6c894f76357a1ae8", "name": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/apps/web/supabase/functions/delete-tenant/index.ts:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/apps/web/supabase/functions/delete-tenant/index.ts:73"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c3a4338579741ff5", "name": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/apps/web/supabase/functions/sync-resume-cron/index.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/apps/web/supabase/functions/sync-resume-cron/index.ts:49"}, "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-ee86fa4c18deb155", "name": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/apps/web/supabase/functions/ghl-sync/index.ts:279", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/apps/web/supabase/functions/ghl-sync/index.ts:279"}, "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-4659f6cd303f2e8e", "name": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/apps/web/supabase/functions/sync-all-tenants-cron/index.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/apps/web/supabase/functions/sync-all-tenants-cron/index.ts:49"}, "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-5c713c71735f2f79", "name": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/apps/web/src/ccSsoHandoff.ts:146", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/apps/web/src/ccSsoHandoff.ts:146"}, "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-09a914edfd3a0e72", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 leadintel-selfhost/apps/web/src/components/ui/chart.tsx:70", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 leadintel-selfhost/apps/web/src/components/ui/chart.tsx:70"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-41a16b9663c32bc2", "name": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/supabase/functions/payments-webhook/index.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/supabase/functions/payments-webhook/index.ts:50"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ac1ed15f55fc59fc", "name": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/supabase/functions/delete-tenant/index.ts:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/supabase/functions/delete-tenant/index.ts:73"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cad803b5f915d455", "name": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/supabase/functions/sync-resume-cron/index.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/supabase/functions/sync-resume-cron/index.ts:49"}, "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-6e5e74a5ce361a3d", "name": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/supabase/functions/ghl-sync/index.ts:279", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/supabase/functions/ghl-sync/index.ts:279"}, "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-171b422cad565756", "name": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/supabase/functions/sync-all-tenants-cron/index.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/supabase/functions/sync-all-tenants-cron/index.ts:49"}, "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-37232d3cf2f1a058", "name": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/supabase/functions/main/index.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/supabase/functions/main/index.ts:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-592533143f6f0fa5", "name": "Dockerfile runs as root: platform-admin-api/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: platform-admin-api/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2c767d0bb3e27c2a", "name": "Docker base image is tag-pinned but not digest-pinned: denoland/deno:alpine-2.0.6", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: denoland/deno:alpine-2.0.6"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ae658166058fdf20", "name": "Dockerfile runs as root: platform-launcher/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: platform-launcher/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a435fef75b415f4a", "name": "Docker base image is tag-pinned but not digest-pinned: node:20-bookworm-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-bookworm-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9eab1b231387e877", "name": "Docker base image is tag-pinned but not digest-pinned: nginx:alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: nginx:alpine"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1fa4a79bd1a975fd", "name": "Dockerfile runs as root: acq-coach-selfhost/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: acq-coach-selfhost/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-30795feb3bf20df8", "name": "Docker base image is tag-pinned but not digest-pinned: node:20-bookworm-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-bookworm-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c43ca9c5b253189c", "name": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-939c58c38a1e8722", "name": "Dockerfile runs as root: leadintel-selfhost/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: leadintel-selfhost/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b2491a0bf065bae1", "name": "Docker base image is tag-pinned but not digest-pinned: node:20-bookworm-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-bookworm-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-df8b7ba5bf5c975b", "name": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e6910ee0dcc06264", "name": "Insecure pattern 'cors_wildcard' in platform-admin-api/src/main.ts:184", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in platform-admin-api/src/main.ts:184"}, "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-1b0942a3dad7dc03", "name": "Possible secret in platform-db/Makefile", "shortDescription": {"text": "Possible secret in platform-db/Makefile"}, "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-8fe5f47384b18b7f", "name": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/backups/migration-export/functions/cron-sync/index.ts:12", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/backups/migration-export/functions/cron-sync/index.ts:12"}, "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-04f1c67f907c5642", "name": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/backups/migration-export/functions/payments-webhook/index.ts:8", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/backups/migration-export/functions/payments-webhook/index.ts:8"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c8f379621c2f7b75", "name": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/backups/migration-export/functions/create-topup-session/index.", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/backups/migration-export/functions/create-topup-session/index.ts:8"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-548160bbb3e823e2", "name": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/backups/migration-export/functions/ai-chat/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/backups/migration-export/functions/ai-chat/index.ts:4"}, "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-0af8e71587e958ea", "name": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/backups/migration-export/functions/auto-recharge-cron/index.ts", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/backups/migration-export/functions/auto-recharge-cron/index.ts:10"}, "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-efb12154c993287b", "name": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/backups/migration-export/functions/transcribe/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/backups/migration-export/functions/transcribe/index.ts:4"}, "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-1963b4d711ce5e5b", "name": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/backups/migration-export/functions/admin-api/index.ts:6", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/backups/migration-export/functions/admin-api/index.ts:6"}, "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-f1327b69329653b3", "name": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/backups/migration-export/functions/ghl-proxy/index.ts:5", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/backups/migration-export/functions/ghl-proxy/index.ts:5"}, "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-91cf82a98f7c9cfa", "name": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/backups/migration-export/functions/ai-tts/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/backups/migration-export/functions/ai-tts/index.ts:4"}, "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-0f4bec76ac20f1f9", "name": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/cron-sync/index.ts:13", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/cron-sync/index.ts:13"}, "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-ca80061f94bccb77", "name": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/payments-webhook/index.ts:8", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/payments-webhook/index.ts:8"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-40b9e33dedcd18c2", "name": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/send-digest/index.ts:12", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/send-digest/index.ts:12"}, "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-0b62987ab2fb50a3", "name": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/create-topup-session/index.ts:8", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/create-topup-session/index.ts:8"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cf41a0f3a26c4676", "name": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/ai-chat/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/ai-chat/index.ts:4"}, "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-a3e4340e0fd93eba", "name": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/auto-recharge-cron/index.ts:10", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/auto-recharge-cron/index.ts:10"}, "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-7071159b559f44b6", "name": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/transcribe/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/transcribe/index.ts:4"}, "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-fb2180067e781e27", "name": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/admin-api/index.ts:6", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/admin-api/index.ts:6"}, "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-25c80428b93bbca2", "name": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/ghl-proxy/index.ts:5", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/ghl-proxy/index.ts:5"}, "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-fc20d5253db124c5", "name": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/ai-tts/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/ai-tts/index.ts:4"}, "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-a7164c8a280753d9", "name": "Insecure pattern 'dangerous_innerhtml' in my-acq-coach-5b771b53/src/components/ui/chart.tsx:70", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in my-acq-coach-5b771b53/src/components/ui/chart.tsx:70"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-253ee5a8821b1f45", "name": "Insecure pattern 'local_storage_auth_token' in platform-launcher/README.md:51", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in platform-launcher/README.md:51"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-84a053a5a6ec1e0d", "name": "Possible secret in acq-coach-selfhost/Makefile", "shortDescription": {"text": "Possible secret in acq-coach-selfhost/Makefile"}, "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-89bcb77497306c36", "name": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/apps/web/supabase/functions/cron-sync/index.ts:13", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/apps/web/supabase/functions/cron-sync/index.ts:13"}, "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-af18af97efa91ba8", "name": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/apps/web/supabase/functions/payments-webhook/index.ts:8", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/apps/web/supabase/functions/payments-webhook/index.ts:8"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-da0694029bbe7f6d", "name": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/apps/web/supabase/functions/create-topup-session/index.ts:8", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/apps/web/supabase/functions/create-topup-session/index.ts:8"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-64fbacf892b6c2ca", "name": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/apps/web/supabase/functions/ai-chat/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/apps/web/supabase/functions/ai-chat/index.ts:4"}, "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-84daef27b4f50ede", "name": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/apps/web/supabase/functions/auto-recharge-cron/index.ts:10", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/apps/web/supabase/functions/auto-recharge-cron/index.ts:10"}, "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-a7328c13733a92e1", "name": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/apps/web/supabase/functions/transcribe/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/apps/web/supabase/functions/transcribe/index.ts:4"}, "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-90f43b931e1cba70", "name": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/apps/web/supabase/functions/admin-api/index.ts:6", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/apps/web/supabase/functions/admin-api/index.ts:6"}, "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-e45579734cf70079", "name": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/apps/web/supabase/functions/ghl-proxy/index.ts:5", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/apps/web/supabase/functions/ghl-proxy/index.ts:5"}, "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-f31e0a099b2c1285", "name": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/apps/web/supabase/functions/ai-tts/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/apps/web/supabase/functions/ai-tts/index.ts:4"}, "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-a3c2d9cc22667fa6", "name": "Insecure pattern 'dangerous_innerhtml' in acq-coach-selfhost/apps/web/src/components/ui/chart.tsx:70", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in acq-coach-selfhost/apps/web/src/components/ui/chart.tsx:70"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f91b39fdf5fe1711", "name": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/cron-sync/index.ts:13", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/cron-sync/index.ts:13"}, "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-dcdc607aafb6a980", "name": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/payments-webhook/index.ts:8", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/payments-webhook/index.ts:8"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e53e7356c3c75f5c", "name": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/send-digest/index.ts:12", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/send-digest/index.ts:12"}, "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-22f7a4df10697a8a", "name": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/create-topup-session/index.ts:8", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/create-topup-session/index.ts:8"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bff74c7736fc13f0", "name": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/ai-chat/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/ai-chat/index.ts:4"}, "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-1ca369cb42505457", "name": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/auto-recharge-cron/index.ts:10", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/auto-recharge-cron/index.ts:10"}, "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-e9d64edcb4aab86b", "name": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/transcribe/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/transcribe/index.ts:4"}, "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-ad89d57c9713066e", "name": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/admin-api/index.ts:6", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/admin-api/index.ts:6"}, "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-64d5478257879ba5", "name": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/ghl-proxy/index.ts:5", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/ghl-proxy/index.ts:5"}, "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-c1c4cc9384c92910", "name": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/ai-tts/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/ai-tts/index.ts:4"}, "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-adcfa4b5262a9d6f", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/create-tenant/index.ts:", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/create-tenant/index.ts:5"}, "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-f9589ed8f495aa8b", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/analyze-lead/index.ts:7", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/analyze-lead/index.ts:7"}, "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-6fdc91efd0fdab67", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/remove-saved-card/index", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/remove-saved-card/index.ts:5"}, "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-27d4779320c0806a", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/save-tenant-field-mappi", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/save-tenant-field-mappings/index.ts:4"}, "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-8331adcd902e0493", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/payments-webhook/index.", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/payments-webhook/index.ts:5"}, "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-8e296d9b2923738e", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/validate-ghl-credential", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/validate-ghl-credentials/index.ts:5"}, "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-4694f1f0711f1926", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/delete-tenant/index.ts:", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/delete-tenant/index.ts:4"}, "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-37101e1b37908a04", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/tts-briefing/index.ts:7", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/tts-briefing/index.ts:7"}, "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-fbdebf2e7c1a557c", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/revoke-invitation/index", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/revoke-invitation/index.ts:4"}, "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-5299101444c20275", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/generate-day-briefing/i", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/generate-day-briefing/index.ts:7"}, "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-7ae470630899bb14", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/preview-invitation/inde", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/preview-invitation/index.ts:6"}, "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-8025619e1d30063a", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/map-all-tenants-fields/", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/map-all-tenants-fields/index.ts:4"}, "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-8f4316e94a097442", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/sync-resume-cron/index.", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/sync-resume-cron/index.ts:7"}, "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-de267cde01cdf004", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/log-admin-event/index.t", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/log-admin-event/index.ts:4"}, "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-63d0ea0586de7bc3", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/invite-user/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/invite-user/index.ts:4"}, "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-8c9676464cd50c41", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/check-notes-access/inde", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/check-notes-access/index.ts:8"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c1a08b45423946d9", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/ai-analyze/index.ts:6", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/ai-analyze/index.ts:6"}, "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-97e461909ac168fa", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/ghl-sync/index.ts:10", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/ghl-sync/index.ts:10"}, "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-5ae54f4bf9736b58", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/update-tenant-billing-m", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/update-tenant-billing-mode/index.ts:4"}, "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-4e6054fbcf5b57b0", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/remove-tenant-member/in", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/remove-tenant-member/index.ts:4"}, "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-42b6d03f16018912", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/accept-invitation/index", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/accept-invitation/index.ts:7"}, "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-a1a9c638d23ad7ed", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/save-tenant-pipelines/i", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/save-tenant-pipelines/index.ts:8"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c6f950d2e74d82ea", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/sync-all-tenants-cron/i", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/sync-all-tenants-cron/index.ts:6"}, "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-7acab5dff147827b", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/discover-tenant-fields/", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/discover-tenant-fields/index.ts:4"}, "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-080313caf3df908b", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/update-tenant/index.ts:", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/update-tenant/index.ts:5"}, "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-129c75dfdf8cef90", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/create-checkout-session", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/create-checkout-session/index.ts:5"}, "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-9a4739a6a22bfa4e", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/list-tenant-pipelines/i", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/list-tenant-pipelines/index.ts:8"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0427653c0e7002f8", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/save-billing-settings/i", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/save-billing-settings/index.ts:4"}, "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-3670130f80e5aafe", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/create-tenant/index.ts:5", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/create-tenant/index.ts:5"}, "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-7bedd78390a0277a", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/analyze-lead/index.ts:7", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/analyze-lead/index.ts:7"}, "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-c1b0355e7995e666", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/remove-saved-card/index.ts:5", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/remove-saved-card/index.ts:5"}, "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-7a1b6807fc91d53e", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/save-tenant-field-mappings/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/save-tenant-field-mappings/index.ts:4"}, "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-d74f5275fcf781f1", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/payments-webhook/index.ts:5", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/payments-webhook/index.ts:5"}, "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-c0504d49985c0602", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/validate-ghl-credentials/index.ts:5", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/validate-ghl-credentials/index.ts:5"}, "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-2949b413d14745af", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/delete-tenant/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/delete-tenant/index.ts:4"}, "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-cd01da45f0f2353b", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/tts-briefing/index.ts:7", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/tts-briefing/index.ts:7"}, "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-50fdf7f2a40c8d85", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/revoke-invitation/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/revoke-invitation/index.ts:4"}, "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-6ccb167d50fbcbd1", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/generate-day-briefing/index.ts:7", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/generate-day-briefing/index.ts:7"}, "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-398f1f96b037c9f0", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/preview-invitation/index.ts:6", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/preview-invitation/index.ts:6"}, "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-4b99c310783c7eff", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/map-all-tenants-fields/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/map-all-tenants-fields/index.ts:4"}, "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-9df453bb5fe5ff32", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/sync-resume-cron/index.ts:7", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/sync-resume-cron/index.ts:7"}, "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-4b2cf8b71a16be8e", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/log-admin-event/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/log-admin-event/index.ts:4"}, "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-26074644a82895ea", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/invite-user/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/invite-user/index.ts:4"}, "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-1945e7abb931ac8d", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/check-notes-access/index.ts:8", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/check-notes-access/index.ts:8"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fde73bda9e507c52", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/ai-analyze/index.ts:7", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/ai-analyze/index.ts:7"}, "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-e3541bcb053ac9cd", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/ghl-sync/index.ts:10", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/ghl-sync/index.ts:10"}, "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-e5a7936e4e47ed09", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/update-tenant-billing-mode/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/update-tenant-billing-mode/index.ts:4"}, "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-ae01dbd58f2ab00b", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/remove-tenant-member/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/remove-tenant-member/index.ts:4"}, "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-05549a2ee186ad74", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/accept-invitation/index.ts:7", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/accept-invitation/index.ts:7"}, "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-8ee6beac684cde66", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/save-tenant-pipelines/index.ts:8", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/save-tenant-pipelines/index.ts:8"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e0578324f2c8fdec", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/sync-all-tenants-cron/index.ts:6", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/sync-all-tenants-cron/index.ts:6"}, "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-e99fa60e5aae9f94", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/discover-tenant-fields/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/discover-tenant-fields/index.ts:4"}, "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-1cd486efdfc70e66", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/update-tenant/index.ts:5", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/update-tenant/index.ts:5"}, "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-c7a163fd2b016e66", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/create-checkout-session/index.ts:5", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/create-checkout-session/index.ts:5"}, "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-e522de23f22b42e8", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/list-tenant-pipelines/index.ts:8", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/list-tenant-pipelines/index.ts:8"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7ef3179034d1f790", "name": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/save-billing-settings/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/save-billing-settings/index.ts:4"}, "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-ff301f9ae1f4f6c5", "name": "Insecure pattern 'dangerous_innerhtml' in closercontrolleadintel/src/components/ui/chart.tsx:70", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in closercontrolleadintel/src/components/ui/chart.tsx:70"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c8fa2e10b3925c3b", "name": "Possible secret in leadintel-selfhost/Makefile", "shortDescription": {"text": "Possible secret in leadintel-selfhost/Makefile"}, "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-1b5635f071b9bf94", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/create-tenant/index.ts:5", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/create-tenant/index.ts:5"}, "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-4500f582532821ed", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/analyze-lead/index.ts:7", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/analyze-lead/index.ts:7"}, "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-f27325eefdd46bd8", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/remove-saved-card/index.ts:5", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/remove-saved-card/index.ts:5"}, "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-85cdd6ad89f2e821", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/save-tenant-field-mappings/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/save-tenant-field-mappings/index.ts:4"}, "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-d78cb03e6d512668", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/payments-webhook/index.ts:5", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/payments-webhook/index.ts:5"}, "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-46969047f08a6567", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/validate-ghl-credentials/index.ts:5", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/validate-ghl-credentials/index.ts:5"}, "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-270cce88e3665527", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/delete-tenant/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/delete-tenant/index.ts:4"}, "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-e08c5e89f7c51974", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/tts-briefing/index.ts:7", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/tts-briefing/index.ts:7"}, "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-81f6170228a11d61", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/revoke-invitation/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/revoke-invitation/index.ts:4"}, "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-1a1150b84b464cdb", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/generate-day-briefing/index.ts:7", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/generate-day-briefing/index.ts:7"}, "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-a9eb982addfc81f2", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/preview-invitation/index.ts:6", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/preview-invitation/index.ts:6"}, "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-988ca099a2fc03bb", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/map-all-tenants-fields/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/map-all-tenants-fields/index.ts:4"}, "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-183211329cdac0ca", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/sync-resume-cron/index.ts:7", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/sync-resume-cron/index.ts:7"}, "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-7db2e93fc51b27f3", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/log-admin-event/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/log-admin-event/index.ts:4"}, "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-0867b9637de81b53", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/invite-user/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/invite-user/index.ts:4"}, "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-2cbbb57771b12801", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/check-notes-access/index.ts:8", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/check-notes-access/index.ts:8"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4422b48bd468a7af", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/ai-analyze/index.ts:7", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/ai-analyze/index.ts:7"}, "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-512d02e1cf92c2a5", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/ghl-sync/index.ts:10", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/ghl-sync/index.ts:10"}, "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-bd93bd60fe32b527", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/update-tenant-billing-mode/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/update-tenant-billing-mode/index.ts:4"}, "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-c01bec16565df1d4", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/remove-tenant-member/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/remove-tenant-member/index.ts:4"}, "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-621f75c5af32ce71", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/accept-invitation/index.ts:7", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/accept-invitation/index.ts:7"}, "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-b3b13bd53e52a15f", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/save-tenant-pipelines/index.ts:8", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/save-tenant-pipelines/index.ts:8"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-09a1e6f1b6850e13", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/sync-all-tenants-cron/index.ts:6", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/sync-all-tenants-cron/index.ts:6"}, "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-3bf73aae7add0def", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/discover-tenant-fields/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/discover-tenant-fields/index.ts:4"}, "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-27de6ce6d3114b3b", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/update-tenant/index.ts:5", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/update-tenant/index.ts:5"}, "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-9324c60e74b7ec82", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/create-checkout-session/index.ts:5", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/create-checkout-session/index.ts:5"}, "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-859f384b078b785c", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/list-tenant-pipelines/index.ts:8", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/list-tenant-pipelines/index.ts:8"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d1a05a89dd2adebb", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/save-billing-settings/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/save-billing-settings/index.ts:4"}, "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-3d931ae58f274d3d", "name": "Insecure pattern 'dangerous_innerhtml' in leadintel-selfhost/apps/web/src/components/ui/chart.tsx:70", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in leadintel-selfhost/apps/web/src/components/ui/chart.tsx:70"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8d5b1a0b774487f1", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/create-tenant/index.ts:5", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/create-tenant/index.ts:5"}, "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-779fd7eec4ad6cf5", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/analyze-lead/index.ts:7", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/analyze-lead/index.ts:7"}, "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-8e3bb09dfb9315c7", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/remove-saved-card/index.ts:5", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/remove-saved-card/index.ts:5"}, "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-d1403898fad7d644", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/save-tenant-field-mappings/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/save-tenant-field-mappings/index.ts:4"}, "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-33de0593afa5dbf1", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/payments-webhook/index.ts:5", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/payments-webhook/index.ts:5"}, "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-b4d1dfc290512ed8", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/validate-ghl-credentials/index.ts:5", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/validate-ghl-credentials/index.ts:5"}, "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-88f7a70fdffbcc65", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/delete-tenant/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/delete-tenant/index.ts:4"}, "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-5f7978342c5104b1", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/tts-briefing/index.ts:7", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/tts-briefing/index.ts:7"}, "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-303eb743f5982099", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/revoke-invitation/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/revoke-invitation/index.ts:4"}, "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-1fd61cadd44a77aa", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/generate-day-briefing/index.ts:7", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/generate-day-briefing/index.ts:7"}, "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-9702cd96b29a672c", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/preview-invitation/index.ts:6", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/preview-invitation/index.ts:6"}, "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-f30f47c510cbe447", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/map-all-tenants-fields/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/map-all-tenants-fields/index.ts:4"}, "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-444ac3d6b892d3ae", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/sync-resume-cron/index.ts:7", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/sync-resume-cron/index.ts:7"}, "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-6ae21d95ae9e4d8a", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/log-admin-event/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/log-admin-event/index.ts:4"}, "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-083ff4b8ea13eca9", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/invite-user/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/invite-user/index.ts:4"}, "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-e57fa2150f89529b", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/check-notes-access/index.ts:8", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/check-notes-access/index.ts:8"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-21bcbffcde949c3e", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/ai-analyze/index.ts:7", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/ai-analyze/index.ts:7"}, "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-42d85cd1e6a28d27", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/ghl-sync/index.ts:10", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/ghl-sync/index.ts:10"}, "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-b1da63a4e2ce1d0d", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/update-tenant-billing-mode/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/update-tenant-billing-mode/index.ts:4"}, "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-4ecd3db523f638f1", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/remove-tenant-member/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/remove-tenant-member/index.ts:4"}, "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-4327bd0122cf6994", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/accept-invitation/index.ts:7", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/accept-invitation/index.ts:7"}, "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-c5374e1115e59985", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/save-tenant-pipelines/index.ts:8", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/save-tenant-pipelines/index.ts:8"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-939aef3f13317f91", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/sync-all-tenants-cron/index.ts:6", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/sync-all-tenants-cron/index.ts:6"}, "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-e7d15c19442b8f28", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/discover-tenant-fields/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/discover-tenant-fields/index.ts:4"}, "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-e7501c13b5160a96", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/update-tenant/index.ts:5", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/update-tenant/index.ts:5"}, "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-e26d2446585dc301", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/create-checkout-session/index.ts:5", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/create-checkout-session/index.ts:5"}, "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-a108645d7ce6dccb", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/list-tenant-pipelines/index.ts:8", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/list-tenant-pipelines/index.ts:8"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-55a6087da30a955c", "name": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/save-billing-settings/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/save-billing-settings/index.ts:4"}, "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-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ab7988a426d14dab", "name": "Very large file: my-acq-coach-5b771b53/backups/migration-export/functions/ghl-proxy/index.ts (1934 lines)", "shortDescription": {"text": "Very large file: my-acq-coach-5b771b53/backups/migration-export/functions/ghl-proxy/index.ts (1934 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-61cce95e64be2ef9", "name": "Very large file: my-acq-coach-5b771b53/supabase/functions/ghl-proxy/index.ts (1997 lines)", "shortDescription": {"text": "Very large file: my-acq-coach-5b771b53/supabase/functions/ghl-proxy/index.ts (1997 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-c1e9e4539def0154", "name": "Very large file: my-acq-coach-5b771b53/src/RepView.jsx (2768 lines)", "shortDescription": {"text": "Very large file: my-acq-coach-5b771b53/src/RepView.jsx (2768 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-9dbc08f27cfcb7ff", "name": "Very large file: my-acq-coach-5b771b53/src/ACQCoach.jsx (5753 lines)", "shortDescription": {"text": "Very large file: my-acq-coach-5b771b53/src/ACQCoach.jsx (5753 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-35c65d8b11193968", "name": "Very large file: my-acq-coach-5b771b53/src/pages/SuperAdmin.tsx (956 lines)", "shortDescription": {"text": "Very large file: my-acq-coach-5b771b53/src/pages/SuperAdmin.tsx (956 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-ce628f252d4a5493", "name": "Very large file: acq-coach-selfhost/apps/web/supabase/functions/ghl-proxy/index.ts (1940 lines)", "shortDescription": {"text": "Very large file: acq-coach-selfhost/apps/web/supabase/functions/ghl-proxy/index.ts (1940 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-cd4802a9d0db3746", "name": "Very large file: acq-coach-selfhost/apps/web/src/RepView.jsx (2768 lines)", "shortDescription": {"text": "Very large file: acq-coach-selfhost/apps/web/src/RepView.jsx (2768 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-b4a5341690ed2a8f", "name": "Very large file: acq-coach-selfhost/apps/web/src/ACQCoach.jsx (5753 lines)", "shortDescription": {"text": "Very large file: acq-coach-selfhost/apps/web/src/ACQCoach.jsx (5753 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-c3f4e8f4e4174eec", "name": "Very large file: acq-coach-selfhost/apps/web/src/pages/SuperAdmin.tsx (956 lines)", "shortDescription": {"text": "Very large file: acq-coach-selfhost/apps/web/src/pages/SuperAdmin.tsx (956 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-2405e11c2874cdb0", "name": "Very large file: acq-coach-selfhost/supabase/functions/ghl-proxy/index.ts (1997 lines)", "shortDescription": {"text": "Very large file: acq-coach-selfhost/supabase/functions/ghl-proxy/index.ts (1997 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-f7ee1f0edd252b5a", "name": "Very large file: closercontrolleadintel/backups/backend-export/edge-functions/ghl-sync/index.ts (1507 lines)", "shortDescription": {"text": "Very large file: closercontrolleadintel/backups/backend-export/edge-functions/ghl-sync/index.ts (1507 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-d8f6f2f56e42ecc5", "name": "Very large file: closercontrolleadintel/supabase/functions/ghl-sync/index.ts (1524 lines)", "shortDescription": {"text": "Very large file: closercontrolleadintel/supabase/functions/ghl-sync/index.ts (1524 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-126444db8074b39f", "name": "Very large file: closercontrolleadintel/src/pages/LeadIntel.tsx (1313 lines)", "shortDescription": {"text": "Very large file: closercontrolleadintel/src/pages/LeadIntel.tsx (1313 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-5637aca6683bfd14", "name": "Very large file: leadintel-selfhost/apps/web/supabase/functions/ghl-sync/index.ts (1524 lines)", "shortDescription": {"text": "Very large file: leadintel-selfhost/apps/web/supabase/functions/ghl-sync/index.ts (1524 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-f871d8477f7d38b9", "name": "Very large file: leadintel-selfhost/apps/web/src/pages/LeadIntel.tsx (1313 lines)", "shortDescription": {"text": "Very large file: leadintel-selfhost/apps/web/src/pages/LeadIntel.tsx (1313 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-d15b7c3fbba2bd91", "name": "Very large file: leadintel-selfhost/supabase/functions/ghl-sync/index.ts (1569 lines)", "shortDescription": {"text": "Very large file: leadintel-selfhost/supabase/functions/ghl-sync/index.ts (1569 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "20 test file(s) for 730 source file(s) (ratio 0.03). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 213 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 198 placeholder/mock markers across 68 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, ci. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci. 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-499121537ec3db67", "name": "Agent instruction/config may expose a secret: leadintel-selfhost/CLAUDE.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: leadintel-selfhost/CLAUDE.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-785a2a77eed74e55", "name": "Commented-code block (5 lines) in platform-admin-api/src/auth.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in platform-admin-api/src/auth.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-b0e9371f207fe32c", "name": "Commented-code block (6 lines) in platform-admin-api/src/lib/wallet-mirror.ts:4", "shortDescription": {"text": "Commented-code block (6 lines) in platform-admin-api/src/lib/wallet-mirror.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-6381ee0bb1db160c", "name": "Commented-code block (5 lines) in platform-admin-api/src/lib/app-customer.ts:31", "shortDescription": {"text": "Commented-code block (5 lines) in platform-admin-api/src/lib/app-customer.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-db4784d0f2a7a58b", "name": "Commented-code block (5 lines) in platform-admin-api/src/lib/sync-scheduler.ts:8", "shortDescription": {"text": "Commented-code block (5 lines) in platform-admin-api/src/lib/sync-scheduler.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-b058c6a6b628de84", "name": "Commented-code block (5 lines) in platform-admin-api/src/lib/provisioning.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in platform-admin-api/src/lib/provisioning.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-ab615f611cb44022", "name": "Commented-code block (6 lines) in platform-admin-api/src/lib/auto-recharge.ts:4", "shortDescription": {"text": "Commented-code block (6 lines) in platform-admin-api/src/lib/auto-recharge.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-48340ac56993fc54", "name": "`fetch()` without try/.catch or AbortSignal \u2014 platform-admin-api/src/lib/auto-recharge.ts:39", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 platform-admin-api/src/lib/auto-recharge.ts:39"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ab45fee49ef59a5e", "name": "Commented-code block (5 lines) in platform-admin-api/src/routes/sso.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in platform-admin-api/src/routes/sso.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-2306567c31165337", "name": "Commented-code block (9 lines) in platform-admin-api/src/routes/topup.ts:3", "shortDescription": {"text": "Commented-code block (9 lines) in platform-admin-api/src/routes/topup.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-640182f01db2381a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 platform-admin-api/src/routes/topup.ts:64", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 platform-admin-api/src/routes/topup.ts:64"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-18229358d0281705", "name": "Commented-code block (6 lines) in platform-admin-api/src/routes/stripe-webhook.ts:7", "shortDescription": {"text": "Commented-code block (6 lines) in platform-admin-api/src/routes/stripe-webhook.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-616b71c3fce4518f", "name": "Commented-code block (6 lines) in platform-admin-api/src/routes/users-password.ts:7", "shortDescription": {"text": "Commented-code block (6 lines) in platform-admin-api/src/routes/users-password.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-a76ec64bd6b275b0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 platform-admin-api/src/routes/ghl-credentials.ts:248", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 platform-admin-api/src/routes/ghl-credentials.ts:248"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-974ac61ad1f9a728", "name": "Commented-code block (5 lines) in platform-admin-api/src/routes/customers.ts:262", "shortDescription": {"text": "Commented-code block (5 lines) in platform-admin-api/src/routes/customers.ts:262"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-15b6d443e1b012c9", "name": "Commented-code block (6 lines) in platform-admin-api/src/routes/master-keys.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in platform-admin-api/src/routes/master-keys.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-fc350d2995baa38f", "name": "Commented-code block (6 lines) in platform-admin-api/src/routes/wallet.ts:9", "shortDescription": {"text": "Commented-code block (6 lines) in platform-admin-api/src/routes/wallet.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-ef739ab5fbc527b5", "name": "Commented-code block (5 lines) in platform-admin-api/src/routes/users-create.ts:9", "shortDescription": {"text": "Commented-code block (5 lines) in platform-admin-api/src/routes/users-create.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-2753e817df50bb03", "name": "Commented-code block (6 lines) in my-acq-coach-5b771b53/playwright.config.ts:4", "shortDescription": {"text": "Commented-code block (6 lines) in my-acq-coach-5b771b53/playwright.config.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-d441d4dc0d767304", "name": "Commented-code block (6 lines) in my-acq-coach-5b771b53/backups/migration-export/functions/cron-sync/index.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in my-acq-coach-5b771b53/backups/migration-export/functions/cron-sync/index.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4423c9d437af2b5e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/cron-sync/index.t", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/cron-sync/index.ts:103"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1275c96eb38acfee", "name": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/ai-chat/index.ts:", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/ai-chat/index.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-3db7de64decd1cd7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/transcribe/index.", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/transcribe/index.ts:36"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f3eafbb974fe7a6c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/admin-api/index.t", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/admin-api/index.ts:538"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-79571f62c265bd39", "name": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/ghl-proxy/index.t", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/ghl-proxy/index.ts:466"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c5b94c9a37ce9401", "name": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/ai-tts/index.ts:2", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/ai-tts/index.ts:28"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3487cce97bac856f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/_shared/stripe.ts", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/_shared/stripe.ts:27"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ab2802a21707cd09", "name": "Commented-code block (6 lines) in my-acq-coach-5b771b53/supabase/functions/cron-sync/index.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in my-acq-coach-5b771b53/supabase/functions/cron-sync/index.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e7c2f060decedfe2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/supabase/functions/cron-sync/index.ts:109", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/supabase/functions/cron-sync/index.ts:109"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0c39c4ce4a87a173", "name": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/supabase/functions/send-digest/index.ts:111", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/supabase/functions/send-digest/index.ts:111"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9cae5ca3fa16a246", "name": "Commented-code block (5 lines) in my-acq-coach-5b771b53/supabase/functions/_env-check/index.ts:29", "shortDescription": {"text": "Commented-code block (5 lines) in my-acq-coach-5b771b53/supabase/functions/_env-check/index.ts:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8b9ed0c8235c6a26", "name": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/supabase/functions/ai-chat/index.ts:21", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/supabase/functions/ai-chat/index.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-f6292d45f08b49da", "name": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/supabase/functions/transcribe/index.ts:36", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/supabase/functions/transcribe/index.ts:36"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-00f18a10e5c138ca", "name": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/supabase/functions/admin-api/index.ts:538", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/supabase/functions/admin-api/index.ts:538"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4c314b491926b264", "name": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/supabase/functions/ghl-proxy/index.ts:466", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/supabase/functions/ghl-proxy/index.ts:466"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-099da7374ca3f5a0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/supabase/functions/ai-tts/index.ts:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/supabase/functions/ai-tts/index.ts:28"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6325be2a8d211652", "name": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/supabase/functions/_shared/stripe.ts:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/supabase/functions/_shared/stripe.ts:27"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2312a1a4bf39034c", "name": "Commented-code block (5 lines) in my-acq-coach-5b771b53/supabase/functions/_shared/platform.ts:36", "shortDescription": {"text": "Commented-code block (5 lines) in my-acq-coach-5b771b53/supabase/functions/_shared/platform.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-6407c35bebec282b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/src/RepView.jsx:582", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/src/RepView.jsx:582"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b0d6349581b97a64", "name": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/src/ACQCoach.jsx:1823", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/src/ACQCoach.jsx:1823"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a2218c06f2cb1117", "name": "Commented-code block (6 lines) in my-acq-coach-5b771b53/src/ccSsoHandoff.ts:9", "shortDescription": {"text": "Commented-code block (6 lines) in my-acq-coach-5b771b53/src/ccSsoHandoff.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-34dbc43c9a732b69", "name": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/src/components/TopupCheckout.tsx:31", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/src/components/TopupCheckout.tsx:31"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ee80b60c1b1c585b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/src/pages/Team.tsx:63", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/src/pages/Team.tsx:63"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f81b9b93aa6a5b09", "name": "Commented-code block (7 lines) in platform-launcher/src/auth.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in platform-launcher/src/auth.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-35a867fc12dcb154", "name": "Commented-code block (8 lines) in platform-launcher/src/Dashboard.tsx:331", "shortDescription": {"text": "Commented-code block (8 lines) in platform-launcher/src/Dashboard.tsx:331"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8b60bccffef4e636", "name": "`fetch()` without try/.catch or AbortSignal \u2014 platform-launcher/src/Dashboard.tsx:102", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 platform-launcher/src/Dashboard.tsx: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-0f6961844698be3d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 platform-launcher/src/WalletBanner.tsx:41", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 platform-launcher/src/WalletBanner.tsx:41"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d0bd55804871fea4", "name": "Commented-code block (7 lines) in platform-launcher/src/App.tsx:37", "shortDescription": {"text": "Commented-code block (7 lines) in platform-launcher/src/App.tsx:37"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-328d9a87f8256d6d", "name": "Commented-code block (6 lines) in platform-launcher/src/admin/AdminUsersPage.tsx:485", "shortDescription": {"text": "Commented-code block (6 lines) in platform-launcher/src/admin/AdminUsersPage.tsx:485"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f7833406a05bc789", "name": "Commented-code block (6 lines) in platform-launcher/src/admin/Toast.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in platform-launcher/src/admin/Toast.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e167cb3f2bec31a3", "name": "Commented-code block (6 lines) in platform-launcher/src/admin/AdminPlatformSettingsPage.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in platform-launcher/src/admin/AdminPlatformSettingsPage.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b83dcac2496b2766", "name": "`fetch()` without try/.catch or AbortSignal \u2014 platform-launcher/src/admin/adminApi.ts:170", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 platform-launcher/src/admin/adminApi.ts:170"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-da47308e38d4e54f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 platform-launcher/src/account/accountApi.ts:82", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 platform-launcher/src/account/accountApi.ts:82"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a3fccb34658ef0e5", "name": "Commented-code block (6 lines) in platform-launcher/src/account/AccountShell.tsx:1", "shortDescription": {"text": "Commented-code block (6 lines) in platform-launcher/src/account/AccountShell.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8b2354e7a90c7ee5", "name": "Commented-code block (6 lines) in acq-coach-selfhost/apps/web/playwright.config.ts:4", "shortDescription": {"text": "Commented-code block (6 lines) in acq-coach-selfhost/apps/web/playwright.config.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-ae4e470b86e5cd9f", "name": "Commented-code block (6 lines) in acq-coach-selfhost/apps/web/supabase/functions/cron-sync/index.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in acq-coach-selfhost/apps/web/supabase/functions/cron-sync/index.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2fb338dccd2f7886", "name": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/supabase/functions/cron-sync/index.ts:109", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/supabase/functions/cron-sync/index.ts:109"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f54e4ffdd442b053", "name": "Commented-code block (5 lines) in acq-coach-selfhost/apps/web/supabase/functions/_env-check/index.ts:29", "shortDescription": {"text": "Commented-code block (5 lines) in acq-coach-selfhost/apps/web/supabase/functions/_env-check/index.ts:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2553ac7e20001a0b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/supabase/functions/ai-chat/index.ts:21", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/supabase/functions/ai-chat/index.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-0c9f62c128bd6fb3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/supabase/functions/transcribe/index.ts:36", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/supabase/functions/transcribe/index.ts:36"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-170c81dc91ade5b0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/supabase/functions/admin-api/index.ts:538", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/supabase/functions/admin-api/index.ts:538"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9be9cf8afde1951d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/supabase/functions/ghl-proxy/index.ts:472", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/supabase/functions/ghl-proxy/index.ts:472"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-625c0327ad99dcb3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/supabase/functions/ai-tts/index.ts:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/supabase/functions/ai-tts/index.ts:28"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-51c0fd7427842308", "name": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/supabase/functions/_shared/stripe.ts:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/supabase/functions/_shared/stripe.ts:27"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-87434252aee09641", "name": "Commented-code block (5 lines) in acq-coach-selfhost/apps/web/supabase/functions/_shared/platform.ts:36", "shortDescription": {"text": "Commented-code block (5 lines) in acq-coach-selfhost/apps/web/supabase/functions/_shared/platform.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-8c39734ca35d54a4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/src/RepView.jsx:582", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/src/RepView.jsx:582"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7527db23a5889d17", "name": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/src/ACQCoach.jsx:1823", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/src/ACQCoach.jsx:1823"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d134fda04b93ba55", "name": "Commented-code block (6 lines) in acq-coach-selfhost/apps/web/src/ccSsoHandoff.ts:9", "shortDescription": {"text": "Commented-code block (6 lines) in acq-coach-selfhost/apps/web/src/ccSsoHandoff.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-ba18fca25c36edb5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/src/components/TopupCheckout.tsx:31", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/src/components/TopupCheckout.tsx:31"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9e597847a63cf755", "name": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/src/pages/Team.tsx:63", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/src/pages/Team.tsx:63"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c87976261a726b3b", "name": "Commented-code block (5 lines) in acq-coach-selfhost/apps/web/src/hooks/useAuth.tsx:33", "shortDescription": {"text": "Commented-code block (5 lines) in acq-coach-selfhost/apps/web/src/hooks/useAuth.tsx: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-f1f20af0bafc9608", "name": "Commented-code block (6 lines) in acq-coach-selfhost/supabase/functions/cron-sync/index.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in acq-coach-selfhost/supabase/functions/cron-sync/index.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fc7b1f72a5993617", "name": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/supabase/functions/cron-sync/index.ts:109", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/supabase/functions/cron-sync/index.ts:109"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-24d59c8be84a9323", "name": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/supabase/functions/send-digest/index.ts:111", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/supabase/functions/send-digest/index.ts:111"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-335244c8635d03b7", "name": "Commented-code block (5 lines) in acq-coach-selfhost/supabase/functions/_env-check/index.ts:29", "shortDescription": {"text": "Commented-code block (5 lines) in acq-coach-selfhost/supabase/functions/_env-check/index.ts:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c8602de1470a2c38", "name": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/supabase/functions/ai-chat/index.ts:21", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/supabase/functions/ai-chat/index.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-8830cc416b7eaf23", "name": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/supabase/functions/transcribe/index.ts:36", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/supabase/functions/transcribe/index.ts:36"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2b6b3139d43a7ee6", "name": "Commented-code block (5 lines) in acq-coach-selfhost/supabase/functions/main/index.ts:13", "shortDescription": {"text": "Commented-code block (5 lines) in acq-coach-selfhost/supabase/functions/main/index.ts:13"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b5be0984d1feee7d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/supabase/functions/main/index.ts:82", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/supabase/functions/main/index.ts:82"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-77a0e75fd4a0811a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/supabase/functions/admin-api/index.ts:538", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/supabase/functions/admin-api/index.ts:538"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-379c6a885ffb3275", "name": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/supabase/functions/ghl-proxy/index.ts:466", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/supabase/functions/ghl-proxy/index.ts:466"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-922a0ec81338c5a0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/supabase/functions/ai-tts/index.ts:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/supabase/functions/ai-tts/index.ts:28"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ff5713f219b35d68", "name": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/supabase/functions/_shared/stripe.ts:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/supabase/functions/_shared/stripe.ts:27"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-80b1aa43f4cb3730", "name": "Commented-code block (5 lines) in acq-coach-selfhost/supabase/functions/_shared/platform.ts:36", "shortDescription": {"text": "Commented-code block (5 lines) in acq-coach-selfhost/supabase/functions/_shared/platform.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-313f9a4b68340394", "name": "Commented-code block (6 lines) in closercontrolleadintel/playwright.config.ts:4", "shortDescription": {"text": "Commented-code block (6 lines) in closercontrolleadintel/playwright.config.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-2a0f2514320d5d93", "name": "`fetch()` without try/.catch or AbortSignal \u2014 closercontrolleadintel/backups/backend-export/edge-functions/tts-briefing/", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 closercontrolleadintel/backups/backend-export/edge-functions/tts-briefing/index.ts:87"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1a25548ff87720b8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 closercontrolleadintel/backups/backend-export/edge-functions/ai-analyze/in", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 closercontrolleadintel/backups/backend-export/edge-functions/ai-analyze/index.ts:84"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-137112e24350c621", "name": "Commented-code block (5 lines) in closercontrolleadintel/backups/backend-export/edge-functions/ghl-sync/index.ts:35", "shortDescription": {"text": "Commented-code block (5 lines) in closercontrolleadintel/backups/backend-export/edge-functions/ghl-sync/index.ts:35"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-92c0419f82e000d2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 closercontrolleadintel/backups/backend-export/edge-functions/ghl-sync/inde", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 closercontrolleadintel/backups/backend-export/edge-functions/ghl-sync/index.ts:1207"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-39b0b3eb2aa83c4f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 closercontrolleadintel/backups/backend-export/edge-functions/list-tenant-p", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 closercontrolleadintel/backups/backend-export/edge-functions/list-tenant-pipelines/index.ts:47"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7836bc3142be91d7", "name": "Commented-code block (5 lines) in closercontrolleadintel/backups/backend-export/edge-functions/_shared/tenantContext.ts:", "shortDescription": {"text": "Commented-code block (5 lines) in closercontrolleadintel/backups/backend-export/edge-functions/_shared/tenantContext.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-2928ca390a840601", "name": "`fetch()` without try/.catch or AbortSignal \u2014 closercontrolleadintel/supabase/functions/tts-briefing/index.ts:92", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 closercontrolleadintel/supabase/functions/tts-briefing/index.ts:92"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-46af180dadf725d8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 closercontrolleadintel/supabase/functions/ai-analyze/index.ts:89", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 closercontrolleadintel/supabase/functions/ai-analyze/index.ts:89"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5400658ebb0c4556", "name": "Commented-code block (5 lines) in closercontrolleadintel/supabase/functions/ghl-sync/index.ts:35", "shortDescription": {"text": "Commented-code block (5 lines) in closercontrolleadintel/supabase/functions/ghl-sync/index.ts:35"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c3a957b0b6f44b57", "name": "`fetch()` without try/.catch or AbortSignal \u2014 closercontrolleadintel/supabase/functions/ghl-sync/index.ts:1207", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 closercontrolleadintel/supabase/functions/ghl-sync/index.ts:1207"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0a0d6e4720e18f3a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 closercontrolleadintel/supabase/functions/list-tenant-pipelines/index.ts:4", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 closercontrolleadintel/supabase/functions/list-tenant-pipelines/index.ts:47"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8f2b9c5c1c5c435d", "name": "Commented-code block (5 lines) in closercontrolleadintel/supabase/functions/_shared/tenantContext.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in closercontrolleadintel/supabase/functions/_shared/tenantContext.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-a53ff7582957f181", "name": "Commented-code block (7 lines) in closercontrolleadintel/supabase/functions/_shared/platform.ts:113", "shortDescription": {"text": "Commented-code block (7 lines) in closercontrolleadintel/supabase/functions/_shared/platform.ts:113"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-77b324a845ffbbda", "name": "Commented-code block (6 lines) in closercontrolleadintel/src/ccSsoHandoff.ts:9", "shortDescription": {"text": "Commented-code block (6 lines) in closercontrolleadintel/src/ccSsoHandoff.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-fd332cac5c6ff171", "name": "Legacy-named symbol `briefing_cache_busted_v2` in closercontrolleadintel/src/components/today/BriefingCard.tsx:10", "shortDescription": {"text": "Legacy-named symbol `briefing_cache_busted_v2` in closercontrolleadintel/src/components/today/BriefingCard.tsx:10"}, "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-f05a17fa2089c100", "name": "`fetch()` without try/.catch or AbortSignal \u2014 closercontrolleadintel/src/components/billing/BillingTab.tsx:12", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 closercontrolleadintel/src/components/billing/BillingTab.tsx:12"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8a9d33599c396c29", "name": "Commented-code block (6 lines) in leadintel-selfhost/apps/web/playwright.config.ts:4", "shortDescription": {"text": "Commented-code block (6 lines) in leadintel-selfhost/apps/web/playwright.config.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-c9f1f063ad783b03", "name": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/apps/web/supabase/functions/tts-briefing/index.ts:92", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/apps/web/supabase/functions/tts-briefing/index.ts:92"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-41bea8f6a5070fac", "name": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/apps/web/supabase/functions/ai-analyze/index.ts:89", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/apps/web/supabase/functions/ai-analyze/index.ts:89"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-45c88785ef10a73e", "name": "Commented-code block (5 lines) in leadintel-selfhost/apps/web/supabase/functions/ghl-sync/index.ts:35", "shortDescription": {"text": "Commented-code block (5 lines) in leadintel-selfhost/apps/web/supabase/functions/ghl-sync/index.ts:35"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-78ad2071dd749238", "name": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/apps/web/supabase/functions/ghl-sync/index.ts:1207", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/apps/web/supabase/functions/ghl-sync/index.ts:1207"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1e0b29ebe35277d9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/apps/web/supabase/functions/list-tenant-pipelines/index", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/apps/web/supabase/functions/list-tenant-pipelines/index.ts:47"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-48205aa58458a6ba", "name": "Commented-code block (5 lines) in leadintel-selfhost/apps/web/supabase/functions/_shared/tenantContext.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in leadintel-selfhost/apps/web/supabase/functions/_shared/tenantContext.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-589de47c0e5fb190", "name": "Commented-code block (7 lines) in leadintel-selfhost/apps/web/supabase/functions/_shared/platform.ts:113", "shortDescription": {"text": "Commented-code block (7 lines) in leadintel-selfhost/apps/web/supabase/functions/_shared/platform.ts:113"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9c4c544c4274b31a", "name": "Commented-code block (6 lines) in leadintel-selfhost/apps/web/src/ccSsoHandoff.ts:9", "shortDescription": {"text": "Commented-code block (6 lines) in leadintel-selfhost/apps/web/src/ccSsoHandoff.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-04b2706ccbc32097", "name": "Legacy-named symbol `briefing_cache_busted_v2` in leadintel-selfhost/apps/web/src/components/today/BriefingCard.tsx:10", "shortDescription": {"text": "Legacy-named symbol `briefing_cache_busted_v2` in leadintel-selfhost/apps/web/src/components/today/BriefingCard.tsx:10"}, "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-844498e17f352c43", "name": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/apps/web/src/components/billing/BillingTab.tsx:12", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/apps/web/src/components/billing/BillingTab.tsx:12"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-536d77535ea83706", "name": "Commented-code block (5 lines) in leadintel-selfhost/apps/web/src/pages/Login.tsx:17", "shortDescription": {"text": "Commented-code block (5 lines) in leadintel-selfhost/apps/web/src/pages/Login.tsx:17"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dac99160481d2e7f", "name": "Commented-code block (6 lines) in leadintel-selfhost/apps/web/src/hooks/useUsageHistory.ts:62", "shortDescription": {"text": "Commented-code block (6 lines) in leadintel-selfhost/apps/web/src/hooks/useUsageHistory.ts:62"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-03c412ffb328ab96", "name": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/supabase/functions/tts-briefing/index.ts:92", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/supabase/functions/tts-briefing/index.ts:92"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-30baef6f3a53ed30", "name": "Commented-code block (5 lines) in leadintel-selfhost/supabase/functions/check-notes-access/index.ts:137", "shortDescription": {"text": "Commented-code block (5 lines) in leadintel-selfhost/supabase/functions/check-notes-access/index.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-a37020bb6e727fdd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/supabase/functions/ai-analyze/index.ts:89", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/supabase/functions/ai-analyze/index.ts:89"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e773dcc7c55bcd29", "name": "Commented-code block (5 lines) in leadintel-selfhost/supabase/functions/ghl-sync/index.ts:35", "shortDescription": {"text": "Commented-code block (5 lines) in leadintel-selfhost/supabase/functions/ghl-sync/index.ts:35"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ed781eb97bd7c1cf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/supabase/functions/ghl-sync/index.ts:1252", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/supabase/functions/ghl-sync/index.ts:1252"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-057f9093fa8b1e55", "name": "Commented-code block (5 lines) in leadintel-selfhost/supabase/functions/main/index.ts:13", "shortDescription": {"text": "Commented-code block (5 lines) in leadintel-selfhost/supabase/functions/main/index.ts:13"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-25ed29e75ac95dbb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/supabase/functions/main/index.ts:82", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/supabase/functions/main/index.ts:82"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-24ed08a4afce98e2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/supabase/functions/list-tenant-pipelines/index.ts:47", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/supabase/functions/list-tenant-pipelines/index.ts:47"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ba303d3e13a9b3e0", "name": "Commented-code block (5 lines) in leadintel-selfhost/supabase/functions/_shared/tenantContext.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in leadintel-selfhost/supabase/functions/_shared/tenantContext.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-498feaf69221e19f", "name": "Commented-code block (7 lines) in leadintel-selfhost/supabase/functions/_shared/platform.ts:113", "shortDescription": {"text": "Commented-code block (7 lines) in leadintel-selfhost/supabase/functions/_shared/platform.ts:113"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-250f57e8a1dbd3c5", "name": "4 env vars used in code but missing from .env.example", "shortDescription": {"text": "4 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `VITE_GHL_BASE_URL`, `VITE_GHL_LOCATION_ID`, `VITE_OTHER_APP_KEY`, `VITE_THIS_APP_KEY`. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d795d180ae4dd10e", "name": "Frontend route `/reset-password` has no Link/navigate to it \u2014 leadintel-selfhost/apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/reset-password` has no Link/navigate to it \u2014 leadintel-selfhost/apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e8d68932ae27219f", "name": "Frontend route `/accept-invitation` has no Link/navigate to it \u2014 leadintel-selfhost/apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/accept-invitation` has no Link/navigate to it \u2014 leadintel-selfhost/apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-307b8eb5301033e9", "name": "Frontend route `/leads/:id` has no Link/navigate to it \u2014 leadintel-selfhost/apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/leads/:id` has no Link/navigate to it \u2014 leadintel-selfhost/apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c77470323b2cf100", "name": "Frontend route `/admin/tenants/:id` has no Link/navigate to it \u2014 leadintel-selfhost/apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/tenants/:id` has no Link/navigate to it \u2014 leadintel-selfhost/apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d4e046dbda9cea68", "name": "Frontend route `/admin/tenants/:id/transactions` has no Link/navigate to it \u2014 leadintel-selfhost/apps/web/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/tenants/:id/transactions` has no Link/navigate to it \u2014 leadintel-selfhost/apps/web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/19290"}, "properties": {"repository": "Sepnexus/leadintel-ACQ", "repoUrl": "https://github.com/Sepnexus/leadintel-ACQ", "branch": "main"}, "results": [{"ruleId": "scanner-b0f84dcd8e3c6c91", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 platform-admin-api/src/main.ts:177"}, "properties": {"repobilityId": "d51bc8768f264f61", "scanner": "scanner-primary", "fingerprint": "b0f84dcd8e3c6c91", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-041f96985808758d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 platform-admin-api/src/db.ts:37"}, "properties": {"repobilityId": "476b400cfa012d88", "scanner": "scanner-primary", "fingerprint": "041f96985808758d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c948c129ff8aeee2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 platform-admin-api/src/lib/sync-scheduler.ts:93"}, "properties": {"repobilityId": "164cf827524edf39", "scanner": "scanner-primary", "fingerprint": "c948c129ff8aeee2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-25576783271d7c64", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 platform-admin-api/src/lib/auto-recharge.ts:146"}, "properties": {"repobilityId": "a660bfcfd9dcadb4", "scanner": "scanner-primary", "fingerprint": "25576783271d7c64", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dd18be8b1ac357c2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 platform-admin-api/src/routes/stripe-webhook.ts:227"}, "properties": {"repobilityId": "031152ef40cc6fd1", "scanner": "scanner-primary", "fingerprint": "dd18be8b1ac357c2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-48ca81577ab1c04b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/cron-sync/index.ts:111"}, "properties": {"repobilityId": "f56d2dcd488a19c9", "scanner": "scanner-primary", "fingerprint": "48ca81577ab1c04b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-df7ef3b7f54aee89", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/payments-webhook/index.ts:44"}, "properties": {"repobilityId": "539e2ea20daa1ebd", "scanner": "scanner-primary", "fingerprint": "df7ef3b7f54aee89", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-52ec20f8496cb81c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/ghl-proxy/index.ts:377"}, "properties": {"repobilityId": "8182a261b3f05e84", "scanner": "scanner-primary", "fingerprint": "52ec20f8496cb81c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f4e0118f428c229b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 my-acq-coach-5b771b53/supabase/functions/cron-sync/index.ts:117"}, "properties": {"repobilityId": "60943528a9965482", "scanner": "scanner-primary", "fingerprint": "f4e0118f428c229b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fffa4770b210e49f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 my-acq-coach-5b771b53/supabase/functions/payments-webhook/index.ts:44"}, "properties": {"repobilityId": "ce9f3e7fed637d9b", "scanner": "scanner-primary", "fingerprint": "fffa4770b210e49f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e951e7c6794cb514", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 my-acq-coach-5b771b53/supabase/functions/ghl-proxy/index.ts:377"}, "properties": {"repobilityId": "abb98f6fb4767279", "scanner": "scanner-primary", "fingerprint": "e951e7c6794cb514", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-685bf8e65864a76e", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 my-acq-coach-5b771b53/src/RepView.jsx:1554"}, "properties": {"repobilityId": "2802b60b9198b02a", "scanner": "scanner-primary", "fingerprint": "685bf8e65864a76e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-369be76b0121373b", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 my-acq-coach-5b771b53/src/ACQCoach.jsx:559"}, "properties": {"repobilityId": "b9d5aeb651506e15", "scanner": "scanner-primary", "fingerprint": "369be76b0121373b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-afc1827703968285", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 my-acq-coach-5b771b53/src/RepDrillDown.jsx:220"}, "properties": {"repobilityId": "1fa53f5f14bf4e97", "scanner": "scanner-primary", "fingerprint": "afc1827703968285", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-2b053fb7bb8f97b4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 my-acq-coach-5b771b53/src/ccSsoHandoff.ts:146"}, "properties": {"repobilityId": "f2172e525c1c9082", "scanner": "scanner-primary", "fingerprint": "2b053fb7bb8f97b4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c621c81765ca4053", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 my-acq-coach-5b771b53/src/components/ui/chart.tsx:70"}, "properties": {"repobilityId": "1bbc194d147d04bb", "scanner": "scanner-primary", "fingerprint": "c621c81765ca4053", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-bff9176d09ded82b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 my-acq-coach-5b771b53/src/admin/SyncRunDetailSheet.tsx:83"}, "properties": {"repobilityId": "9f91496b70c5922e", "scanner": "scanner-primary", "fingerprint": "bff9176d09ded82b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-621a148c4fc66326", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 my-acq-coach-5b771b53/src/admin/CustomerDetailSheet.tsx:198"}, "properties": {"repobilityId": "52105cc9b11b4596", "scanner": "scanner-primary", "fingerprint": "621a148c4fc66326", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-53c59004035bc950", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 my-acq-coach-5b771b53/src/pages/SuperAdmin.tsx:75"}, "properties": {"repobilityId": "41fbd3b22065b227", "scanner": "scanner-primary", "fingerprint": "53c59004035bc950", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-451ae85198b98bd8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 my-acq-coach-5b771b53/src/pages/Team.tsx:229"}, "properties": {"repobilityId": "6dc4e251b6942025", "scanner": "scanner-primary", "fingerprint": "451ae85198b98bd8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-054114feb45949e7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 my-acq-coach-5b771b53/src/pages/Billing.tsx:555"}, "properties": {"repobilityId": "8748f3568ba5b68b", "scanner": "scanner-primary", "fingerprint": "054114feb45949e7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9440dd7833b8764a", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 platform-launcher/src/AccountSettings.tsx:104"}, "properties": {"repobilityId": "11f23e50b5b4581d", "scanner": "scanner-primary", "fingerprint": "9440dd7833b8764a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-9338318a95b68be1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 platform-launcher/src/admin/Toast.tsx:79"}, "properties": {"repobilityId": "e7df7ed3dc3df875", "scanner": "scanner-primary", "fingerprint": "9338318a95b68be1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9ae07911625464d9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 acq-coach-selfhost/apps/web/supabase/functions/cron-sync/index.ts:117"}, "properties": {"repobilityId": "8c25831319c18edd", "scanner": "scanner-primary", "fingerprint": "9ae07911625464d9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b9d11a1f02b05ecb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 acq-coach-selfhost/apps/web/supabase/functions/payments-webhook/index.ts:44"}, "properties": {"repobilityId": "76ea617f1c7a8144", "scanner": "scanner-primary", "fingerprint": "b9d11a1f02b05ecb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-768e5f5eb38f372a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 acq-coach-selfhost/apps/web/supabase/functions/ghl-proxy/index.ts:383"}, "properties": {"repobilityId": "300e1cd7e4cc371b", "scanner": "scanner-primary", "fingerprint": "768e5f5eb38f372a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b55ad7bbde2a838c", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 acq-coach-selfhost/apps/web/src/RepView.jsx:1554"}, "properties": {"repobilityId": "c5f2127b1c275a44", "scanner": "scanner-primary", "fingerprint": "b55ad7bbde2a838c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-9cfa53b850c42ccd", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 acq-coach-selfhost/apps/web/src/ACQCoach.jsx:559"}, "properties": {"repobilityId": "5a895ae65b5bc4b6", "scanner": "scanner-primary", "fingerprint": "9cfa53b850c42ccd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-65e7d3c5f158e095", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 acq-coach-selfhost/apps/web/src/RepDrillDown.jsx:220"}, "properties": {"repobilityId": "2178c8957f4a3820", "scanner": "scanner-primary", "fingerprint": "65e7d3c5f158e095", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-154fdee80ce42b83", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 acq-coach-selfhost/apps/web/src/ccSsoHandoff.ts:146"}, "properties": {"repobilityId": "a0d3a90566a3791e", "scanner": "scanner-primary", "fingerprint": "154fdee80ce42b83", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5117c2e3634adf0c", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 acq-coach-selfhost/apps/web/src/components/ui/chart.tsx:70"}, "properties": {"repobilityId": "3c9ff83b652de7e8", "scanner": "scanner-primary", "fingerprint": "5117c2e3634adf0c", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-5e1a1ba21c563b4b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 acq-coach-selfhost/apps/web/src/admin/SyncRunDetailSheet.tsx:83"}, "properties": {"repobilityId": "e77473658b140ec9", "scanner": "scanner-primary", "fingerprint": "5e1a1ba21c563b4b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-320142f626ac64c6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 acq-coach-selfhost/apps/web/src/admin/CustomerDetailSheet.tsx:198"}, "properties": {"repobilityId": "c2eaa77f42760796", "scanner": "scanner-primary", "fingerprint": "320142f626ac64c6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1d411e8e1b1f3fb6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 acq-coach-selfhost/apps/web/src/pages/SuperAdmin.tsx:75"}, "properties": {"repobilityId": "79865ae44d39d848", "scanner": "scanner-primary", "fingerprint": "1d411e8e1b1f3fb6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1740ce0a0e07c92c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 acq-coach-selfhost/apps/web/src/pages/Team.tsx:229"}, "properties": {"repobilityId": "c5083ba44c7f3598", "scanner": "scanner-primary", "fingerprint": "1740ce0a0e07c92c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4dea9ef6c96727b6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 acq-coach-selfhost/apps/web/src/pages/Billing.tsx:555"}, "properties": {"repobilityId": "8192e6afbb0468a4", "scanner": "scanner-primary", "fingerprint": "4dea9ef6c96727b6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3fa17ed960a15311", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 acq-coach-selfhost/supabase/functions/cron-sync/index.ts:117"}, "properties": {"repobilityId": "c630177cf642ae9a", "scanner": "scanner-primary", "fingerprint": "3fa17ed960a15311", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a246249b5b50228b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 acq-coach-selfhost/supabase/functions/payments-webhook/index.ts:44"}, "properties": {"repobilityId": "9aae21dff06315d7", "scanner": "scanner-primary", "fingerprint": "a246249b5b50228b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-53b26fd90b581de5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 acq-coach-selfhost/supabase/functions/main/index.ts:11"}, "properties": {"repobilityId": "36e6db1d97f8e16e", "scanner": "scanner-primary", "fingerprint": "53b26fd90b581de5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-019f793a59fa1de5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 acq-coach-selfhost/supabase/functions/ghl-proxy/index.ts:377"}, "properties": {"repobilityId": "903ed590173b879d", "scanner": "scanner-primary", "fingerprint": "019f793a59fa1de5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c36e3318230464bc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/backups/backend-export/edge-functions/payments-webhook/index.ts:50"}, "properties": {"repobilityId": "b8f2826681f29ed2", "scanner": "scanner-primary", "fingerprint": "c36e3318230464bc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dbca869ea2cd8146", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/backups/backend-export/edge-functions/delete-tenant/index.ts:73"}, "properties": {"repobilityId": "bf7e6fdd6e2666c0", "scanner": "scanner-primary", "fingerprint": "dbca869ea2cd8146", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9f9d278037b883d0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/backups/backend-export/edge-functions/sync-resume-cron/index.ts:49"}, "properties": {"repobilityId": "972fcf8189615dbf", "scanner": "scanner-primary", "fingerprint": "9f9d278037b883d0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-353b66defd85e2c8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/backups/backend-export/edge-functions/ghl-sync/index.ts:279"}, "properties": {"repobilityId": "a18c9c258020036e", "scanner": "scanner-primary", "fingerprint": "353b66defd85e2c8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7c70663ecc762786", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/backups/backend-export/edge-functions/sync-all-tenants-cron/index.ts:49"}, "properties": {"repobilityId": "9c5b6bbee0dc4a95", "scanner": "scanner-primary", "fingerprint": "7c70663ecc762786", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ce58e0c05c6469e2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/supabase/functions/payments-webhook/index.ts:50"}, "properties": {"repobilityId": "244058ba23c547a0", "scanner": "scanner-primary", "fingerprint": "ce58e0c05c6469e2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2cdc1e80e8300e4c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/supabase/functions/delete-tenant/index.ts:73"}, "properties": {"repobilityId": "393fb8ae01fe02f2", "scanner": "scanner-primary", "fingerprint": "2cdc1e80e8300e4c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c0eff8c060b057f9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/supabase/functions/sync-resume-cron/index.ts:49"}, "properties": {"repobilityId": "cedddbda8a3a6c5c", "scanner": "scanner-primary", "fingerprint": "c0eff8c060b057f9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-98b5b0bd89d9a5fe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/supabase/functions/ghl-sync/index.ts:279"}, "properties": {"repobilityId": "fc7b84a34adbaacb", "scanner": "scanner-primary", "fingerprint": "98b5b0bd89d9a5fe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aa7c09d2d60d0fef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/supabase/functions/sync-all-tenants-cron/index.ts:49"}, "properties": {"repobilityId": "99210f05c80f0ec5", "scanner": "scanner-primary", "fingerprint": "aa7c09d2d60d0fef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0b559ea1c2105dd4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 closercontrolleadintel/src/ccSsoHandoff.ts:146"}, "properties": {"repobilityId": "e76b9cb621a1957c", "scanner": "scanner-primary", "fingerprint": "0b559ea1c2105dd4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ca3395173c7552d6", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 closercontrolleadintel/src/components/ui/chart.tsx:70"}, "properties": {"repobilityId": "09be363f1194374a", "scanner": "scanner-primary", "fingerprint": "ca3395173c7552d6", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-cbc26015639930ef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/apps/web/supabase/functions/payments-webhook/index.ts:50"}, "properties": {"repobilityId": "1527d698b2f35641", "scanner": "scanner-primary", "fingerprint": "cbc26015639930ef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6c894f76357a1ae8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/apps/web/supabase/functions/delete-tenant/index.ts:73"}, "properties": {"repobilityId": "2770d8b6ad753f11", "scanner": "scanner-primary", "fingerprint": "6c894f76357a1ae8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c3a4338579741ff5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/apps/web/supabase/functions/sync-resume-cron/index.ts:49"}, "properties": {"repobilityId": "1c317f7a9cb20d7a", "scanner": "scanner-primary", "fingerprint": "c3a4338579741ff5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ee86fa4c18deb155", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/apps/web/supabase/functions/ghl-sync/index.ts:279"}, "properties": {"repobilityId": "eb89f65d421dbb4a", "scanner": "scanner-primary", "fingerprint": "ee86fa4c18deb155", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4659f6cd303f2e8e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/apps/web/supabase/functions/sync-all-tenants-cron/index.ts:49"}, "properties": {"repobilityId": "882f58b71a492947", "scanner": "scanner-primary", "fingerprint": "4659f6cd303f2e8e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5c713c71735f2f79", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/apps/web/src/ccSsoHandoff.ts:146"}, "properties": {"repobilityId": "9298b11746e46332", "scanner": "scanner-primary", "fingerprint": "5c713c71735f2f79", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-09a914edfd3a0e72", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 leadintel-selfhost/apps/web/src/components/ui/chart.tsx:70"}, "properties": {"repobilityId": "1bb1981ee0228757", "scanner": "scanner-primary", "fingerprint": "09a914edfd3a0e72", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-41a16b9663c32bc2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/supabase/functions/payments-webhook/index.ts:50"}, "properties": {"repobilityId": "462ace4b16d07011", "scanner": "scanner-primary", "fingerprint": "41a16b9663c32bc2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ac1ed15f55fc59fc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/supabase/functions/delete-tenant/index.ts:73"}, "properties": {"repobilityId": "52ddd862ab5834e0", "scanner": "scanner-primary", "fingerprint": "ac1ed15f55fc59fc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cad803b5f915d455", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/supabase/functions/sync-resume-cron/index.ts:49"}, "properties": {"repobilityId": "fc9b9877f3083149", "scanner": "scanner-primary", "fingerprint": "cad803b5f915d455", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6e5e74a5ce361a3d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/supabase/functions/ghl-sync/index.ts:279"}, "properties": {"repobilityId": "2409de0b48ecd66b", "scanner": "scanner-primary", "fingerprint": "6e5e74a5ce361a3d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-171b422cad565756", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/supabase/functions/sync-all-tenants-cron/index.ts:49"}, "properties": {"repobilityId": "5c0dafe8b3790292", "scanner": "scanner-primary", "fingerprint": "171b422cad565756", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-37232d3cf2f1a058", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 leadintel-selfhost/supabase/functions/main/index.ts:11"}, "properties": {"repobilityId": "cfe781338e9c76d9", "scanner": "scanner-primary", "fingerprint": "37232d3cf2f1a058", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-592533143f6f0fa5", "level": "warning", "message": {"text": "Dockerfile runs as root: platform-admin-api/Dockerfile"}, "properties": {"repobilityId": "676320a3f8a1b268", "scanner": "scanner-primary", "fingerprint": "592533143f6f0fa5", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-2c767d0bb3e27c2a", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: denoland/deno:alpine-2.0.6"}, "properties": {"repobilityId": "2a52ac735a6155c6", "scanner": "scanner-primary", "fingerprint": "2c767d0bb3e27c2a", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "platform-admin-api/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ae658166058fdf20", "level": "warning", "message": {"text": "Dockerfile runs as root: platform-launcher/Dockerfile"}, "properties": {"repobilityId": "69d7d179f3de3add", "scanner": "scanner-primary", "fingerprint": "ae658166058fdf20", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-a435fef75b415f4a", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-bookworm-slim"}, "properties": {"repobilityId": "d2cb77a9af27fb72", "scanner": "scanner-primary", "fingerprint": "a435fef75b415f4a", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "platform-launcher/Dockerfile"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-9eab1b231387e877", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: nginx:alpine"}, "properties": {"repobilityId": "9c9f76bf06a4b88e", "scanner": "scanner-primary", "fingerprint": "9eab1b231387e877", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "platform-launcher/Dockerfile"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-1fa4a79bd1a975fd", "level": "warning", "message": {"text": "Dockerfile runs as root: acq-coach-selfhost/Dockerfile"}, "properties": {"repobilityId": "2b5541a4ac2542a7", "scanner": "scanner-primary", "fingerprint": "1fa4a79bd1a975fd", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-30795feb3bf20df8", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-bookworm-slim"}, "properties": {"repobilityId": "6acbbc838d3f715e", "scanner": "scanner-primary", "fingerprint": "30795feb3bf20df8", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "acq-coach-selfhost/Dockerfile"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-c43ca9c5b253189c", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "d054efff35cefba5", "scanner": "scanner-primary", "fingerprint": "c43ca9c5b253189c", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "acq-coach-selfhost/Dockerfile"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-939c58c38a1e8722", "level": "warning", "message": {"text": "Dockerfile runs as root: leadintel-selfhost/Dockerfile"}, "properties": {"repobilityId": "0a11e778c973ca0a", "scanner": "scanner-primary", "fingerprint": "939c58c38a1e8722", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-b2491a0bf065bae1", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-bookworm-slim"}, "properties": {"repobilityId": "43317bd1470f5add", "scanner": "scanner-primary", "fingerprint": "b2491a0bf065bae1", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/Dockerfile"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-df8b7ba5bf5c975b", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: debian:bookworm-slim"}, "properties": {"repobilityId": "f7241acd38641b6d", "scanner": "scanner-primary", "fingerprint": "df8b7ba5bf5c975b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/Dockerfile"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-e6910ee0dcc06264", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in platform-admin-api/src/main.ts:184"}, "properties": {"repobilityId": "fa4f5f807d215bb6", "scanner": "scanner-primary", "fingerprint": "e6910ee0dcc06264", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "platform-admin-api/src/main.ts"}, "region": {"startLine": 184}}}]}, {"ruleId": "scanner-1b0942a3dad7dc03", "level": "error", "message": {"text": "Possible secret in platform-db/Makefile"}, "properties": {"repobilityId": "9a0fa0be01205a9d", "scanner": "scanner-primary", "fingerprint": "1b0942a3dad7dc03", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "platform-db/Makefile"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-1b0942a3dad7dc03", "level": "error", "message": {"text": "Possible secret in platform-db/Makefile"}, "properties": {"repobilityId": "9a0fa0be01205a9d", "scanner": "scanner-primary", "fingerprint": "1b0942a3dad7dc03", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "platform-db/Makefile"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-8fe5f47384b18b7f", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/backups/migration-export/functions/cron-sync/index.ts:12"}, "properties": {"repobilityId": "6f8afc5fc69c3e52", "scanner": "scanner-primary", "fingerprint": "8fe5f47384b18b7f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "my-acq-coach-5b771b53/backups/migration-export/functions/cron-sync/index.ts"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-04f1c67f907c5642", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/backups/migration-export/functions/payments-webhook/index.ts:8"}, "properties": {"repobilityId": "860f488d9525b036", "scanner": "scanner-primary", "fingerprint": "04f1c67f907c5642", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "my-acq-coach-5b771b53/backups/migration-export/functions/payments-webhook/index.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-c8f379621c2f7b75", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/backups/migration-export/functions/create-topup-session/index.ts:8"}, "properties": {"repobilityId": "8a07a0748de00508", "scanner": "scanner-primary", "fingerprint": "c8f379621c2f7b75", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "my-acq-coach-5b771b53/backups/migration-export/functions/create-topup-session/index.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-548160bbb3e823e2", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/backups/migration-export/functions/ai-chat/index.ts:4"}, "properties": {"repobilityId": "072096c84a539bff", "scanner": "scanner-primary", "fingerprint": "548160bbb3e823e2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "my-acq-coach-5b771b53/backups/migration-export/functions/ai-chat/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-0af8e71587e958ea", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/backups/migration-export/functions/auto-recharge-cron/index.ts:10"}, "properties": {"repobilityId": "fd2b3c4da191edef", "scanner": "scanner-primary", "fingerprint": "0af8e71587e958ea", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "my-acq-coach-5b771b53/backups/migration-export/functions/auto-recharge-cron/index.ts"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-efb12154c993287b", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/backups/migration-export/functions/transcribe/index.ts:4"}, "properties": {"repobilityId": "c18e41b4449ff0f2", "scanner": "scanner-primary", "fingerprint": "efb12154c993287b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "my-acq-coach-5b771b53/backups/migration-export/functions/transcribe/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-1963b4d711ce5e5b", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/backups/migration-export/functions/admin-api/index.ts:6"}, "properties": {"repobilityId": "3b7fad8a1e3e5e58", "scanner": "scanner-primary", "fingerprint": "1963b4d711ce5e5b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "my-acq-coach-5b771b53/backups/migration-export/functions/admin-api/index.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-f1327b69329653b3", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/backups/migration-export/functions/ghl-proxy/index.ts:5"}, "properties": {"repobilityId": "d11cdd6d0ad28c29", "scanner": "scanner-primary", "fingerprint": "f1327b69329653b3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "my-acq-coach-5b771b53/backups/migration-export/functions/ghl-proxy/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-91cf82a98f7c9cfa", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/backups/migration-export/functions/ai-tts/index.ts:4"}, "properties": {"repobilityId": "9a78344c40bc19eb", "scanner": "scanner-primary", "fingerprint": "91cf82a98f7c9cfa", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "my-acq-coach-5b771b53/backups/migration-export/functions/ai-tts/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-0f4bec76ac20f1f9", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/cron-sync/index.ts:13"}, "properties": {"repobilityId": "2baecaa27f2a3d50", "scanner": "scanner-primary", "fingerprint": "0f4bec76ac20f1f9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "my-acq-coach-5b771b53/supabase/functions/cron-sync/index.ts"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-ca80061f94bccb77", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/payments-webhook/index.ts:8"}, "properties": {"repobilityId": "b53c77605a398049", "scanner": "scanner-primary", "fingerprint": "ca80061f94bccb77", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "my-acq-coach-5b771b53/supabase/functions/payments-webhook/index.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-40b9e33dedcd18c2", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/send-digest/index.ts:12"}, "properties": {"repobilityId": "520dd3728fa195c9", "scanner": "scanner-primary", "fingerprint": "40b9e33dedcd18c2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "my-acq-coach-5b771b53/supabase/functions/send-digest/index.ts"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-0b62987ab2fb50a3", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/create-topup-session/index.ts:8"}, "properties": {"repobilityId": "fe242c3c14138f44", "scanner": "scanner-primary", "fingerprint": "0b62987ab2fb50a3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "my-acq-coach-5b771b53/supabase/functions/create-topup-session/index.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-cf41a0f3a26c4676", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/ai-chat/index.ts:4"}, "properties": {"repobilityId": "6b45d477a272ef32", "scanner": "scanner-primary", "fingerprint": "cf41a0f3a26c4676", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "my-acq-coach-5b771b53/supabase/functions/ai-chat/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-a3e4340e0fd93eba", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/auto-recharge-cron/index.ts:10"}, "properties": {"repobilityId": "25a7c639e6d99f2b", "scanner": "scanner-primary", "fingerprint": "a3e4340e0fd93eba", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "my-acq-coach-5b771b53/supabase/functions/auto-recharge-cron/index.ts"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-7071159b559f44b6", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/transcribe/index.ts:4"}, "properties": {"repobilityId": "b79d7a92ee117064", "scanner": "scanner-primary", "fingerprint": "7071159b559f44b6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "my-acq-coach-5b771b53/supabase/functions/transcribe/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-fb2180067e781e27", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/admin-api/index.ts:6"}, "properties": {"repobilityId": "14d4394cef681bcc", "scanner": "scanner-primary", "fingerprint": "fb2180067e781e27", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "my-acq-coach-5b771b53/supabase/functions/admin-api/index.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-25c80428b93bbca2", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/ghl-proxy/index.ts:5"}, "properties": {"repobilityId": "7e183dffff714c6c", "scanner": "scanner-primary", "fingerprint": "25c80428b93bbca2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "my-acq-coach-5b771b53/supabase/functions/ghl-proxy/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-fc20d5253db124c5", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in my-acq-coach-5b771b53/supabase/functions/ai-tts/index.ts:4"}, "properties": {"repobilityId": "8f73cd8284e3f413", "scanner": "scanner-primary", "fingerprint": "fc20d5253db124c5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "my-acq-coach-5b771b53/supabase/functions/ai-tts/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-a7164c8a280753d9", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in my-acq-coach-5b771b53/src/components/ui/chart.tsx:70"}, "properties": {"repobilityId": "c639ce0834565bb0", "scanner": "scanner-primary", "fingerprint": "a7164c8a280753d9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "my-acq-coach-5b771b53/src/components/ui/chart.tsx"}, "region": {"startLine": 70}}}]}, {"ruleId": "scanner-253ee5a8821b1f45", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in platform-launcher/README.md:51"}, "properties": {"repobilityId": "3ee1e0af6fa05acf", "scanner": "scanner-primary", "fingerprint": "253ee5a8821b1f45", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "platform-launcher/README.md"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-84a053a5a6ec1e0d", "level": "error", "message": {"text": "Possible secret in acq-coach-selfhost/Makefile"}, "properties": {"repobilityId": "cc58f0d8c9db6bc8", "scanner": "scanner-primary", "fingerprint": "84a053a5a6ec1e0d", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "acq-coach-selfhost/Makefile"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-89bcb77497306c36", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/apps/web/supabase/functions/cron-sync/index.ts:13"}, "properties": {"repobilityId": "9691c5cd7aa2121d", "scanner": "scanner-primary", "fingerprint": "89bcb77497306c36", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "acq-coach-selfhost/apps/web/supabase/functions/cron-sync/index.ts"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-af18af97efa91ba8", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/apps/web/supabase/functions/payments-webhook/index.ts:8"}, "properties": {"repobilityId": "a1fc728bb71e4d9b", "scanner": "scanner-primary", "fingerprint": "af18af97efa91ba8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "acq-coach-selfhost/apps/web/supabase/functions/payments-webhook/index.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-da0694029bbe7f6d", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/apps/web/supabase/functions/create-topup-session/index.ts:8"}, "properties": {"repobilityId": "fa2912552901bcc9", "scanner": "scanner-primary", "fingerprint": "da0694029bbe7f6d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "acq-coach-selfhost/apps/web/supabase/functions/create-topup-session/index.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-64fbacf892b6c2ca", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/apps/web/supabase/functions/ai-chat/index.ts:4"}, "properties": {"repobilityId": "7250da55a430b867", "scanner": "scanner-primary", "fingerprint": "64fbacf892b6c2ca", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "acq-coach-selfhost/apps/web/supabase/functions/ai-chat/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-84daef27b4f50ede", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/apps/web/supabase/functions/auto-recharge-cron/index.ts:10"}, "properties": {"repobilityId": "21df7b8ff790c4e1", "scanner": "scanner-primary", "fingerprint": "84daef27b4f50ede", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "acq-coach-selfhost/apps/web/supabase/functions/auto-recharge-cron/index.ts"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-a7328c13733a92e1", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/apps/web/supabase/functions/transcribe/index.ts:4"}, "properties": {"repobilityId": "d4f62a6ca6732fac", "scanner": "scanner-primary", "fingerprint": "a7328c13733a92e1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "acq-coach-selfhost/apps/web/supabase/functions/transcribe/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-90f43b931e1cba70", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/apps/web/supabase/functions/admin-api/index.ts:6"}, "properties": {"repobilityId": "0cfaa5043da4c447", "scanner": "scanner-primary", "fingerprint": "90f43b931e1cba70", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "acq-coach-selfhost/apps/web/supabase/functions/admin-api/index.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-e45579734cf70079", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/apps/web/supabase/functions/ghl-proxy/index.ts:5"}, "properties": {"repobilityId": "72183aeb597ca8cd", "scanner": "scanner-primary", "fingerprint": "e45579734cf70079", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "acq-coach-selfhost/apps/web/supabase/functions/ghl-proxy/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-f31e0a099b2c1285", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/apps/web/supabase/functions/ai-tts/index.ts:4"}, "properties": {"repobilityId": "e47c8f64e7585d6b", "scanner": "scanner-primary", "fingerprint": "f31e0a099b2c1285", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "acq-coach-selfhost/apps/web/supabase/functions/ai-tts/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-a3c2d9cc22667fa6", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in acq-coach-selfhost/apps/web/src/components/ui/chart.tsx:70"}, "properties": {"repobilityId": "e5abd0ebced20e06", "scanner": "scanner-primary", "fingerprint": "a3c2d9cc22667fa6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "acq-coach-selfhost/apps/web/src/components/ui/chart.tsx"}, "region": {"startLine": 70}}}]}, {"ruleId": "scanner-f91b39fdf5fe1711", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/cron-sync/index.ts:13"}, "properties": {"repobilityId": "abce6918bd66d6d5", "scanner": "scanner-primary", "fingerprint": "f91b39fdf5fe1711", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "acq-coach-selfhost/supabase/functions/cron-sync/index.ts"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-dcdc607aafb6a980", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/payments-webhook/index.ts:8"}, "properties": {"repobilityId": "8dbdc02e58316e49", "scanner": "scanner-primary", "fingerprint": "dcdc607aafb6a980", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "acq-coach-selfhost/supabase/functions/payments-webhook/index.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-e53e7356c3c75f5c", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/send-digest/index.ts:12"}, "properties": {"repobilityId": "06794c429388cbb0", "scanner": "scanner-primary", "fingerprint": "e53e7356c3c75f5c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "acq-coach-selfhost/supabase/functions/send-digest/index.ts"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-22f7a4df10697a8a", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/create-topup-session/index.ts:8"}, "properties": {"repobilityId": "344deabdbf84f69c", "scanner": "scanner-primary", "fingerprint": "22f7a4df10697a8a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "acq-coach-selfhost/supabase/functions/create-topup-session/index.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-bff74c7736fc13f0", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/ai-chat/index.ts:4"}, "properties": {"repobilityId": "9da18b635bf2a1a3", "scanner": "scanner-primary", "fingerprint": "bff74c7736fc13f0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "acq-coach-selfhost/supabase/functions/ai-chat/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-1ca369cb42505457", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/auto-recharge-cron/index.ts:10"}, "properties": {"repobilityId": "58fb49eec29fbd92", "scanner": "scanner-primary", "fingerprint": "1ca369cb42505457", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "acq-coach-selfhost/supabase/functions/auto-recharge-cron/index.ts"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-e9d64edcb4aab86b", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/transcribe/index.ts:4"}, "properties": {"repobilityId": "086219e667a69d76", "scanner": "scanner-primary", "fingerprint": "e9d64edcb4aab86b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "acq-coach-selfhost/supabase/functions/transcribe/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-ad89d57c9713066e", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/admin-api/index.ts:6"}, "properties": {"repobilityId": "65d6dcf16ad802fe", "scanner": "scanner-primary", "fingerprint": "ad89d57c9713066e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "acq-coach-selfhost/supabase/functions/admin-api/index.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-64d5478257879ba5", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/ghl-proxy/index.ts:5"}, "properties": {"repobilityId": "061854268c0c807b", "scanner": "scanner-primary", "fingerprint": "64d5478257879ba5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "acq-coach-selfhost/supabase/functions/ghl-proxy/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-c1c4cc9384c92910", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in acq-coach-selfhost/supabase/functions/ai-tts/index.ts:4"}, "properties": {"repobilityId": "83fb94e4f15f021f", "scanner": "scanner-primary", "fingerprint": "c1c4cc9384c92910", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "acq-coach-selfhost/supabase/functions/ai-tts/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-adcfa4b5262a9d6f", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/create-tenant/index.ts:5"}, "properties": {"repobilityId": "3e2d74312dedca3d", "scanner": "scanner-primary", "fingerprint": "adcfa4b5262a9d6f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/create-tenant/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-f9589ed8f495aa8b", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/analyze-lead/index.ts:7"}, "properties": {"repobilityId": "456ab560b08b40c5", "scanner": "scanner-primary", "fingerprint": "f9589ed8f495aa8b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/analyze-lead/index.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-6fdc91efd0fdab67", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/remove-saved-card/index.ts:5"}, "properties": {"repobilityId": "ef0c40eb53d23787", "scanner": "scanner-primary", "fingerprint": "6fdc91efd0fdab67", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/remove-saved-card/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-27d4779320c0806a", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/save-tenant-field-mappings/index.ts:4"}, "properties": {"repobilityId": "670dc8afac31da6d", "scanner": "scanner-primary", "fingerprint": "27d4779320c0806a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/save-tenant-field-mappings/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-8331adcd902e0493", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/payments-webhook/index.ts:5"}, "properties": {"repobilityId": "70f9d7be83744f48", "scanner": "scanner-primary", "fingerprint": "8331adcd902e0493", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/payments-webhook/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-8e296d9b2923738e", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/validate-ghl-credentials/index.ts:5"}, "properties": {"repobilityId": "a582ad1a2ed43a71", "scanner": "scanner-primary", "fingerprint": "8e296d9b2923738e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/validate-ghl-credentials/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-4694f1f0711f1926", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/delete-tenant/index.ts:4"}, "properties": {"repobilityId": "5a4a35117a6bcdf2", "scanner": "scanner-primary", "fingerprint": "4694f1f0711f1926", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/delete-tenant/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-37101e1b37908a04", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/tts-briefing/index.ts:7"}, "properties": {"repobilityId": "a6bf45db82102fe4", "scanner": "scanner-primary", "fingerprint": "37101e1b37908a04", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/tts-briefing/index.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-fbdebf2e7c1a557c", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/revoke-invitation/index.ts:4"}, "properties": {"repobilityId": "81db99d3720e473a", "scanner": "scanner-primary", "fingerprint": "fbdebf2e7c1a557c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/revoke-invitation/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-5299101444c20275", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/generate-day-briefing/index.ts:7"}, "properties": {"repobilityId": "006143767e7210b2", "scanner": "scanner-primary", "fingerprint": "5299101444c20275", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/generate-day-briefing/index.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-7ae470630899bb14", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/preview-invitation/index.ts:6"}, "properties": {"repobilityId": "c23d5c23711c791b", "scanner": "scanner-primary", "fingerprint": "7ae470630899bb14", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/preview-invitation/index.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-8025619e1d30063a", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/map-all-tenants-fields/index.ts:4"}, "properties": {"repobilityId": "074d71c8513f7451", "scanner": "scanner-primary", "fingerprint": "8025619e1d30063a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/map-all-tenants-fields/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-8f4316e94a097442", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/sync-resume-cron/index.ts:7"}, "properties": {"repobilityId": "7f2b646c56f2fa78", "scanner": "scanner-primary", "fingerprint": "8f4316e94a097442", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/sync-resume-cron/index.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-de267cde01cdf004", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/log-admin-event/index.ts:4"}, "properties": {"repobilityId": "94ede46620eb3de4", "scanner": "scanner-primary", "fingerprint": "de267cde01cdf004", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/log-admin-event/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-63d0ea0586de7bc3", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/invite-user/index.ts:4"}, "properties": {"repobilityId": "e59991a44f16eaa8", "scanner": "scanner-primary", "fingerprint": "63d0ea0586de7bc3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/invite-user/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-8c9676464cd50c41", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/check-notes-access/index.ts:8"}, "properties": {"repobilityId": "807e96b29cd6da1d", "scanner": "scanner-primary", "fingerprint": "8c9676464cd50c41", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/check-notes-access/index.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-c1a08b45423946d9", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/ai-analyze/index.ts:6"}, "properties": {"repobilityId": "a61a2ea194e5118c", "scanner": "scanner-primary", "fingerprint": "c1a08b45423946d9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/ai-analyze/index.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-97e461909ac168fa", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/ghl-sync/index.ts:10"}, "properties": {"repobilityId": "4afdbb265e8fa152", "scanner": "scanner-primary", "fingerprint": "97e461909ac168fa", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/ghl-sync/index.ts"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-5ae54f4bf9736b58", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/update-tenant-billing-mode/index.ts:4"}, "properties": {"repobilityId": "3b0c973a9183b7b7", "scanner": "scanner-primary", "fingerprint": "5ae54f4bf9736b58", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/update-tenant-billing-mode/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-4e6054fbcf5b57b0", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/remove-tenant-member/index.ts:4"}, "properties": {"repobilityId": "a2c1d936a63ff84a", "scanner": "scanner-primary", "fingerprint": "4e6054fbcf5b57b0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/remove-tenant-member/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-42b6d03f16018912", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/accept-invitation/index.ts:7"}, "properties": {"repobilityId": "26f5a62f96fd023b", "scanner": "scanner-primary", "fingerprint": "42b6d03f16018912", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/accept-invitation/index.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-a1a9c638d23ad7ed", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/save-tenant-pipelines/index.ts:8"}, "properties": {"repobilityId": "7fc37ffc3cd1e6f8", "scanner": "scanner-primary", "fingerprint": "a1a9c638d23ad7ed", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/save-tenant-pipelines/index.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-c6f950d2e74d82ea", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/sync-all-tenants-cron/index.ts:6"}, "properties": {"repobilityId": "023e79dbbf3fd258", "scanner": "scanner-primary", "fingerprint": "c6f950d2e74d82ea", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/sync-all-tenants-cron/index.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-7acab5dff147827b", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/discover-tenant-fields/index.ts:4"}, "properties": {"repobilityId": "89dfc0d83e757f6d", "scanner": "scanner-primary", "fingerprint": "7acab5dff147827b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/discover-tenant-fields/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-080313caf3df908b", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/update-tenant/index.ts:5"}, "properties": {"repobilityId": "5ebade7d28e7f5fc", "scanner": "scanner-primary", "fingerprint": "080313caf3df908b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/update-tenant/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-129c75dfdf8cef90", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/create-checkout-session/index.ts:5"}, "properties": {"repobilityId": "f6f200222ecfd259", "scanner": "scanner-primary", "fingerprint": "129c75dfdf8cef90", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/create-checkout-session/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-9a4739a6a22bfa4e", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/list-tenant-pipelines/index.ts:8"}, "properties": {"repobilityId": "3056a6c06628a2e7", "scanner": "scanner-primary", "fingerprint": "9a4739a6a22bfa4e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/list-tenant-pipelines/index.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-0427653c0e7002f8", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/backups/backend-export/edge-functions/save-billing-settings/index.ts:4"}, "properties": {"repobilityId": "67fb8f3e1dbc49b8", "scanner": "scanner-primary", "fingerprint": "0427653c0e7002f8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/backups/backend-export/edge-functions/save-billing-settings/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-3670130f80e5aafe", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/create-tenant/index.ts:5"}, "properties": {"repobilityId": "5318ad113653b5c1", "scanner": "scanner-primary", "fingerprint": "3670130f80e5aafe", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/create-tenant/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-7bedd78390a0277a", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/analyze-lead/index.ts:7"}, "properties": {"repobilityId": "e4ff0af586b3d133", "scanner": "scanner-primary", "fingerprint": "7bedd78390a0277a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/analyze-lead/index.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-c1b0355e7995e666", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/remove-saved-card/index.ts:5"}, "properties": {"repobilityId": "4cf2566c80b112f2", "scanner": "scanner-primary", "fingerprint": "c1b0355e7995e666", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/remove-saved-card/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-7a1b6807fc91d53e", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/save-tenant-field-mappings/index.ts:4"}, "properties": {"repobilityId": "aafd85074235b61d", "scanner": "scanner-primary", "fingerprint": "7a1b6807fc91d53e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/save-tenant-field-mappings/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-d74f5275fcf781f1", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/payments-webhook/index.ts:5"}, "properties": {"repobilityId": "e950b5caec2c3736", "scanner": "scanner-primary", "fingerprint": "d74f5275fcf781f1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/payments-webhook/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-c0504d49985c0602", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/validate-ghl-credentials/index.ts:5"}, "properties": {"repobilityId": "6ed2295b18fff663", "scanner": "scanner-primary", "fingerprint": "c0504d49985c0602", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/validate-ghl-credentials/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-2949b413d14745af", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/delete-tenant/index.ts:4"}, "properties": {"repobilityId": "73458da7c67da6de", "scanner": "scanner-primary", "fingerprint": "2949b413d14745af", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/delete-tenant/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-cd01da45f0f2353b", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/tts-briefing/index.ts:7"}, "properties": {"repobilityId": "c57357ff9e98d22d", "scanner": "scanner-primary", "fingerprint": "cd01da45f0f2353b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/tts-briefing/index.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-50fdf7f2a40c8d85", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/revoke-invitation/index.ts:4"}, "properties": {"repobilityId": "5828a24829c6afd3", "scanner": "scanner-primary", "fingerprint": "50fdf7f2a40c8d85", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/revoke-invitation/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-6ccb167d50fbcbd1", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/generate-day-briefing/index.ts:7"}, "properties": {"repobilityId": "90079bacfb052260", "scanner": "scanner-primary", "fingerprint": "6ccb167d50fbcbd1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/generate-day-briefing/index.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-398f1f96b037c9f0", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/preview-invitation/index.ts:6"}, "properties": {"repobilityId": "67739aa7f26f7c8f", "scanner": "scanner-primary", "fingerprint": "398f1f96b037c9f0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/preview-invitation/index.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-4b99c310783c7eff", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/map-all-tenants-fields/index.ts:4"}, "properties": {"repobilityId": "48ba98dfd6cb5ee9", "scanner": "scanner-primary", "fingerprint": "4b99c310783c7eff", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/map-all-tenants-fields/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-9df453bb5fe5ff32", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/sync-resume-cron/index.ts:7"}, "properties": {"repobilityId": "a7d376e1e83616da", "scanner": "scanner-primary", "fingerprint": "9df453bb5fe5ff32", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/sync-resume-cron/index.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-4b2cf8b71a16be8e", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/log-admin-event/index.ts:4"}, "properties": {"repobilityId": "d487b1a4422a9ae6", "scanner": "scanner-primary", "fingerprint": "4b2cf8b71a16be8e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/log-admin-event/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-26074644a82895ea", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/invite-user/index.ts:4"}, "properties": {"repobilityId": "d8a37264eb2ba92a", "scanner": "scanner-primary", "fingerprint": "26074644a82895ea", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/invite-user/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-1945e7abb931ac8d", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/check-notes-access/index.ts:8"}, "properties": {"repobilityId": "0a13496ddb847ca2", "scanner": "scanner-primary", "fingerprint": "1945e7abb931ac8d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/check-notes-access/index.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-fde73bda9e507c52", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/ai-analyze/index.ts:7"}, "properties": {"repobilityId": "6ece9a6252cc72cd", "scanner": "scanner-primary", "fingerprint": "fde73bda9e507c52", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/ai-analyze/index.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-e3541bcb053ac9cd", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/ghl-sync/index.ts:10"}, "properties": {"repobilityId": "022768ab8ab3454e", "scanner": "scanner-primary", "fingerprint": "e3541bcb053ac9cd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/ghl-sync/index.ts"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-e5a7936e4e47ed09", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/update-tenant-billing-mode/index.ts:4"}, "properties": {"repobilityId": "b9a88385d3ad220f", "scanner": "scanner-primary", "fingerprint": "e5a7936e4e47ed09", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/update-tenant-billing-mode/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-ae01dbd58f2ab00b", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/remove-tenant-member/index.ts:4"}, "properties": {"repobilityId": "a2ed0a343884cf71", "scanner": "scanner-primary", "fingerprint": "ae01dbd58f2ab00b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/remove-tenant-member/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-05549a2ee186ad74", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/accept-invitation/index.ts:7"}, "properties": {"repobilityId": "1b0ebc0c3c19613c", "scanner": "scanner-primary", "fingerprint": "05549a2ee186ad74", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/accept-invitation/index.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-8ee6beac684cde66", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/save-tenant-pipelines/index.ts:8"}, "properties": {"repobilityId": "17a33ad13a21a1a7", "scanner": "scanner-primary", "fingerprint": "8ee6beac684cde66", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/save-tenant-pipelines/index.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-e0578324f2c8fdec", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/sync-all-tenants-cron/index.ts:6"}, "properties": {"repobilityId": "0494a0a69486337f", "scanner": "scanner-primary", "fingerprint": "e0578324f2c8fdec", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/sync-all-tenants-cron/index.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-e99fa60e5aae9f94", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/discover-tenant-fields/index.ts:4"}, "properties": {"repobilityId": "4d2acbc76d6c25d9", "scanner": "scanner-primary", "fingerprint": "e99fa60e5aae9f94", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/discover-tenant-fields/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-1cd486efdfc70e66", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/update-tenant/index.ts:5"}, "properties": {"repobilityId": "b56ec8d08fdbeff3", "scanner": "scanner-primary", "fingerprint": "1cd486efdfc70e66", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/update-tenant/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-c7a163fd2b016e66", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/create-checkout-session/index.ts:5"}, "properties": {"repobilityId": "93a0bdfd2c012bf7", "scanner": "scanner-primary", "fingerprint": "c7a163fd2b016e66", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/create-checkout-session/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-e522de23f22b42e8", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/list-tenant-pipelines/index.ts:8"}, "properties": {"repobilityId": "aa377458bdab3dd8", "scanner": "scanner-primary", "fingerprint": "e522de23f22b42e8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/list-tenant-pipelines/index.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-7ef3179034d1f790", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in closercontrolleadintel/supabase/functions/save-billing-settings/index.ts:4"}, "properties": {"repobilityId": "47ea9fc380611b0f", "scanner": "scanner-primary", "fingerprint": "7ef3179034d1f790", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/supabase/functions/save-billing-settings/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-ff301f9ae1f4f6c5", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in closercontrolleadintel/src/components/ui/chart.tsx:70"}, "properties": {"repobilityId": "ec356874f7051a93", "scanner": "scanner-primary", "fingerprint": "ff301f9ae1f4f6c5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "closercontrolleadintel/src/components/ui/chart.tsx"}, "region": {"startLine": 70}}}]}, {"ruleId": "scanner-c8fa2e10b3925c3b", "level": "error", "message": {"text": "Possible secret in leadintel-selfhost/Makefile"}, "properties": {"repobilityId": "4c0a528cbc1c818f", "scanner": "scanner-primary", "fingerprint": "c8fa2e10b3925c3b", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/Makefile"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-1b5635f071b9bf94", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/create-tenant/index.ts:5"}, "properties": {"repobilityId": "28d9e4776e0ea945", "scanner": "scanner-primary", "fingerprint": "1b5635f071b9bf94", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/create-tenant/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-4500f582532821ed", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/analyze-lead/index.ts:7"}, "properties": {"repobilityId": "a67a388185dea26f", "scanner": "scanner-primary", "fingerprint": "4500f582532821ed", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/analyze-lead/index.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-f27325eefdd46bd8", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/remove-saved-card/index.ts:5"}, "properties": {"repobilityId": "3a82b17c76352c46", "scanner": "scanner-primary", "fingerprint": "f27325eefdd46bd8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/remove-saved-card/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-85cdd6ad89f2e821", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/save-tenant-field-mappings/index.ts:4"}, "properties": {"repobilityId": "b934606c170dd548", "scanner": "scanner-primary", "fingerprint": "85cdd6ad89f2e821", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/save-tenant-field-mappings/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-d78cb03e6d512668", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/payments-webhook/index.ts:5"}, "properties": {"repobilityId": "76d4d6f0fd8f72b0", "scanner": "scanner-primary", "fingerprint": "d78cb03e6d512668", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/payments-webhook/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-46969047f08a6567", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/validate-ghl-credentials/index.ts:5"}, "properties": {"repobilityId": "7949d4fe1d8f140a", "scanner": "scanner-primary", "fingerprint": "46969047f08a6567", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/validate-ghl-credentials/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-270cce88e3665527", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/delete-tenant/index.ts:4"}, "properties": {"repobilityId": "0652964110392eb0", "scanner": "scanner-primary", "fingerprint": "270cce88e3665527", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/delete-tenant/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-e08c5e89f7c51974", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/tts-briefing/index.ts:7"}, "properties": {"repobilityId": "5e44779efe8a117f", "scanner": "scanner-primary", "fingerprint": "e08c5e89f7c51974", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/tts-briefing/index.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-81f6170228a11d61", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/revoke-invitation/index.ts:4"}, "properties": {"repobilityId": "138a55cd435d144d", "scanner": "scanner-primary", "fingerprint": "81f6170228a11d61", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/revoke-invitation/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-1a1150b84b464cdb", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/generate-day-briefing/index.ts:7"}, "properties": {"repobilityId": "77879e76ca03a32c", "scanner": "scanner-primary", "fingerprint": "1a1150b84b464cdb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/generate-day-briefing/index.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-a9eb982addfc81f2", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/preview-invitation/index.ts:6"}, "properties": {"repobilityId": "9d596ac50625d3c7", "scanner": "scanner-primary", "fingerprint": "a9eb982addfc81f2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/preview-invitation/index.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-988ca099a2fc03bb", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/map-all-tenants-fields/index.ts:4"}, "properties": {"repobilityId": "46ed994067bfad2c", "scanner": "scanner-primary", "fingerprint": "988ca099a2fc03bb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/map-all-tenants-fields/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-183211329cdac0ca", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/sync-resume-cron/index.ts:7"}, "properties": {"repobilityId": "71e876c9d730cef9", "scanner": "scanner-primary", "fingerprint": "183211329cdac0ca", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/sync-resume-cron/index.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-7db2e93fc51b27f3", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/log-admin-event/index.ts:4"}, "properties": {"repobilityId": "db65ede709915fe9", "scanner": "scanner-primary", "fingerprint": "7db2e93fc51b27f3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/log-admin-event/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-0867b9637de81b53", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/invite-user/index.ts:4"}, "properties": {"repobilityId": "45e6c4c517671ea6", "scanner": "scanner-primary", "fingerprint": "0867b9637de81b53", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/invite-user/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-2cbbb57771b12801", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/check-notes-access/index.ts:8"}, "properties": {"repobilityId": "4c3f970e1e78bb3f", "scanner": "scanner-primary", "fingerprint": "2cbbb57771b12801", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/check-notes-access/index.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-4422b48bd468a7af", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/ai-analyze/index.ts:7"}, "properties": {"repobilityId": "af81bfe9d711a952", "scanner": "scanner-primary", "fingerprint": "4422b48bd468a7af", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/ai-analyze/index.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-512d02e1cf92c2a5", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/ghl-sync/index.ts:10"}, "properties": {"repobilityId": "3ed2abaa0131cb82", "scanner": "scanner-primary", "fingerprint": "512d02e1cf92c2a5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/ghl-sync/index.ts"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-bd93bd60fe32b527", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/update-tenant-billing-mode/index.ts:4"}, "properties": {"repobilityId": "4f6adf404ff91f1e", "scanner": "scanner-primary", "fingerprint": "bd93bd60fe32b527", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/update-tenant-billing-mode/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-c01bec16565df1d4", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/remove-tenant-member/index.ts:4"}, "properties": {"repobilityId": "645a59a11b027a7c", "scanner": "scanner-primary", "fingerprint": "c01bec16565df1d4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/remove-tenant-member/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-621f75c5af32ce71", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/accept-invitation/index.ts:7"}, "properties": {"repobilityId": "67e950068f471376", "scanner": "scanner-primary", "fingerprint": "621f75c5af32ce71", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/accept-invitation/index.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-b3b13bd53e52a15f", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/save-tenant-pipelines/index.ts:8"}, "properties": {"repobilityId": "d709ea79ddedce26", "scanner": "scanner-primary", "fingerprint": "b3b13bd53e52a15f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/save-tenant-pipelines/index.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-09a1e6f1b6850e13", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/sync-all-tenants-cron/index.ts:6"}, "properties": {"repobilityId": "cfa7a5923be1072f", "scanner": "scanner-primary", "fingerprint": "09a1e6f1b6850e13", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/sync-all-tenants-cron/index.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-3bf73aae7add0def", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/discover-tenant-fields/index.ts:4"}, "properties": {"repobilityId": "6393c9c27d6dda53", "scanner": "scanner-primary", "fingerprint": "3bf73aae7add0def", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/discover-tenant-fields/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-27de6ce6d3114b3b", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/update-tenant/index.ts:5"}, "properties": {"repobilityId": "916333066bd539d3", "scanner": "scanner-primary", "fingerprint": "27de6ce6d3114b3b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/update-tenant/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-9324c60e74b7ec82", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/create-checkout-session/index.ts:5"}, "properties": {"repobilityId": "405a7f64c4668377", "scanner": "scanner-primary", "fingerprint": "9324c60e74b7ec82", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/create-checkout-session/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-859f384b078b785c", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/list-tenant-pipelines/index.ts:8"}, "properties": {"repobilityId": "6b5ea836cc732652", "scanner": "scanner-primary", "fingerprint": "859f384b078b785c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/list-tenant-pipelines/index.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-d1a05a89dd2adebb", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/apps/web/supabase/functions/save-billing-settings/index.ts:4"}, "properties": {"repobilityId": "0f611f7f8bf90065", "scanner": "scanner-primary", "fingerprint": "d1a05a89dd2adebb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/supabase/functions/save-billing-settings/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-3d931ae58f274d3d", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in leadintel-selfhost/apps/web/src/components/ui/chart.tsx:70"}, "properties": {"repobilityId": "5afccf62b0f0e0cf", "scanner": "scanner-primary", "fingerprint": "3d931ae58f274d3d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/apps/web/src/components/ui/chart.tsx"}, "region": {"startLine": 70}}}]}, {"ruleId": "scanner-8d5b1a0b774487f1", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/create-tenant/index.ts:5"}, "properties": {"repobilityId": "81623f0fb8355d5a", "scanner": "scanner-primary", "fingerprint": "8d5b1a0b774487f1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/create-tenant/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-779fd7eec4ad6cf5", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/analyze-lead/index.ts:7"}, "properties": {"repobilityId": "4e2322cce593c64f", "scanner": "scanner-primary", "fingerprint": "779fd7eec4ad6cf5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/analyze-lead/index.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-8e3bb09dfb9315c7", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/remove-saved-card/index.ts:5"}, "properties": {"repobilityId": "8bd02f25c410bc05", "scanner": "scanner-primary", "fingerprint": "8e3bb09dfb9315c7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/remove-saved-card/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-d1403898fad7d644", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/save-tenant-field-mappings/index.ts:4"}, "properties": {"repobilityId": "49c8c9c33807ee8f", "scanner": "scanner-primary", "fingerprint": "d1403898fad7d644", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/save-tenant-field-mappings/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-33de0593afa5dbf1", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/payments-webhook/index.ts:5"}, "properties": {"repobilityId": "beeb7b49f468c988", "scanner": "scanner-primary", "fingerprint": "33de0593afa5dbf1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/payments-webhook/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-b4d1dfc290512ed8", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/validate-ghl-credentials/index.ts:5"}, "properties": {"repobilityId": "b1a8243c7aa51530", "scanner": "scanner-primary", "fingerprint": "b4d1dfc290512ed8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/validate-ghl-credentials/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-88f7a70fdffbcc65", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/delete-tenant/index.ts:4"}, "properties": {"repobilityId": "80598a21c84a2ed8", "scanner": "scanner-primary", "fingerprint": "88f7a70fdffbcc65", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/delete-tenant/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-5f7978342c5104b1", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/tts-briefing/index.ts:7"}, "properties": {"repobilityId": "f466342f7196314b", "scanner": "scanner-primary", "fingerprint": "5f7978342c5104b1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/tts-briefing/index.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-303eb743f5982099", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/revoke-invitation/index.ts:4"}, "properties": {"repobilityId": "b279fe33332544fb", "scanner": "scanner-primary", "fingerprint": "303eb743f5982099", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/revoke-invitation/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-1fd61cadd44a77aa", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/generate-day-briefing/index.ts:7"}, "properties": {"repobilityId": "31d082d19dbf27b3", "scanner": "scanner-primary", "fingerprint": "1fd61cadd44a77aa", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/generate-day-briefing/index.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-9702cd96b29a672c", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/preview-invitation/index.ts:6"}, "properties": {"repobilityId": "ac55235b485e8f43", "scanner": "scanner-primary", "fingerprint": "9702cd96b29a672c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/preview-invitation/index.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-f30f47c510cbe447", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/map-all-tenants-fields/index.ts:4"}, "properties": {"repobilityId": "7e1065f8d0d12cbf", "scanner": "scanner-primary", "fingerprint": "f30f47c510cbe447", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/map-all-tenants-fields/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-444ac3d6b892d3ae", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/sync-resume-cron/index.ts:7"}, "properties": {"repobilityId": "91dc2c78119d60c6", "scanner": "scanner-primary", "fingerprint": "444ac3d6b892d3ae", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/sync-resume-cron/index.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-6ae21d95ae9e4d8a", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/log-admin-event/index.ts:4"}, "properties": {"repobilityId": "39952c48dac19104", "scanner": "scanner-primary", "fingerprint": "6ae21d95ae9e4d8a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/log-admin-event/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-083ff4b8ea13eca9", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/invite-user/index.ts:4"}, "properties": {"repobilityId": "9aebc8af37a94f95", "scanner": "scanner-primary", "fingerprint": "083ff4b8ea13eca9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/invite-user/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-e57fa2150f89529b", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/check-notes-access/index.ts:8"}, "properties": {"repobilityId": "92b582cd849402e6", "scanner": "scanner-primary", "fingerprint": "e57fa2150f89529b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/check-notes-access/index.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-21bcbffcde949c3e", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/ai-analyze/index.ts:7"}, "properties": {"repobilityId": "277d8f45b3107ad6", "scanner": "scanner-primary", "fingerprint": "21bcbffcde949c3e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/ai-analyze/index.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-42d85cd1e6a28d27", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/ghl-sync/index.ts:10"}, "properties": {"repobilityId": "99e6d42082414036", "scanner": "scanner-primary", "fingerprint": "42d85cd1e6a28d27", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/ghl-sync/index.ts"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-b1da63a4e2ce1d0d", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/update-tenant-billing-mode/index.ts:4"}, "properties": {"repobilityId": "509068186ab0029d", "scanner": "scanner-primary", "fingerprint": "b1da63a4e2ce1d0d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/update-tenant-billing-mode/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-4ecd3db523f638f1", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/remove-tenant-member/index.ts:4"}, "properties": {"repobilityId": "3740f215ee986f1d", "scanner": "scanner-primary", "fingerprint": "4ecd3db523f638f1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/remove-tenant-member/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-4327bd0122cf6994", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/accept-invitation/index.ts:7"}, "properties": {"repobilityId": "33748fb26b44bfcc", "scanner": "scanner-primary", "fingerprint": "4327bd0122cf6994", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/accept-invitation/index.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-c5374e1115e59985", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/save-tenant-pipelines/index.ts:8"}, "properties": {"repobilityId": "6c9c9079b707d69b", "scanner": "scanner-primary", "fingerprint": "c5374e1115e59985", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/save-tenant-pipelines/index.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-939aef3f13317f91", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/sync-all-tenants-cron/index.ts:6"}, "properties": {"repobilityId": "27fea522d854a4f0", "scanner": "scanner-primary", "fingerprint": "939aef3f13317f91", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/sync-all-tenants-cron/index.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-e7d15c19442b8f28", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/discover-tenant-fields/index.ts:4"}, "properties": {"repobilityId": "4e714eb585ae00fb", "scanner": "scanner-primary", "fingerprint": "e7d15c19442b8f28", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/discover-tenant-fields/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-e7501c13b5160a96", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/update-tenant/index.ts:5"}, "properties": {"repobilityId": "aa1b4cee1fe41958", "scanner": "scanner-primary", "fingerprint": "e7501c13b5160a96", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/update-tenant/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-e26d2446585dc301", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/create-checkout-session/index.ts:5"}, "properties": {"repobilityId": "e423f65d037ccd47", "scanner": "scanner-primary", "fingerprint": "e26d2446585dc301", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/create-checkout-session/index.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-a108645d7ce6dccb", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/list-tenant-pipelines/index.ts:8"}, "properties": {"repobilityId": "99c466b6dd95824b", "scanner": "scanner-primary", "fingerprint": "a108645d7ce6dccb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/list-tenant-pipelines/index.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-55a6087da30a955c", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in leadintel-selfhost/supabase/functions/save-billing-settings/index.ts:4"}, "properties": {"repobilityId": "05b0f854bdd7122c", "scanner": "scanner-primary", "fingerprint": "55a6087da30a955c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/supabase/functions/save-billing-settings/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-ab7988a426d14dab", "level": "note", "message": {"text": "Very large file: my-acq-coach-5b771b53/backups/migration-export/functions/ghl-proxy/index.ts (1934 lines)"}, "properties": {"repobilityId": "b0dae97478c0a853", "scanner": "scanner-primary", "fingerprint": "ab7988a426d14dab", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-61cce95e64be2ef9", "level": "note", "message": {"text": "Very large file: my-acq-coach-5b771b53/supabase/functions/ghl-proxy/index.ts (1997 lines)"}, "properties": {"repobilityId": "9f5efefc93fef8e0", "scanner": "scanner-primary", "fingerprint": "61cce95e64be2ef9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c1e9e4539def0154", "level": "note", "message": {"text": "Very large file: my-acq-coach-5b771b53/src/RepView.jsx (2768 lines)"}, "properties": {"repobilityId": "4249355f4092ee18", "scanner": "scanner-primary", "fingerprint": "c1e9e4539def0154", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9dbc08f27cfcb7ff", "level": "note", "message": {"text": "Very large file: my-acq-coach-5b771b53/src/ACQCoach.jsx (5753 lines)"}, "properties": {"repobilityId": "63d05d801c082814", "scanner": "scanner-primary", "fingerprint": "9dbc08f27cfcb7ff", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-35c65d8b11193968", "level": "note", "message": {"text": "Very large file: my-acq-coach-5b771b53/src/pages/SuperAdmin.tsx (956 lines)"}, "properties": {"repobilityId": "47262b0b1b1b3f42", "scanner": "scanner-primary", "fingerprint": "35c65d8b11193968", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ce628f252d4a5493", "level": "note", "message": {"text": "Very large file: acq-coach-selfhost/apps/web/supabase/functions/ghl-proxy/index.ts (1940 lines)"}, "properties": {"repobilityId": "294590f4178fffe6", "scanner": "scanner-primary", "fingerprint": "ce628f252d4a5493", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cd4802a9d0db3746", "level": "note", "message": {"text": "Very large file: acq-coach-selfhost/apps/web/src/RepView.jsx (2768 lines)"}, "properties": {"repobilityId": "771f452c6a892d23", "scanner": "scanner-primary", "fingerprint": "cd4802a9d0db3746", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b4a5341690ed2a8f", "level": "note", "message": {"text": "Very large file: acq-coach-selfhost/apps/web/src/ACQCoach.jsx (5753 lines)"}, "properties": {"repobilityId": "4d3b8eeb95a313e7", "scanner": "scanner-primary", "fingerprint": "b4a5341690ed2a8f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c3f4e8f4e4174eec", "level": "note", "message": {"text": "Very large file: acq-coach-selfhost/apps/web/src/pages/SuperAdmin.tsx (956 lines)"}, "properties": {"repobilityId": "9c289ce1fffa42ca", "scanner": "scanner-primary", "fingerprint": "c3f4e8f4e4174eec", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2405e11c2874cdb0", "level": "note", "message": {"text": "Very large file: acq-coach-selfhost/supabase/functions/ghl-proxy/index.ts (1997 lines)"}, "properties": {"repobilityId": "62cae71b216bd394", "scanner": "scanner-primary", "fingerprint": "2405e11c2874cdb0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f7ee1f0edd252b5a", "level": "note", "message": {"text": "Very large file: closercontrolleadintel/backups/backend-export/edge-functions/ghl-sync/index.ts (1507 lines)"}, "properties": {"repobilityId": "fd95a34fde0ee94e", "scanner": "scanner-primary", "fingerprint": "f7ee1f0edd252b5a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d8f6f2f56e42ecc5", "level": "note", "message": {"text": "Very large file: closercontrolleadintel/supabase/functions/ghl-sync/index.ts (1524 lines)"}, "properties": {"repobilityId": "68c3e43622c4cf7c", "scanner": "scanner-primary", "fingerprint": "d8f6f2f56e42ecc5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-126444db8074b39f", "level": "note", "message": {"text": "Very large file: closercontrolleadintel/src/pages/LeadIntel.tsx (1313 lines)"}, "properties": {"repobilityId": "97714f8db0d32c05", "scanner": "scanner-primary", "fingerprint": "126444db8074b39f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5637aca6683bfd14", "level": "note", "message": {"text": "Very large file: leadintel-selfhost/apps/web/supabase/functions/ghl-sync/index.ts (1524 lines)"}, "properties": {"repobilityId": "b0edf660e3f7eb6c", "scanner": "scanner-primary", "fingerprint": "5637aca6683bfd14", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f871d8477f7d38b9", "level": "note", "message": {"text": "Very large file: leadintel-selfhost/apps/web/src/pages/LeadIntel.tsx (1313 lines)"}, "properties": {"repobilityId": "a0d77ee21bcc2709", "scanner": "scanner-primary", "fingerprint": "f871d8477f7d38b9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d15b7c3fbba2bd91", "level": "note", "message": {"text": "Very large file: leadintel-selfhost/supabase/functions/ghl-sync/index.ts (1569 lines)"}, "properties": {"repobilityId": "7ab0faf463f1c130", "scanner": "scanner-primary", "fingerprint": "d15b7c3fbba2bd91", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "d8e57801a182603d", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "6b1431964b19e01b", "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": "ac75cefbafa4ccbd", "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": "2e80ab88ea00406f", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "2071b7a1c72be627", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "5d4e670505df0522", "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": "801a1419828deacc", "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": "a8ac0a96f2be5457", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-499121537ec3db67", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: leadintel-selfhost/CLAUDE.md"}, "properties": {"repobilityId": "e3cc571dfed62f48", "scanner": "scanner-primary", "fingerprint": "499121537ec3db67", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "leadintel-selfhost/CLAUDE.md"}, "region": {"startLine": 67}}}]}, {"ruleId": "scanner-785a2a77eed74e55", "level": "none", "message": {"text": "Commented-code block (5 lines) in platform-admin-api/src/auth.ts:3"}, "properties": {"repobilityId": "e6c1a4c4e3559b09", "scanner": "scanner-primary", "fingerprint": "785a2a77eed74e55", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b0e9371f207fe32c", "level": "none", "message": {"text": "Commented-code block (6 lines) in platform-admin-api/src/lib/wallet-mirror.ts:4"}, "properties": {"repobilityId": "01e22b34c41fb416", "scanner": "scanner-primary", "fingerprint": "b0e9371f207fe32c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6381ee0bb1db160c", "level": "none", "message": {"text": "Commented-code block (5 lines) in platform-admin-api/src/lib/app-customer.ts:31"}, "properties": {"repobilityId": "219bd78b3dc473d7", "scanner": "scanner-primary", "fingerprint": "6381ee0bb1db160c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-db4784d0f2a7a58b", "level": "none", "message": {"text": "Commented-code block (5 lines) in platform-admin-api/src/lib/sync-scheduler.ts:8"}, "properties": {"repobilityId": "9385309e8a9cb05e", "scanner": "scanner-primary", "fingerprint": "db4784d0f2a7a58b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b058c6a6b628de84", "level": "none", "message": {"text": "Commented-code block (5 lines) in platform-admin-api/src/lib/provisioning.ts:3"}, "properties": {"repobilityId": "c5a1ac603c23b2ab", "scanner": "scanner-primary", "fingerprint": "b058c6a6b628de84", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ab615f611cb44022", "level": "none", "message": {"text": "Commented-code block (6 lines) in platform-admin-api/src/lib/auto-recharge.ts:4"}, "properties": {"repobilityId": "e335c49c4cd269e4", "scanner": "scanner-primary", "fingerprint": "ab615f611cb44022", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-48340ac56993fc54", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 platform-admin-api/src/lib/auto-recharge.ts:39"}, "properties": {"repobilityId": "ec8046294066644a", "scanner": "scanner-primary", "fingerprint": "48340ac56993fc54", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ab45fee49ef59a5e", "level": "none", "message": {"text": "Commented-code block (5 lines) in platform-admin-api/src/routes/sso.ts:4"}, "properties": {"repobilityId": "3861d9f2bc88cbc3", "scanner": "scanner-primary", "fingerprint": "ab45fee49ef59a5e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2306567c31165337", "level": "none", "message": {"text": "Commented-code block (9 lines) in platform-admin-api/src/routes/topup.ts:3"}, "properties": {"repobilityId": "980de509ada0a1cf", "scanner": "scanner-primary", "fingerprint": "2306567c31165337", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-640182f01db2381a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 platform-admin-api/src/routes/topup.ts:64"}, "properties": {"repobilityId": "96f765ca0d2e97f5", "scanner": "scanner-primary", "fingerprint": "640182f01db2381a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-18229358d0281705", "level": "none", "message": {"text": "Commented-code block (6 lines) in platform-admin-api/src/routes/stripe-webhook.ts:7"}, "properties": {"repobilityId": "8ada5842dbeb241a", "scanner": "scanner-primary", "fingerprint": "18229358d0281705", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-616b71c3fce4518f", "level": "none", "message": {"text": "Commented-code block (6 lines) in platform-admin-api/src/routes/users-password.ts:7"}, "properties": {"repobilityId": "6e9efca85fc73874", "scanner": "scanner-primary", "fingerprint": "616b71c3fce4518f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a76ec64bd6b275b0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 platform-admin-api/src/routes/ghl-credentials.ts:248"}, "properties": {"repobilityId": "0c433734b26d7135", "scanner": "scanner-primary", "fingerprint": "a76ec64bd6b275b0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-974ac61ad1f9a728", "level": "none", "message": {"text": "Commented-code block (5 lines) in platform-admin-api/src/routes/customers.ts:262"}, "properties": {"repobilityId": "6cb0c2ca9317a500", "scanner": "scanner-primary", "fingerprint": "974ac61ad1f9a728", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-15b6d443e1b012c9", "level": "none", "message": {"text": "Commented-code block (6 lines) in platform-admin-api/src/routes/master-keys.ts:3"}, "properties": {"repobilityId": "30ba8c8087b857e7", "scanner": "scanner-primary", "fingerprint": "15b6d443e1b012c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fc350d2995baa38f", "level": "none", "message": {"text": "Commented-code block (6 lines) in platform-admin-api/src/routes/wallet.ts:9"}, "properties": {"repobilityId": "6f6a84d05e4b464a", "scanner": "scanner-primary", "fingerprint": "fc350d2995baa38f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef739ab5fbc527b5", "level": "none", "message": {"text": "Commented-code block (5 lines) in platform-admin-api/src/routes/users-create.ts:9"}, "properties": {"repobilityId": "9717f8646e8116a2", "scanner": "scanner-primary", "fingerprint": "ef739ab5fbc527b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2753e817df50bb03", "level": "none", "message": {"text": "Commented-code block (6 lines) in my-acq-coach-5b771b53/playwright.config.ts:4"}, "properties": {"repobilityId": "098a0795d6740d88", "scanner": "scanner-primary", "fingerprint": "2753e817df50bb03", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d441d4dc0d767304", "level": "none", "message": {"text": "Commented-code block (6 lines) in my-acq-coach-5b771b53/backups/migration-export/functions/cron-sync/index.ts:1"}, "properties": {"repobilityId": "af0e17b475af0f67", "scanner": "scanner-primary", "fingerprint": "d441d4dc0d767304", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4423c9d437af2b5e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/cron-sync/index.ts:103"}, "properties": {"repobilityId": "e4eb8cc1061f0d5f", "scanner": "scanner-primary", "fingerprint": "4423c9d437af2b5e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1275c96eb38acfee", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/ai-chat/index.ts:21"}, "properties": {"repobilityId": "7fb979edb3287466", "scanner": "scanner-primary", "fingerprint": "1275c96eb38acfee", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3db7de64decd1cd7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/transcribe/index.ts:36"}, "properties": {"repobilityId": "e7982bceaa410f53", "scanner": "scanner-primary", "fingerprint": "3db7de64decd1cd7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f3eafbb974fe7a6c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/admin-api/index.ts:538"}, "properties": {"repobilityId": "bf62b9c08355f76c", "scanner": "scanner-primary", "fingerprint": "f3eafbb974fe7a6c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-79571f62c265bd39", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/ghl-proxy/index.ts:466"}, "properties": {"repobilityId": "e5ed9bcbb9cc73d4", "scanner": "scanner-primary", "fingerprint": "79571f62c265bd39", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c5b94c9a37ce9401", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/ai-tts/index.ts:28"}, "properties": {"repobilityId": "93eab1bb4540210e", "scanner": "scanner-primary", "fingerprint": "c5b94c9a37ce9401", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3487cce97bac856f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/backups/migration-export/functions/_shared/stripe.ts:27"}, "properties": {"repobilityId": "981d8670fd2d25c1", "scanner": "scanner-primary", "fingerprint": "3487cce97bac856f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ab2802a21707cd09", "level": "none", "message": {"text": "Commented-code block (6 lines) in my-acq-coach-5b771b53/supabase/functions/cron-sync/index.ts:1"}, "properties": {"repobilityId": "df7c7991ca682e31", "scanner": "scanner-primary", "fingerprint": "ab2802a21707cd09", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e7c2f060decedfe2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/supabase/functions/cron-sync/index.ts:109"}, "properties": {"repobilityId": "ca2b843bbe614b80", "scanner": "scanner-primary", "fingerprint": "e7c2f060decedfe2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0c39c4ce4a87a173", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/supabase/functions/send-digest/index.ts:111"}, "properties": {"repobilityId": "005ea370467926b7", "scanner": "scanner-primary", "fingerprint": "0c39c4ce4a87a173", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9cae5ca3fa16a246", "level": "none", "message": {"text": "Commented-code block (5 lines) in my-acq-coach-5b771b53/supabase/functions/_env-check/index.ts:29"}, "properties": {"repobilityId": "8f3bdadad138a735", "scanner": "scanner-primary", "fingerprint": "9cae5ca3fa16a246", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b9ed0c8235c6a26", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/supabase/functions/ai-chat/index.ts:21"}, "properties": {"repobilityId": "50544b9f7119ef73", "scanner": "scanner-primary", "fingerprint": "8b9ed0c8235c6a26", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f6292d45f08b49da", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/supabase/functions/transcribe/index.ts:36"}, "properties": {"repobilityId": "fcad5171cee93c33", "scanner": "scanner-primary", "fingerprint": "f6292d45f08b49da", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-00f18a10e5c138ca", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/supabase/functions/admin-api/index.ts:538"}, "properties": {"repobilityId": "8892506756f4b291", "scanner": "scanner-primary", "fingerprint": "00f18a10e5c138ca", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4c314b491926b264", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/supabase/functions/ghl-proxy/index.ts:466"}, "properties": {"repobilityId": "3dcb49ced9aff42e", "scanner": "scanner-primary", "fingerprint": "4c314b491926b264", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-099da7374ca3f5a0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/supabase/functions/ai-tts/index.ts:28"}, "properties": {"repobilityId": "21cc324d8736d5b7", "scanner": "scanner-primary", "fingerprint": "099da7374ca3f5a0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6325be2a8d211652", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/supabase/functions/_shared/stripe.ts:27"}, "properties": {"repobilityId": "36f6a0c2b2eaba57", "scanner": "scanner-primary", "fingerprint": "6325be2a8d211652", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2312a1a4bf39034c", "level": "none", "message": {"text": "Commented-code block (5 lines) in my-acq-coach-5b771b53/supabase/functions/_shared/platform.ts:36"}, "properties": {"repobilityId": "e70a68ae1ab632f1", "scanner": "scanner-primary", "fingerprint": "2312a1a4bf39034c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6407c35bebec282b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/src/RepView.jsx:582"}, "properties": {"repobilityId": "be4297e4f7f408d3", "scanner": "scanner-primary", "fingerprint": "6407c35bebec282b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b0d6349581b97a64", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/src/ACQCoach.jsx:1823"}, "properties": {"repobilityId": "c6fb92fdf052013c", "scanner": "scanner-primary", "fingerprint": "b0d6349581b97a64", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a2218c06f2cb1117", "level": "none", "message": {"text": "Commented-code block (6 lines) in my-acq-coach-5b771b53/src/ccSsoHandoff.ts:9"}, "properties": {"repobilityId": "05449299546ffac4", "scanner": "scanner-primary", "fingerprint": "a2218c06f2cb1117", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-34dbc43c9a732b69", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/src/components/TopupCheckout.tsx:31"}, "properties": {"repobilityId": "7ca6bde6dd28999e", "scanner": "scanner-primary", "fingerprint": "34dbc43c9a732b69", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ee80b60c1b1c585b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 my-acq-coach-5b771b53/src/pages/Team.tsx:63"}, "properties": {"repobilityId": "d06baafc9f5bc39b", "scanner": "scanner-primary", "fingerprint": "ee80b60c1b1c585b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f81b9b93aa6a5b09", "level": "none", "message": {"text": "Commented-code block (7 lines) in platform-launcher/src/auth.ts:3"}, "properties": {"repobilityId": "d098a1bd83c7bfef", "scanner": "scanner-primary", "fingerprint": "f81b9b93aa6a5b09", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-35a867fc12dcb154", "level": "none", "message": {"text": "Commented-code block (8 lines) in platform-launcher/src/Dashboard.tsx:331"}, "properties": {"repobilityId": "61a02083b940704e", "scanner": "scanner-primary", "fingerprint": "35a867fc12dcb154", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b60bccffef4e636", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 platform-launcher/src/Dashboard.tsx:102"}, "properties": {"repobilityId": "c36e0462b58b0d02", "scanner": "scanner-primary", "fingerprint": "8b60bccffef4e636", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0f6961844698be3d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 platform-launcher/src/WalletBanner.tsx:41"}, "properties": {"repobilityId": "381ad7b55c42d5b4", "scanner": "scanner-primary", "fingerprint": "0f6961844698be3d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d0bd55804871fea4", "level": "none", "message": {"text": "Commented-code block (7 lines) in platform-launcher/src/App.tsx:37"}, "properties": {"repobilityId": "381c6bde9c83dc7e", "scanner": "scanner-primary", "fingerprint": "d0bd55804871fea4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-328d9a87f8256d6d", "level": "none", "message": {"text": "Commented-code block (6 lines) in platform-launcher/src/admin/AdminUsersPage.tsx:485"}, "properties": {"repobilityId": "728ff96f69baa69a", "scanner": "scanner-primary", "fingerprint": "328d9a87f8256d6d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f7833406a05bc789", "level": "none", "message": {"text": "Commented-code block (6 lines) in platform-launcher/src/admin/Toast.tsx:3"}, "properties": {"repobilityId": "9ce527b1f42c4fa5", "scanner": "scanner-primary", "fingerprint": "f7833406a05bc789", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e167cb3f2bec31a3", "level": "none", "message": {"text": "Commented-code block (6 lines) in platform-launcher/src/admin/AdminPlatformSettingsPage.tsx:3"}, "properties": {"repobilityId": "9c06bea1721960f6", "scanner": "scanner-primary", "fingerprint": "e167cb3f2bec31a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b83dcac2496b2766", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 platform-launcher/src/admin/adminApi.ts:170"}, "properties": {"repobilityId": "edaefefb97d058f4", "scanner": "scanner-primary", "fingerprint": "b83dcac2496b2766", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-da47308e38d4e54f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 platform-launcher/src/account/accountApi.ts:82"}, "properties": {"repobilityId": "645065f19d81e5bb", "scanner": "scanner-primary", "fingerprint": "da47308e38d4e54f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a3fccb34658ef0e5", "level": "none", "message": {"text": "Commented-code block (6 lines) in platform-launcher/src/account/AccountShell.tsx:1"}, "properties": {"repobilityId": "ad1f44ac516d7648", "scanner": "scanner-primary", "fingerprint": "a3fccb34658ef0e5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b2354e7a90c7ee5", "level": "none", "message": {"text": "Commented-code block (6 lines) in acq-coach-selfhost/apps/web/playwright.config.ts:4"}, "properties": {"repobilityId": "fffc57e4d63247e3", "scanner": "scanner-primary", "fingerprint": "8b2354e7a90c7ee5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ae4e470b86e5cd9f", "level": "none", "message": {"text": "Commented-code block (6 lines) in acq-coach-selfhost/apps/web/supabase/functions/cron-sync/index.ts:1"}, "properties": {"repobilityId": "d1f9e516fa0414d0", "scanner": "scanner-primary", "fingerprint": "ae4e470b86e5cd9f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2fb338dccd2f7886", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/supabase/functions/cron-sync/index.ts:109"}, "properties": {"repobilityId": "6819beda42c7923b", "scanner": "scanner-primary", "fingerprint": "2fb338dccd2f7886", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f54e4ffdd442b053", "level": "none", "message": {"text": "Commented-code block (5 lines) in acq-coach-selfhost/apps/web/supabase/functions/_env-check/index.ts:29"}, "properties": {"repobilityId": "fb5e75298b480ff6", "scanner": "scanner-primary", "fingerprint": "f54e4ffdd442b053", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2553ac7e20001a0b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/supabase/functions/ai-chat/index.ts:21"}, "properties": {"repobilityId": "7b00c83a5e641cef", "scanner": "scanner-primary", "fingerprint": "2553ac7e20001a0b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0c9f62c128bd6fb3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/supabase/functions/transcribe/index.ts:36"}, "properties": {"repobilityId": "6afa3f4481135a13", "scanner": "scanner-primary", "fingerprint": "0c9f62c128bd6fb3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-170c81dc91ade5b0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/supabase/functions/admin-api/index.ts:538"}, "properties": {"repobilityId": "40db91f3ddeecedd", "scanner": "scanner-primary", "fingerprint": "170c81dc91ade5b0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9be9cf8afde1951d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/supabase/functions/ghl-proxy/index.ts:472"}, "properties": {"repobilityId": "aad6538aa92c8d32", "scanner": "scanner-primary", "fingerprint": "9be9cf8afde1951d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-625c0327ad99dcb3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/supabase/functions/ai-tts/index.ts:28"}, "properties": {"repobilityId": "dbff8587892b99ab", "scanner": "scanner-primary", "fingerprint": "625c0327ad99dcb3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-51c0fd7427842308", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/supabase/functions/_shared/stripe.ts:27"}, "properties": {"repobilityId": "aa7517cce289bab4", "scanner": "scanner-primary", "fingerprint": "51c0fd7427842308", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-87434252aee09641", "level": "none", "message": {"text": "Commented-code block (5 lines) in acq-coach-selfhost/apps/web/supabase/functions/_shared/platform.ts:36"}, "properties": {"repobilityId": "b0bc0c74514102f9", "scanner": "scanner-primary", "fingerprint": "87434252aee09641", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8c39734ca35d54a4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/src/RepView.jsx:582"}, "properties": {"repobilityId": "475156a06e269790", "scanner": "scanner-primary", "fingerprint": "8c39734ca35d54a4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7527db23a5889d17", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/src/ACQCoach.jsx:1823"}, "properties": {"repobilityId": "811a1474ca475d8b", "scanner": "scanner-primary", "fingerprint": "7527db23a5889d17", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d134fda04b93ba55", "level": "none", "message": {"text": "Commented-code block (6 lines) in acq-coach-selfhost/apps/web/src/ccSsoHandoff.ts:9"}, "properties": {"repobilityId": "d0877df6864a0b3f", "scanner": "scanner-primary", "fingerprint": "d134fda04b93ba55", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ba18fca25c36edb5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/src/components/TopupCheckout.tsx:31"}, "properties": {"repobilityId": "61546ab2e3b3eea3", "scanner": "scanner-primary", "fingerprint": "ba18fca25c36edb5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9e597847a63cf755", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/apps/web/src/pages/Team.tsx:63"}, "properties": {"repobilityId": "60161d6698df9cd4", "scanner": "scanner-primary", "fingerprint": "9e597847a63cf755", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c87976261a726b3b", "level": "none", "message": {"text": "Commented-code block (5 lines) in acq-coach-selfhost/apps/web/src/hooks/useAuth.tsx:33"}, "properties": {"repobilityId": "4ed518577755dba7", "scanner": "scanner-primary", "fingerprint": "c87976261a726b3b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f1f20af0bafc9608", "level": "none", "message": {"text": "Commented-code block (6 lines) in acq-coach-selfhost/supabase/functions/cron-sync/index.ts:1"}, "properties": {"repobilityId": "3fc3910050bd3f98", "scanner": "scanner-primary", "fingerprint": "f1f20af0bafc9608", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fc7b1f72a5993617", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/supabase/functions/cron-sync/index.ts:109"}, "properties": {"repobilityId": "25e041ef1e1b7758", "scanner": "scanner-primary", "fingerprint": "fc7b1f72a5993617", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-24d59c8be84a9323", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/supabase/functions/send-digest/index.ts:111"}, "properties": {"repobilityId": "2a285a6f125308dd", "scanner": "scanner-primary", "fingerprint": "24d59c8be84a9323", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-335244c8635d03b7", "level": "none", "message": {"text": "Commented-code block (5 lines) in acq-coach-selfhost/supabase/functions/_env-check/index.ts:29"}, "properties": {"repobilityId": "e0d6d010c73ef990", "scanner": "scanner-primary", "fingerprint": "335244c8635d03b7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8602de1470a2c38", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/supabase/functions/ai-chat/index.ts:21"}, "properties": {"repobilityId": "355c89c3e28d8562", "scanner": "scanner-primary", "fingerprint": "c8602de1470a2c38", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8830cc416b7eaf23", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/supabase/functions/transcribe/index.ts:36"}, "properties": {"repobilityId": "113cddde870ca356", "scanner": "scanner-primary", "fingerprint": "8830cc416b7eaf23", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2b6b3139d43a7ee6", "level": "none", "message": {"text": "Commented-code block (5 lines) in acq-coach-selfhost/supabase/functions/main/index.ts:13"}, "properties": {"repobilityId": "a59d3608031c913e", "scanner": "scanner-primary", "fingerprint": "2b6b3139d43a7ee6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b5be0984d1feee7d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/supabase/functions/main/index.ts:82"}, "properties": {"repobilityId": "dcf93e91684547cd", "scanner": "scanner-primary", "fingerprint": "b5be0984d1feee7d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-77a0e75fd4a0811a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/supabase/functions/admin-api/index.ts:538"}, "properties": {"repobilityId": "78905bf400fa8ff6", "scanner": "scanner-primary", "fingerprint": "77a0e75fd4a0811a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-379c6a885ffb3275", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/supabase/functions/ghl-proxy/index.ts:466"}, "properties": {"repobilityId": "98bd369138836e31", "scanner": "scanner-primary", "fingerprint": "379c6a885ffb3275", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-922a0ec81338c5a0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/supabase/functions/ai-tts/index.ts:28"}, "properties": {"repobilityId": "ae10817ff487877d", "scanner": "scanner-primary", "fingerprint": "922a0ec81338c5a0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ff5713f219b35d68", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 acq-coach-selfhost/supabase/functions/_shared/stripe.ts:27"}, "properties": {"repobilityId": "d8e8cff3c72dcd77", "scanner": "scanner-primary", "fingerprint": "ff5713f219b35d68", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-80b1aa43f4cb3730", "level": "none", "message": {"text": "Commented-code block (5 lines) in acq-coach-selfhost/supabase/functions/_shared/platform.ts:36"}, "properties": {"repobilityId": "007d704c53bd2e1b", "scanner": "scanner-primary", "fingerprint": "80b1aa43f4cb3730", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-313f9a4b68340394", "level": "none", "message": {"text": "Commented-code block (6 lines) in closercontrolleadintel/playwright.config.ts:4"}, "properties": {"repobilityId": "ab9abb8da833e82e", "scanner": "scanner-primary", "fingerprint": "313f9a4b68340394", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a0f2514320d5d93", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 closercontrolleadintel/backups/backend-export/edge-functions/tts-briefing/index.ts:87"}, "properties": {"repobilityId": "de241cf22efcc480", "scanner": "scanner-primary", "fingerprint": "2a0f2514320d5d93", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1a25548ff87720b8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 closercontrolleadintel/backups/backend-export/edge-functions/ai-analyze/index.ts:84"}, "properties": {"repobilityId": "e8678b2da2bc157a", "scanner": "scanner-primary", "fingerprint": "1a25548ff87720b8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-137112e24350c621", "level": "none", "message": {"text": "Commented-code block (5 lines) in closercontrolleadintel/backups/backend-export/edge-functions/ghl-sync/index.ts:35"}, "properties": {"repobilityId": "88ae6e4e37046fe7", "scanner": "scanner-primary", "fingerprint": "137112e24350c621", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-92c0419f82e000d2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 closercontrolleadintel/backups/backend-export/edge-functions/ghl-sync/index.ts:1207"}, "properties": {"repobilityId": "c4c895a2bbddad9d", "scanner": "scanner-primary", "fingerprint": "92c0419f82e000d2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-39b0b3eb2aa83c4f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 closercontrolleadintel/backups/backend-export/edge-functions/list-tenant-pipelines/index.ts:47"}, "properties": {"repobilityId": "585d2292302e12e8", "scanner": "scanner-primary", "fingerprint": "39b0b3eb2aa83c4f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7836bc3142be91d7", "level": "none", "message": {"text": "Commented-code block (5 lines) in closercontrolleadintel/backups/backend-export/edge-functions/_shared/tenantContext.ts:4"}, "properties": {"repobilityId": "be857951cf5c7450", "scanner": "scanner-primary", "fingerprint": "7836bc3142be91d7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2928ca390a840601", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 closercontrolleadintel/supabase/functions/tts-briefing/index.ts:92"}, "properties": {"repobilityId": "4517e8e0bdf08401", "scanner": "scanner-primary", "fingerprint": "2928ca390a840601", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-46af180dadf725d8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 closercontrolleadintel/supabase/functions/ai-analyze/index.ts:89"}, "properties": {"repobilityId": "e891441fe90d8432", "scanner": "scanner-primary", "fingerprint": "46af180dadf725d8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5400658ebb0c4556", "level": "none", "message": {"text": "Commented-code block (5 lines) in closercontrolleadintel/supabase/functions/ghl-sync/index.ts:35"}, "properties": {"repobilityId": "02dc6b8cec445a7a", "scanner": "scanner-primary", "fingerprint": "5400658ebb0c4556", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c3a957b0b6f44b57", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 closercontrolleadintel/supabase/functions/ghl-sync/index.ts:1207"}, "properties": {"repobilityId": "49af182b963f1b2f", "scanner": "scanner-primary", "fingerprint": "c3a957b0b6f44b57", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0a0d6e4720e18f3a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 closercontrolleadintel/supabase/functions/list-tenant-pipelines/index.ts:47"}, "properties": {"repobilityId": "d5fc08511de36823", "scanner": "scanner-primary", "fingerprint": "0a0d6e4720e18f3a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8f2b9c5c1c5c435d", "level": "none", "message": {"text": "Commented-code block (5 lines) in closercontrolleadintel/supabase/functions/_shared/tenantContext.ts:4"}, "properties": {"repobilityId": "7eae87247d8b59e4", "scanner": "scanner-primary", "fingerprint": "8f2b9c5c1c5c435d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a53ff7582957f181", "level": "none", "message": {"text": "Commented-code block (7 lines) in closercontrolleadintel/supabase/functions/_shared/platform.ts:113"}, "properties": {"repobilityId": "31cc8db16704a30b", "scanner": "scanner-primary", "fingerprint": "a53ff7582957f181", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-77b324a845ffbbda", "level": "none", "message": {"text": "Commented-code block (6 lines) in closercontrolleadintel/src/ccSsoHandoff.ts:9"}, "properties": {"repobilityId": "0055797d39725c47", "scanner": "scanner-primary", "fingerprint": "77b324a845ffbbda", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd332cac5c6ff171", "level": "note", "message": {"text": "Legacy-named symbol `briefing_cache_busted_v2` in closercontrolleadintel/src/components/today/BriefingCard.tsx:10"}, "properties": {"repobilityId": "4cdb57487885c3ff", "scanner": "scanner-primary", "fingerprint": "fd332cac5c6ff171", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f05a17fa2089c100", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 closercontrolleadintel/src/components/billing/BillingTab.tsx:12"}, "properties": {"repobilityId": "4023ae0c419e39cb", "scanner": "scanner-primary", "fingerprint": "f05a17fa2089c100", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8a9d33599c396c29", "level": "none", "message": {"text": "Commented-code block (6 lines) in leadintel-selfhost/apps/web/playwright.config.ts:4"}, "properties": {"repobilityId": "725fbab16db4a19f", "scanner": "scanner-primary", "fingerprint": "8a9d33599c396c29", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c9f1f063ad783b03", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/apps/web/supabase/functions/tts-briefing/index.ts:92"}, "properties": {"repobilityId": "1706709c3ad2240e", "scanner": "scanner-primary", "fingerprint": "c9f1f063ad783b03", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-41bea8f6a5070fac", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/apps/web/supabase/functions/ai-analyze/index.ts:89"}, "properties": {"repobilityId": "6a50ba787e422d91", "scanner": "scanner-primary", "fingerprint": "41bea8f6a5070fac", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-45c88785ef10a73e", "level": "none", "message": {"text": "Commented-code block (5 lines) in leadintel-selfhost/apps/web/supabase/functions/ghl-sync/index.ts:35"}, "properties": {"repobilityId": "e577389f338fadf8", "scanner": "scanner-primary", "fingerprint": "45c88785ef10a73e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-78ad2071dd749238", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/apps/web/supabase/functions/ghl-sync/index.ts:1207"}, "properties": {"repobilityId": "21b4a3afb0bc55d6", "scanner": "scanner-primary", "fingerprint": "78ad2071dd749238", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1e0b29ebe35277d9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/apps/web/supabase/functions/list-tenant-pipelines/index.ts:47"}, "properties": {"repobilityId": "3bbd9481bb8de780", "scanner": "scanner-primary", "fingerprint": "1e0b29ebe35277d9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-48205aa58458a6ba", "level": "none", "message": {"text": "Commented-code block (5 lines) in leadintel-selfhost/apps/web/supabase/functions/_shared/tenantContext.ts:4"}, "properties": {"repobilityId": "827c34cf2bebcf9e", "scanner": "scanner-primary", "fingerprint": "48205aa58458a6ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-589de47c0e5fb190", "level": "none", "message": {"text": "Commented-code block (7 lines) in leadintel-selfhost/apps/web/supabase/functions/_shared/platform.ts:113"}, "properties": {"repobilityId": "9c9c1687c297cb07", "scanner": "scanner-primary", "fingerprint": "589de47c0e5fb190", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9c4c544c4274b31a", "level": "none", "message": {"text": "Commented-code block (6 lines) in leadintel-selfhost/apps/web/src/ccSsoHandoff.ts:9"}, "properties": {"repobilityId": "ea2f737d88312947", "scanner": "scanner-primary", "fingerprint": "9c4c544c4274b31a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-04b2706ccbc32097", "level": "note", "message": {"text": "Legacy-named symbol `briefing_cache_busted_v2` in leadintel-selfhost/apps/web/src/components/today/BriefingCard.tsx:10"}, "properties": {"repobilityId": "b7b47e9c696c6716", "scanner": "scanner-primary", "fingerprint": "04b2706ccbc32097", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-844498e17f352c43", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/apps/web/src/components/billing/BillingTab.tsx:12"}, "properties": {"repobilityId": "d6e5d21ab36524e6", "scanner": "scanner-primary", "fingerprint": "844498e17f352c43", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-536d77535ea83706", "level": "none", "message": {"text": "Commented-code block (5 lines) in leadintel-selfhost/apps/web/src/pages/Login.tsx:17"}, "properties": {"repobilityId": "e67a3155b10a1eb9", "scanner": "scanner-primary", "fingerprint": "536d77535ea83706", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dac99160481d2e7f", "level": "none", "message": {"text": "Commented-code block (6 lines) in leadintel-selfhost/apps/web/src/hooks/useUsageHistory.ts:62"}, "properties": {"repobilityId": "9b15d20c5b83f052", "scanner": "scanner-primary", "fingerprint": "dac99160481d2e7f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-03c412ffb328ab96", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/supabase/functions/tts-briefing/index.ts:92"}, "properties": {"repobilityId": "d7b10b2152f60241", "scanner": "scanner-primary", "fingerprint": "03c412ffb328ab96", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-30baef6f3a53ed30", "level": "none", "message": {"text": "Commented-code block (5 lines) in leadintel-selfhost/supabase/functions/check-notes-access/index.ts:137"}, "properties": {"repobilityId": "43632c2924945e63", "scanner": "scanner-primary", "fingerprint": "30baef6f3a53ed30", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a37020bb6e727fdd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/supabase/functions/ai-analyze/index.ts:89"}, "properties": {"repobilityId": "2c71f8e90993185a", "scanner": "scanner-primary", "fingerprint": "a37020bb6e727fdd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e773dcc7c55bcd29", "level": "none", "message": {"text": "Commented-code block (5 lines) in leadintel-selfhost/supabase/functions/ghl-sync/index.ts:35"}, "properties": {"repobilityId": "52cd00fe3b940f7d", "scanner": "scanner-primary", "fingerprint": "e773dcc7c55bcd29", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed781eb97bd7c1cf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/supabase/functions/ghl-sync/index.ts:1252"}, "properties": {"repobilityId": "d9508c2d888adfac", "scanner": "scanner-primary", "fingerprint": "ed781eb97bd7c1cf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-057f9093fa8b1e55", "level": "none", "message": {"text": "Commented-code block (5 lines) in leadintel-selfhost/supabase/functions/main/index.ts:13"}, "properties": {"repobilityId": "6d76e1f49c4699ee", "scanner": "scanner-primary", "fingerprint": "057f9093fa8b1e55", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-25ed29e75ac95dbb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/supabase/functions/main/index.ts:82"}, "properties": {"repobilityId": "18b71f30b186b5db", "scanner": "scanner-primary", "fingerprint": "25ed29e75ac95dbb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-24ed08a4afce98e2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 leadintel-selfhost/supabase/functions/list-tenant-pipelines/index.ts:47"}, "properties": {"repobilityId": "c93022879ee13b9b", "scanner": "scanner-primary", "fingerprint": "24ed08a4afce98e2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ba303d3e13a9b3e0", "level": "none", "message": {"text": "Commented-code block (5 lines) in leadintel-selfhost/supabase/functions/_shared/tenantContext.ts:4"}, "properties": {"repobilityId": "0db2818c3b82ee95", "scanner": "scanner-primary", "fingerprint": "ba303d3e13a9b3e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-498feaf69221e19f", "level": "none", "message": {"text": "Commented-code block (7 lines) in leadintel-selfhost/supabase/functions/_shared/platform.ts:113"}, "properties": {"repobilityId": "ea497a376d8ad7c3", "scanner": "scanner-primary", "fingerprint": "498feaf69221e19f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-250f57e8a1dbd3c5", "level": "none", "message": {"text": "4 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "57584f22b735b5ee", "scanner": "scanner-primary", "fingerprint": "250f57e8a1dbd3c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-d795d180ae4dd10e", "level": "warning", "message": {"text": "Frontend route `/reset-password` has no Link/navigate to it \u2014 leadintel-selfhost/apps/web/src/App.tsx"}, "properties": {"repobilityId": "0bc9fa8518ce693f", "scanner": "scanner-primary", "fingerprint": "d795d180ae4dd10e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-e8d68932ae27219f", "level": "warning", "message": {"text": "Frontend route `/accept-invitation` has no Link/navigate to it \u2014 leadintel-selfhost/apps/web/src/App.tsx"}, "properties": {"repobilityId": "ebdc9e35596930c0", "scanner": "scanner-primary", "fingerprint": "e8d68932ae27219f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-307b8eb5301033e9", "level": "warning", "message": {"text": "Frontend route `/leads/:id` has no Link/navigate to it \u2014 leadintel-selfhost/apps/web/src/App.tsx"}, "properties": {"repobilityId": "619a7a80875ece68", "scanner": "scanner-primary", "fingerprint": "307b8eb5301033e9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c77470323b2cf100", "level": "warning", "message": {"text": "Frontend route `/admin/tenants/:id` has no Link/navigate to it \u2014 leadintel-selfhost/apps/web/src/App.tsx"}, "properties": {"repobilityId": "8de5f8e9ad0f5811", "scanner": "scanner-primary", "fingerprint": "c77470323b2cf100", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-d4e046dbda9cea68", "level": "warning", "message": {"text": "Frontend route `/admin/tenants/:id/transactions` has no Link/navigate to it \u2014 leadintel-selfhost/apps/web/src/App.tsx"}, "properties": {"repobilityId": "78cc348fbdcaa86a", "scanner": "scanner-primary", "fingerprint": "d4e046dbda9cea68", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}]}]}