{"version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0.json", "runs": [{"tool": {"driver": {"name": "Repobility", "informationUri": "https://repobility.com", "rules": [{"id": "scanner-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-827f408bbc4f1ca4", "name": "Stray `console.log` in TS/JS \u2014 nichesurage/scripts/backfillNicheLabels.ts:158", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 nichesurage/scripts/backfillNicheLabels.ts:158"}, "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-a20aaf5e4b9b3850", "name": "Stray `console.log` in TS/JS \u2014 nichesurage/supabase/functions/discover-ingest/index.ts:409", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 nichesurage/supabase/functions/discover-ingest/index.ts:409"}, "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-742065104adff0fa", "name": "Stray `console.log` in TS/JS \u2014 nichesurage/supabase/functions/discover/index.ts:179", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 nichesurage/supabase/functions/discover/index.ts:179"}, "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-b5457b5d5f528bf6", "name": "TODO/FIXME marker in shipping code \u2014 nichesurage/supabase/functions/scan/index.ts:703", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 nichesurage/supabase/functions/scan/index.ts:703"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-db338d766bf9cf54", "name": "Stray `console.log` in TS/JS \u2014 nichesurage/supabase/functions/scan/index.ts:153", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 nichesurage/supabase/functions/scan/index.ts:153"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c598214e0484677d", "name": "`truncate` class without `title=` for hover reveal \u2014 nichesurage/src/components/landing/HeroBackdrop.tsx:110", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 nichesurage/src/components/landing/HeroBackdrop.tsx:110"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-01b1a88fca040b81", "name": "`truncate` class without `title=` for hover reveal \u2014 nichesurage/src/components/landing/TestimonialsSection.tsx:35", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 nichesurage/src/components/landing/TestimonialsSection.tsx:35"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c6d31bd19da55056", "name": "`truncate` class without `title=` for hover reveal \u2014 nichesurage/src/components/user/UserAvatarMenu.tsx:131", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 nichesurage/src/components/user/UserAvatarMenu.tsx:131"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-29c3da16cb98f816", "name": "`truncate` class without `title=` for hover reveal \u2014 nichesurage/src/components/niche/NicheCard.tsx:257", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 nichesurage/src/components/niche/NicheCard.tsx:257"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2fcb3fb7b684b75f", "name": "`truncate` class without `title=` for hover reveal \u2014 nichesurage/src/components/niche/NicheDetailHeader.tsx:74", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 nichesurage/src/components/niche/NicheDetailHeader.tsx:74"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5be48846383a320c", "name": "Stray `console.log` in TS/JS \u2014 nichesurage/src/app/api/clusters/detect/route.ts:221", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 nichesurage/src/app/api/clusters/detect/route.ts:221"}, "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-70a5eb35a1bf0e74", "name": "Stray `console.log` in TS/JS \u2014 nichesurage/src/app/api/stripe/webhook/route.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 nichesurage/src/app/api/stripe/webhook/route.ts:38"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3a1bed513cb98519", "name": "Stray `console.log` in TS/JS \u2014 nichesurage/src/app/api/discovery/evict/route.ts:208", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 nichesurage/src/app/api/discovery/evict/route.ts:208"}, "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-9dceda2e3c01a4a2", "name": "Stray `console.log` in TS/JS \u2014 nichesurage/src/app/api/discovery/expand/route.ts:173", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 nichesurage/src/app/api/discovery/expand/route.ts:173"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2b4b79a0cf52fb5c", "name": "Stray `console.log` in TS/JS \u2014 nichesurage/src/app/api/discovery/trending/route.ts:415", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 nichesurage/src/app/api/discovery/trending/route.ts:415"}, "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-3782eb1be00fe95f", "name": "Stray `console.log` in TS/JS \u2014 nichesurage/src/app/api/discovery/promote/route.ts:162", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 nichesurage/src/app/api/discovery/promote/route.ts:162"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2ccab95870f6b9ea", "name": "Stray `console.log` in TS/JS \u2014 nichesurage/src/lib/clusters/detect.ts:438", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 nichesurage/src/lib/clusters/detect.ts:438"}, "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-2813c189a08b7feb", "name": "TODO/FIXME marker in shipping code \u2014 nichesurage/src/lib/supabase/queries.ts:245", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 nichesurage/src/lib/supabase/queries.ts:245"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-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 25 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 15 placeholder/mock markers across 12 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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. 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-2f0615ec2897f0c9", "name": "Commented-code block (7 lines) in nichesurage/next.config.mjs:10", "shortDescription": {"text": "Commented-code block (7 lines) in nichesurage/next.config.mjs:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cc4e38ffe62b09dc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/scripts/backfillNicheLabels.ts:55", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/scripts/backfillNicheLabels.ts:55"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d36f9fe5960edf5f", "name": "Commented-code block (5 lines) in nichesurage/supabase/functions/recategorize/index.ts:7", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/supabase/functions/recategorize/index.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-38941b82bd171f34", "name": "Commented-code block (11 lines) in nichesurage/supabase/functions/backfill-faceless/index.ts:15", "shortDescription": {"text": "Commented-code block (11 lines) in nichesurage/supabase/functions/backfill-faceless/index.ts:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fcb6e4f8a6916590", "name": "Commented-code block (11 lines) in nichesurage/supabase/functions/trending/index.ts:6", "shortDescription": {"text": "Commented-code block (11 lines) in nichesurage/supabase/functions/trending/index.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-da3dd76b35b711d2", "name": "Commented-code block (5 lines) in nichesurage/supabase/functions/discover-ingest/index.ts:25", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/supabase/functions/discover-ingest/index.ts:25"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6fcd8bdb1d3fa73f", "name": "Commented-code block (7 lines) in nichesurage/supabase/functions/discover/index.ts:20", "shortDescription": {"text": "Commented-code block (7 lines) in nichesurage/supabase/functions/discover/index.ts:20"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-995c650c0b15707a", "name": "Commented-code block (5 lines) in nichesurage/supabase/functions/scan/index.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/supabase/functions/scan/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-7b3b858870fd7091", "name": "Commented-code block (7 lines) in nichesurage/supabase/functions/cluster-outliers/index.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in nichesurage/supabase/functions/cluster-outliers/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-caf177090e229c1f", "name": "Commented-code block (6 lines) in nichesurage/supabase/functions/discover-plan/index.ts:134", "shortDescription": {"text": "Commented-code block (6 lines) in nichesurage/supabase/functions/discover-plan/index.ts:134"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f03e1f0630d714b7", "name": "Commented-code block (6 lines) in nichesurage/supabase/functions/_shared/trendingCategoryMap.ts:8", "shortDescription": {"text": "Commented-code block (6 lines) in nichesurage/supabase/functions/_shared/trendingCategoryMap.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-47efc2138ba800b0", "name": "Legacy-named symbol `tOld` in nichesurage/supabase/functions/_shared/velocity.test.ts:233", "shortDescription": {"text": "Legacy-named symbol `tOld` in nichesurage/supabase/functions/_shared/velocity.test.ts:233"}, "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-0487df279555f444", "name": "Commented-code block (5 lines) in nichesurage/supabase/functions/_shared/velocity.test.ts:72", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/supabase/functions/_shared/velocity.test.ts:72"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-42ae75db8abfcc5d", "name": "Commented-code block (6 lines) in nichesurage/supabase/functions/_shared/apify.ts:17", "shortDescription": {"text": "Commented-code block (6 lines) in nichesurage/supabase/functions/_shared/apify.ts: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-b9b1f4dfee7232b1", "name": "Commented-code block (5 lines) in nichesurage/supabase/functions/_shared/recentVideosCache.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/supabase/functions/_shared/recentVideosCache.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-3d005b5913d87007", "name": "Commented-code block (6 lines) in nichesurage/supabase/functions/_shared/baseline.ts:14", "shortDescription": {"text": "Commented-code block (6 lines) in nichesurage/supabase/functions/_shared/baseline.ts:14"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-97bc0947fdfc2d21", "name": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/supabase/functions/_shared/openai.ts:14", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/supabase/functions/_shared/openai.ts:14"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-280d3a95077a6463", "name": "Commented-code block (6 lines) in nichesurage/supabase/functions/_shared/constants.ts:6", "shortDescription": {"text": "Commented-code block (6 lines) in nichesurage/supabase/functions/_shared/constants.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b763b597d6d45397", "name": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/supabase/functions/_shared/youtube.ts:48", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/supabase/functions/_shared/youtube.ts:48"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5fa7e913009faf96", "name": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/supabase/functions/_shared/categories.ts:38", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/supabase/functions/_shared/categories.ts:38"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-097072d7ef7ca9fb", "name": "Commented-code block (6 lines) in nichesurage/supabase/functions/_shared/premiumSpike.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in nichesurage/supabase/functions/_shared/premiumSpike.ts:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-40ff466306482fdc", "name": "Commented-code block (12 lines) in nichesurage/supabase/functions/_shared/expectedPerformance.ts:14", "shortDescription": {"text": "Commented-code block (12 lines) in nichesurage/supabase/functions/_shared/expectedPerformance.ts:14"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fa17d6e207c2a9e9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/supabase/functions/_shared/faceless.ts:15", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/supabase/functions/_shared/faceless.ts:15"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-088e41705809819e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/supabase/functions/_shared/anthropic.ts:18", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/supabase/functions/_shared/anthropic.ts:18"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8ebc26eb008f5c91", "name": "Commented-code block (5 lines) in nichesurage/src/middleware.ts:28", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/middleware.ts:28"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0ca46a3e1666a0c4", "name": "Commented-code block (5 lines) in nichesurage/src/components/providers/PosthogProvider.tsx:8", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/components/providers/PosthogProvider.tsx:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e705c6e9467afd78", "name": "Commented-code block (5 lines) in nichesurage/src/components/landing/FeaturesSection.tsx:21", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/components/landing/FeaturesSection.tsx:21"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9200f276b2fd78f4", "name": "Commented-code block (5 lines) in nichesurage/src/components/landing/copy.ts:246", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/components/landing/copy.ts:246"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-de35f7f8441eb663", "name": "Commented-code block (9 lines) in nichesurage/src/components/landing/LandingPage.tsx:16", "shortDescription": {"text": "Commented-code block (9 lines) in nichesurage/src/components/landing/LandingPage.tsx:16"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4ce483ebae486e43", "name": "Commented-code block (5 lines) in nichesurage/src/components/landing/HeroBackdrop.test.tsx:22", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/components/landing/HeroBackdrop.test.tsx:22"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fbfdfb733662d295", "name": "Commented-code block (7 lines) in nichesurage/src/components/landing/PainSolutionSection.test.tsx:38", "shortDescription": {"text": "Commented-code block (7 lines) in nichesurage/src/components/landing/PainSolutionSection.test.tsx:38"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9ba4ecf3dbb1f03c", "name": "Commented-code block (5 lines) in nichesurage/src/components/landing/PricingSection.tsx:15", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/components/landing/PricingSection.tsx:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c5802ce53e014845", "name": "Commented-code block (5 lines) in nichesurage/src/components/landing/TierMatrix.tsx:9", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/components/landing/TierMatrix.tsx:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a095525dfcacd996", "name": "Commented-code block (5 lines) in nichesurage/src/components/landing/FaqSection.tsx:11", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/components/landing/FaqSection.tsx:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c1deedf30412925", "name": "Commented-code block (5 lines) in nichesurage/src/components/niche/RevealCountdown.tsx:29", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/components/niche/RevealCountdown.tsx:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e600341976b4f3bb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/src/components/niche/RelatedNiches.test.tsx:71", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/src/components/niche/RelatedNiches.test.tsx:71"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b41cabe20e06e1a3", "name": "Commented-code block (5 lines) in nichesurage/src/components/niche/NicheCard.tsx:271", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/components/niche/NicheCard.tsx:271"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8f45fc5233168d82", "name": "Commented-code block (5 lines) in nichesurage/src/components/niche/NicheDetailContent.test.tsx:12", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/components/niche/NicheDetailContent.test.tsx:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-67b56ec471d0ee84", "name": "Commented-code block (6 lines) in nichesurage/src/components/niche/BackToTop.tsx:20", "shortDescription": {"text": "Commented-code block (6 lines) in nichesurage/src/components/niche/BackToTop.tsx:20"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cd05c082336ce64d", "name": "Commented-code block (6 lines) in nichesurage/src/components/niche/HealthCheckInline.tsx:78", "shortDescription": {"text": "Commented-code block (6 lines) in nichesurage/src/components/niche/HealthCheckInline.tsx:78"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-40c6f0810fe241c5", "name": "Commented-code block (5 lines) in nichesurage/src/components/niche/NicheDetailContent.tsx:24", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/components/niche/NicheDetailContent.tsx:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2654294d6f0c739c", "name": "Commented-code block (5 lines) in nichesurage/src/components/niche/NicheDetailHeader.tsx:78", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/components/niche/NicheDetailHeader.tsx:78"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-612a5923ba5fd3f2", "name": "Commented-code block (5 lines) in nichesurage/src/components/niche/UpsellModal.tsx:16", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/components/niche/UpsellModal.tsx:16"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-800893a4fcdbc334", "name": "Commented-code block (5 lines) in nichesurage/src/components/niche/AIContentAngles.tsx:52", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/components/niche/AIContentAngles.tsx:52"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8efa28d432593cd1", "name": "Commented-code block (5 lines) in nichesurage/src/app/layout.tsx:22", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/app/layout.tsx:22"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5a405ec15db72ae6", "name": "Commented-code block (5 lines) in nichesurage/src/app/auth/callback/route.ts:73", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/app/auth/callback/route.ts:73"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5bdf200922b1f67a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/src/app/auth/callback/route.ts:59", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/src/app/auth/callback/route.ts:59"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1a01c701a7728cb3", "name": "Commented-code block (5 lines) in nichesurage/src/app/login/LoginForm.test.tsx:120", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/app/login/LoginForm.test.tsx:120"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cf81e7b2bb90c921", "name": "Commented-code block (9 lines) in nichesurage/src/app/login/LoginForm.tsx:65", "shortDescription": {"text": "Commented-code block (9 lines) in nichesurage/src/app/login/LoginForm.tsx:65"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7991836ae4539976", "name": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/src/app/login/LoginForm.tsx:69", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/src/app/login/LoginForm.tsx:69"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e1e639ef9eb3883d", "name": "Commented-code block (6 lines) in nichesurage/src/app/api/thumbnails/phash/route.ts:102", "shortDescription": {"text": "Commented-code block (6 lines) in nichesurage/src/app/api/thumbnails/phash/route.ts:102"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ef6aff4d088b36a2", "name": "Commented-code block (6 lines) in nichesurage/src/app/api/demo/today/route.ts:15", "shortDescription": {"text": "Commented-code block (6 lines) in nichesurage/src/app/api/demo/today/route.ts:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a15f1911ecfdc8ef", "name": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/src/app/api/clusters/detect/route.test.ts:156", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/src/app/api/clusters/detect/route.test.ts:156"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ff497f3186115c08", "name": "Commented-code block (5 lines) in nichesurage/src/app/api/content-angles/[id]/route.ts:38", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/app/api/content-angles/[id]/route.ts:38"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-300621ec857587ba", "name": "Commented-code block (5 lines) in nichesurage/src/app/api/stripe/webhook/route.ts:153", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/app/api/stripe/webhook/route.ts:153"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-37f60e57140c196f", "name": "Commented-code block (8 lines) in nichesurage/src/app/api/stripe/checkout/route.ts:64", "shortDescription": {"text": "Commented-code block (8 lines) in nichesurage/src/app/api/stripe/checkout/route.ts:64"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8765f62269a1e7c9", "name": "Commented-code block (10 lines) in nichesurage/src/app/api/health-check/[id]/route.ts:39", "shortDescription": {"text": "Commented-code block (10 lines) in nichesurage/src/app/api/health-check/[id]/route.ts:39"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8f392b97b6a55744", "name": "Commented-code block (6 lines) in nichesurage/src/app/api/discovery/expand/route.ts:55", "shortDescription": {"text": "Commented-code block (6 lines) in nichesurage/src/app/api/discovery/expand/route.ts:55"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b6b1d1209463d487", "name": "Commented-code block (5 lines) in nichesurage/src/app/api/discovery/trending/route.ts:52", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/app/api/discovery/trending/route.ts:52"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5584cc9c65f7bb55", "name": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/src/app/api/discovery/trending/route.ts:114", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/src/app/api/discovery/trending/route.ts:114"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-abd509bd4b32e5d7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/src/app/dashboard/ManageSubscriptionButton.tsx:10", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/src/app/dashboard/ManageSubscriptionButton.tsx:10"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c9a60de88f3e1f7d", "name": "Commented-code block (5 lines) in nichesurage/src/app/discover/page.tsx:91", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/app/discover/page.tsx:91"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7df3915d12c7ce93", "name": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/src/app/discover/page.tsx:78", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/src/app/discover/page.tsx:78"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aaff1a310efdfa6d", "name": "Commented-code block (5 lines) in nichesurage/src/app/admin/layout.tsx:11", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/app/admin/layout.tsx:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-676ccbd4700c75dd", "name": "Commented-code block (5 lines) in nichesurage/src/app/admin/setup-totp/EnrollForm.tsx:21", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/app/admin/setup-totp/EnrollForm.tsx:21"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bbe31ac67aebeb9e", "name": "Commented-code block (5 lines) in nichesurage/src/lib/tier.ts:8", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/lib/tier.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-86735c6bc3f23603", "name": "Commented-code block (6 lines) in nichesurage/src/lib/demo/preWarm.ts:9", "shortDescription": {"text": "Commented-code block (6 lines) in nichesurage/src/lib/demo/preWarm.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-19edc6497ac8ffde", "name": "Commented-code block (7 lines) in nichesurage/src/lib/demo/useFreeDemoState.ts:10", "shortDescription": {"text": "Commented-code block (7 lines) in nichesurage/src/lib/demo/useFreeDemoState.ts:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c04cce089587c426", "name": "Commented-code block (6 lines) in nichesurage/src/lib/types/index.ts:81", "shortDescription": {"text": "Commented-code block (6 lines) in nichesurage/src/lib/types/index.ts:81"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b4cb607a3808198a", "name": "Commented-code block (6 lines) in nichesurage/src/lib/email/resend.ts:17", "shortDescription": {"text": "Commented-code block (6 lines) in nichesurage/src/lib/email/resend.ts: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-4bc2eb3094daf9f5", "name": "Commented-code block (5 lines) in nichesurage/src/lib/email/templates/welcome.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/lib/email/templates/welcome.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-c2517fd6c99f378b", "name": "Commented-code block (5 lines) in nichesurage/src/lib/tier/freeDemo.test.ts:412", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/lib/tier/freeDemo.test.ts:412"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-57363bf2a7e4663f", "name": "Commented-code block (5 lines) in nichesurage/src/lib/tier/freeDemo.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/lib/tier/freeDemo.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ae1d1ca1848f4bae", "name": "Commented-code block (6 lines) in nichesurage/src/lib/clusters/detect.ts:59", "shortDescription": {"text": "Commented-code block (6 lines) in nichesurage/src/lib/clusters/detect.ts:59"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c24152655d418368", "name": "Commented-code block (6 lines) in nichesurage/src/lib/discover/fetchDiscoverFeed.ts:57", "shortDescription": {"text": "Commented-code block (6 lines) in nichesurage/src/lib/discover/fetchDiscoverFeed.ts:57"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2912f2c1f8b2d7b0", "name": "Commented-code block (5 lines) in nichesurage/src/lib/landing/fetchTopNiches.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/lib/landing/fetchTopNiches.ts:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2e323ebb99dfd3b1", "name": "Commented-code block (6 lines) in nichesurage/src/lib/landing/fetchRadarPings.ts:47", "shortDescription": {"text": "Commented-code block (6 lines) in nichesurage/src/lib/landing/fetchRadarPings.ts:47"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-64ae4c63e5b20dd1", "name": "Legacy-named symbol `daysOld` in nichesurage/src/lib/scanner/premiumSpike.test.ts:101", "shortDescription": {"text": "Legacy-named symbol `daysOld` in nichesurage/src/lib/scanner/premiumSpike.test.ts:101"}, "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-d12bd55f72b29157", "name": "Commented-code block (5 lines) in nichesurage/src/lib/scanner/premiumSpike.test.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/lib/scanner/premiumSpike.test.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8ba4409e2fa5ff3e", "name": "Commented-code block (5 lines) in nichesurage/src/lib/hooks/useDragToDismiss.ts:31", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/lib/hooks/useDragToDismiss.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-b6a6ca0dc66750a7", "name": "Commented-code block (5 lines) in nichesurage/src/lib/supabase/queries.ts:104", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/lib/supabase/queries.ts:104"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8ab4e17e71584329", "name": "Commented-code block (6 lines) in nichesurage/src/lib/context/UserContext.tsx:28", "shortDescription": {"text": "Commented-code block (6 lines) in nichesurage/src/lib/context/UserContext.tsx:28"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9f63745b227aa48f", "name": "Commented-code block (5 lines) in nichesurage/src/lib/turnstile/verify.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in nichesurage/src/lib/turnstile/verify.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-969823c6912b32c1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/src/lib/youtube/recentVideos.ts:35", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/src/lib/youtube/recentVideos.ts:35"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eef27d415dd05d60", "name": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/src/lib/discovery/channelOnboard.ts:84", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/src/lib/discovery/channelOnboard.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}}]}}, "automationDetails": {"id": "repobility/22235"}, "properties": {"repository": "Vik011/nichecard", "repoUrl": "https://github.com/Vik011/nichecard", "branch": "main"}, "results": [{"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-827f408bbc4f1ca4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 nichesurage/scripts/backfillNicheLabels.ts:158"}, "properties": {"repobilityId": "1c514fc0e0507e6c", "scanner": "scanner-primary", "fingerprint": "827f408bbc4f1ca4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a20aaf5e4b9b3850", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 nichesurage/supabase/functions/discover-ingest/index.ts:409"}, "properties": {"repobilityId": "d16c5b20e468ff98", "scanner": "scanner-primary", "fingerprint": "a20aaf5e4b9b3850", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-742065104adff0fa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 nichesurage/supabase/functions/discover/index.ts:179"}, "properties": {"repobilityId": "0252f9dca1f57d90", "scanner": "scanner-primary", "fingerprint": "742065104adff0fa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b5457b5d5f528bf6", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 nichesurage/supabase/functions/scan/index.ts:703"}, "properties": {"repobilityId": "11015865b34ccee6", "scanner": "scanner-primary", "fingerprint": "b5457b5d5f528bf6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-db338d766bf9cf54", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 nichesurage/supabase/functions/scan/index.ts:153"}, "properties": {"repobilityId": "fb4f54fb105c48ef", "scanner": "scanner-primary", "fingerprint": "db338d766bf9cf54", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c598214e0484677d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 nichesurage/src/components/landing/HeroBackdrop.tsx:110"}, "properties": {"repobilityId": "c17429d81c2f814f", "scanner": "scanner-primary", "fingerprint": "c598214e0484677d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-01b1a88fca040b81", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 nichesurage/src/components/landing/TestimonialsSection.tsx:35"}, "properties": {"repobilityId": "34ce26325ce8f201", "scanner": "scanner-primary", "fingerprint": "01b1a88fca040b81", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c6d31bd19da55056", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 nichesurage/src/components/user/UserAvatarMenu.tsx:131"}, "properties": {"repobilityId": "2bc226ec2d768588", "scanner": "scanner-primary", "fingerprint": "c6d31bd19da55056", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-29c3da16cb98f816", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 nichesurage/src/components/niche/NicheCard.tsx:257"}, "properties": {"repobilityId": "04a9a808ccbfad6d", "scanner": "scanner-primary", "fingerprint": "29c3da16cb98f816", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2fcb3fb7b684b75f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 nichesurage/src/components/niche/NicheDetailHeader.tsx:74"}, "properties": {"repobilityId": "d8811d626542dd09", "scanner": "scanner-primary", "fingerprint": "2fcb3fb7b684b75f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5be48846383a320c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 nichesurage/src/app/api/clusters/detect/route.ts:221"}, "properties": {"repobilityId": "1a874c4bfc1a9eb5", "scanner": "scanner-primary", "fingerprint": "5be48846383a320c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-70a5eb35a1bf0e74", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 nichesurage/src/app/api/stripe/webhook/route.ts:38"}, "properties": {"repobilityId": "2cc1af2d2f2e52ed", "scanner": "scanner-primary", "fingerprint": "70a5eb35a1bf0e74", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3a1bed513cb98519", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 nichesurage/src/app/api/discovery/evict/route.ts:208"}, "properties": {"repobilityId": "2a686fd599047de1", "scanner": "scanner-primary", "fingerprint": "3a1bed513cb98519", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9dceda2e3c01a4a2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 nichesurage/src/app/api/discovery/expand/route.ts:173"}, "properties": {"repobilityId": "fcf536ce22f71926", "scanner": "scanner-primary", "fingerprint": "9dceda2e3c01a4a2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2b4b79a0cf52fb5c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 nichesurage/src/app/api/discovery/trending/route.ts:415"}, "properties": {"repobilityId": "a438812574a2579b", "scanner": "scanner-primary", "fingerprint": "2b4b79a0cf52fb5c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3782eb1be00fe95f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 nichesurage/src/app/api/discovery/promote/route.ts:162"}, "properties": {"repobilityId": "f433bd58d9e619a3", "scanner": "scanner-primary", "fingerprint": "3782eb1be00fe95f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2ccab95870f6b9ea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 nichesurage/src/lib/clusters/detect.ts:438"}, "properties": {"repobilityId": "267f10b998d3cd19", "scanner": "scanner-primary", "fingerprint": "2ccab95870f6b9ea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2813c189a08b7feb", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 nichesurage/src/lib/supabase/queries.ts:245"}, "properties": {"repobilityId": "74103a3fd403a170", "scanner": "scanner-primary", "fingerprint": "2813c189a08b7feb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "8ea4c6f61b8f6b5e", "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": "038362ff06b274ce", "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": "142d6b95e3a2bfe4", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "c28c592c4a8fad92", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "2c61a39d1aa3f170", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "a6a310cb56e43fc9", "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": "beeabf55c7da1bd8", "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": "ae987fbb73848fc8", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-2f0615ec2897f0c9", "level": "none", "message": {"text": "Commented-code block (7 lines) in nichesurage/next.config.mjs:10"}, "properties": {"repobilityId": "be4c8b937ff2ab2e", "scanner": "scanner-primary", "fingerprint": "2f0615ec2897f0c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cc4e38ffe62b09dc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/scripts/backfillNicheLabels.ts:55"}, "properties": {"repobilityId": "23966da9eff990c0", "scanner": "scanner-primary", "fingerprint": "cc4e38ffe62b09dc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d36f9fe5960edf5f", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/supabase/functions/recategorize/index.ts:7"}, "properties": {"repobilityId": "1f329832beddd440", "scanner": "scanner-primary", "fingerprint": "d36f9fe5960edf5f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-38941b82bd171f34", "level": "none", "message": {"text": "Commented-code block (11 lines) in nichesurage/supabase/functions/backfill-faceless/index.ts:15"}, "properties": {"repobilityId": "e9aa60ddb5ae2dbb", "scanner": "scanner-primary", "fingerprint": "38941b82bd171f34", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fcb6e4f8a6916590", "level": "none", "message": {"text": "Commented-code block (11 lines) in nichesurage/supabase/functions/trending/index.ts:6"}, "properties": {"repobilityId": "bec1c432ce59baa2", "scanner": "scanner-primary", "fingerprint": "fcb6e4f8a6916590", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-da3dd76b35b711d2", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/supabase/functions/discover-ingest/index.ts:25"}, "properties": {"repobilityId": "adf29208c3808cee", "scanner": "scanner-primary", "fingerprint": "da3dd76b35b711d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6fcd8bdb1d3fa73f", "level": "none", "message": {"text": "Commented-code block (7 lines) in nichesurage/supabase/functions/discover/index.ts:20"}, "properties": {"repobilityId": "07fd7aeda1dc47bb", "scanner": "scanner-primary", "fingerprint": "6fcd8bdb1d3fa73f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-995c650c0b15707a", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/supabase/functions/scan/index.ts:1"}, "properties": {"repobilityId": "86c9b1da4ea97cf5", "scanner": "scanner-primary", "fingerprint": "995c650c0b15707a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b3b858870fd7091", "level": "none", "message": {"text": "Commented-code block (7 lines) in nichesurage/supabase/functions/cluster-outliers/index.ts:1"}, "properties": {"repobilityId": "7609b32e060bf6a8", "scanner": "scanner-primary", "fingerprint": "7b3b858870fd7091", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-caf177090e229c1f", "level": "none", "message": {"text": "Commented-code block (6 lines) in nichesurage/supabase/functions/discover-plan/index.ts:134"}, "properties": {"repobilityId": "f7160f3b8ddefbc4", "scanner": "scanner-primary", "fingerprint": "caf177090e229c1f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f03e1f0630d714b7", "level": "none", "message": {"text": "Commented-code block (6 lines) in nichesurage/supabase/functions/_shared/trendingCategoryMap.ts:8"}, "properties": {"repobilityId": "123336e953ac25db", "scanner": "scanner-primary", "fingerprint": "f03e1f0630d714b7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-47efc2138ba800b0", "level": "note", "message": {"text": "Legacy-named symbol `tOld` in nichesurage/supabase/functions/_shared/velocity.test.ts:233"}, "properties": {"repobilityId": "6f47fc7c1286309c", "scanner": "scanner-primary", "fingerprint": "47efc2138ba800b0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0487df279555f444", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/supabase/functions/_shared/velocity.test.ts:72"}, "properties": {"repobilityId": "c6140a5565e8f1e2", "scanner": "scanner-primary", "fingerprint": "0487df279555f444", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-42ae75db8abfcc5d", "level": "none", "message": {"text": "Commented-code block (6 lines) in nichesurage/supabase/functions/_shared/apify.ts:17"}, "properties": {"repobilityId": "76691e4c20c4517a", "scanner": "scanner-primary", "fingerprint": "42ae75db8abfcc5d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b9b1f4dfee7232b1", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/supabase/functions/_shared/recentVideosCache.ts:3"}, "properties": {"repobilityId": "e9ee9fe7e37a572a", "scanner": "scanner-primary", "fingerprint": "b9b1f4dfee7232b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3d005b5913d87007", "level": "none", "message": {"text": "Commented-code block (6 lines) in nichesurage/supabase/functions/_shared/baseline.ts:14"}, "properties": {"repobilityId": "254c9f790bf389b3", "scanner": "scanner-primary", "fingerprint": "3d005b5913d87007", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-97bc0947fdfc2d21", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/supabase/functions/_shared/openai.ts:14"}, "properties": {"repobilityId": "a7cdb9b077aa5b34", "scanner": "scanner-primary", "fingerprint": "97bc0947fdfc2d21", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-280d3a95077a6463", "level": "none", "message": {"text": "Commented-code block (6 lines) in nichesurage/supabase/functions/_shared/constants.ts:6"}, "properties": {"repobilityId": "a43b2f1929ff7de6", "scanner": "scanner-primary", "fingerprint": "280d3a95077a6463", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b763b597d6d45397", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/supabase/functions/_shared/youtube.ts:48"}, "properties": {"repobilityId": "46f2f2f827c8120b", "scanner": "scanner-primary", "fingerprint": "b763b597d6d45397", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5fa7e913009faf96", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/supabase/functions/_shared/categories.ts:38"}, "properties": {"repobilityId": "226937df67d55ec3", "scanner": "scanner-primary", "fingerprint": "5fa7e913009faf96", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-097072d7ef7ca9fb", "level": "none", "message": {"text": "Commented-code block (6 lines) in nichesurage/supabase/functions/_shared/premiumSpike.ts:5"}, "properties": {"repobilityId": "f7f44429d95ef65c", "scanner": "scanner-primary", "fingerprint": "097072d7ef7ca9fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-40ff466306482fdc", "level": "none", "message": {"text": "Commented-code block (12 lines) in nichesurage/supabase/functions/_shared/expectedPerformance.ts:14"}, "properties": {"repobilityId": "d01c3f7ec60bd1dc", "scanner": "scanner-primary", "fingerprint": "40ff466306482fdc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa17d6e207c2a9e9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/supabase/functions/_shared/faceless.ts:15"}, "properties": {"repobilityId": "29ff87177d04a7cb", "scanner": "scanner-primary", "fingerprint": "fa17d6e207c2a9e9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-088e41705809819e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/supabase/functions/_shared/anthropic.ts:18"}, "properties": {"repobilityId": "7f760e48e3eac24d", "scanner": "scanner-primary", "fingerprint": "088e41705809819e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8ebc26eb008f5c91", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/middleware.ts:28"}, "properties": {"repobilityId": "c50371679f1089bb", "scanner": "scanner-primary", "fingerprint": "8ebc26eb008f5c91", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0ca46a3e1666a0c4", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/components/providers/PosthogProvider.tsx:8"}, "properties": {"repobilityId": "e2cf906896186079", "scanner": "scanner-primary", "fingerprint": "0ca46a3e1666a0c4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e705c6e9467afd78", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/components/landing/FeaturesSection.tsx:21"}, "properties": {"repobilityId": "2d0c1e013885ed78", "scanner": "scanner-primary", "fingerprint": "e705c6e9467afd78", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9200f276b2fd78f4", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/components/landing/copy.ts:246"}, "properties": {"repobilityId": "991c24528264f661", "scanner": "scanner-primary", "fingerprint": "9200f276b2fd78f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-de35f7f8441eb663", "level": "none", "message": {"text": "Commented-code block (9 lines) in nichesurage/src/components/landing/LandingPage.tsx:16"}, "properties": {"repobilityId": "c218ace5c0761f22", "scanner": "scanner-primary", "fingerprint": "de35f7f8441eb663", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4ce483ebae486e43", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/components/landing/HeroBackdrop.test.tsx:22"}, "properties": {"repobilityId": "35b0c69be06673a7", "scanner": "scanner-primary", "fingerprint": "4ce483ebae486e43", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fbfdfb733662d295", "level": "none", "message": {"text": "Commented-code block (7 lines) in nichesurage/src/components/landing/PainSolutionSection.test.tsx:38"}, "properties": {"repobilityId": "79cff5eaa119fd7b", "scanner": "scanner-primary", "fingerprint": "fbfdfb733662d295", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9ba4ecf3dbb1f03c", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/components/landing/PricingSection.tsx:15"}, "properties": {"repobilityId": "f87ece7a9e3e1c93", "scanner": "scanner-primary", "fingerprint": "9ba4ecf3dbb1f03c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c5802ce53e014845", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/components/landing/TierMatrix.tsx:9"}, "properties": {"repobilityId": "bd9bc16381b69141", "scanner": "scanner-primary", "fingerprint": "c5802ce53e014845", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a095525dfcacd996", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/components/landing/FaqSection.tsx:11"}, "properties": {"repobilityId": "906714d80006699b", "scanner": "scanner-primary", "fingerprint": "a095525dfcacd996", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c1deedf30412925", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/components/niche/RevealCountdown.tsx:29"}, "properties": {"repobilityId": "1fb10be1f87fea72", "scanner": "scanner-primary", "fingerprint": "2c1deedf30412925", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e600341976b4f3bb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/src/components/niche/RelatedNiches.test.tsx:71"}, "properties": {"repobilityId": "ca379d40649b5406", "scanner": "scanner-primary", "fingerprint": "e600341976b4f3bb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b41cabe20e06e1a3", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/components/niche/NicheCard.tsx:271"}, "properties": {"repobilityId": "3d9d1c2393d182bc", "scanner": "scanner-primary", "fingerprint": "b41cabe20e06e1a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8f45fc5233168d82", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/components/niche/NicheDetailContent.test.tsx:12"}, "properties": {"repobilityId": "96675e5e7c74ace0", "scanner": "scanner-primary", "fingerprint": "8f45fc5233168d82", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-67b56ec471d0ee84", "level": "none", "message": {"text": "Commented-code block (6 lines) in nichesurage/src/components/niche/BackToTop.tsx:20"}, "properties": {"repobilityId": "71930118d68c77be", "scanner": "scanner-primary", "fingerprint": "67b56ec471d0ee84", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cd05c082336ce64d", "level": "none", "message": {"text": "Commented-code block (6 lines) in nichesurage/src/components/niche/HealthCheckInline.tsx:78"}, "properties": {"repobilityId": "23c1818c1f49508e", "scanner": "scanner-primary", "fingerprint": "cd05c082336ce64d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-40c6f0810fe241c5", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/components/niche/NicheDetailContent.tsx:24"}, "properties": {"repobilityId": "be5c285507315603", "scanner": "scanner-primary", "fingerprint": "40c6f0810fe241c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2654294d6f0c739c", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/components/niche/NicheDetailHeader.tsx:78"}, "properties": {"repobilityId": "5e51a08d19c75fd9", "scanner": "scanner-primary", "fingerprint": "2654294d6f0c739c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-612a5923ba5fd3f2", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/components/niche/UpsellModal.tsx:16"}, "properties": {"repobilityId": "fd9f825141e806ed", "scanner": "scanner-primary", "fingerprint": "612a5923ba5fd3f2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-800893a4fcdbc334", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/components/niche/AIContentAngles.tsx:52"}, "properties": {"repobilityId": "6c957d4b724932c2", "scanner": "scanner-primary", "fingerprint": "800893a4fcdbc334", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8efa28d432593cd1", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/app/layout.tsx:22"}, "properties": {"repobilityId": "52b716cd15b851a9", "scanner": "scanner-primary", "fingerprint": "8efa28d432593cd1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5a405ec15db72ae6", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/app/auth/callback/route.ts:73"}, "properties": {"repobilityId": "c80a1ad7d2f30f91", "scanner": "scanner-primary", "fingerprint": "5a405ec15db72ae6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5bdf200922b1f67a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/src/app/auth/callback/route.ts:59"}, "properties": {"repobilityId": "f47cce22cdc84f2f", "scanner": "scanner-primary", "fingerprint": "5bdf200922b1f67a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1a01c701a7728cb3", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/app/login/LoginForm.test.tsx:120"}, "properties": {"repobilityId": "d37104aff660930f", "scanner": "scanner-primary", "fingerprint": "1a01c701a7728cb3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cf81e7b2bb90c921", "level": "none", "message": {"text": "Commented-code block (9 lines) in nichesurage/src/app/login/LoginForm.tsx:65"}, "properties": {"repobilityId": "356c542d9b72b9b7", "scanner": "scanner-primary", "fingerprint": "cf81e7b2bb90c921", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7991836ae4539976", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/src/app/login/LoginForm.tsx:69"}, "properties": {"repobilityId": "e25074773973d403", "scanner": "scanner-primary", "fingerprint": "7991836ae4539976", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e1e639ef9eb3883d", "level": "none", "message": {"text": "Commented-code block (6 lines) in nichesurage/src/app/api/thumbnails/phash/route.ts:102"}, "properties": {"repobilityId": "0a7b48e878bf9365", "scanner": "scanner-primary", "fingerprint": "e1e639ef9eb3883d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef6aff4d088b36a2", "level": "none", "message": {"text": "Commented-code block (6 lines) in nichesurage/src/app/api/demo/today/route.ts:15"}, "properties": {"repobilityId": "6cd86e438d946c66", "scanner": "scanner-primary", "fingerprint": "ef6aff4d088b36a2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a15f1911ecfdc8ef", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/src/app/api/clusters/detect/route.test.ts:156"}, "properties": {"repobilityId": "aa17003fc1ca5fbb", "scanner": "scanner-primary", "fingerprint": "a15f1911ecfdc8ef", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ff497f3186115c08", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/app/api/content-angles/[id]/route.ts:38"}, "properties": {"repobilityId": "25273b08fe37bd50", "scanner": "scanner-primary", "fingerprint": "ff497f3186115c08", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-300621ec857587ba", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/app/api/stripe/webhook/route.ts:153"}, "properties": {"repobilityId": "b447405418c80003", "scanner": "scanner-primary", "fingerprint": "300621ec857587ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-37f60e57140c196f", "level": "none", "message": {"text": "Commented-code block (8 lines) in nichesurage/src/app/api/stripe/checkout/route.ts:64"}, "properties": {"repobilityId": "549bb8714d6b3b6b", "scanner": "scanner-primary", "fingerprint": "37f60e57140c196f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8765f62269a1e7c9", "level": "none", "message": {"text": "Commented-code block (10 lines) in nichesurage/src/app/api/health-check/[id]/route.ts:39"}, "properties": {"repobilityId": "77bdb8ca56302dc6", "scanner": "scanner-primary", "fingerprint": "8765f62269a1e7c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8f392b97b6a55744", "level": "none", "message": {"text": "Commented-code block (6 lines) in nichesurage/src/app/api/discovery/expand/route.ts:55"}, "properties": {"repobilityId": "4976771dbc352b49", "scanner": "scanner-primary", "fingerprint": "8f392b97b6a55744", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b6b1d1209463d487", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/app/api/discovery/trending/route.ts:52"}, "properties": {"repobilityId": "d7dc6f15c9248d82", "scanner": "scanner-primary", "fingerprint": "b6b1d1209463d487", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5584cc9c65f7bb55", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/src/app/api/discovery/trending/route.ts:114"}, "properties": {"repobilityId": "3aa7ffec8df3a2f5", "scanner": "scanner-primary", "fingerprint": "5584cc9c65f7bb55", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-abd509bd4b32e5d7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/src/app/dashboard/ManageSubscriptionButton.tsx:10"}, "properties": {"repobilityId": "9bea3f2db1957c43", "scanner": "scanner-primary", "fingerprint": "abd509bd4b32e5d7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c9a60de88f3e1f7d", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/app/discover/page.tsx:91"}, "properties": {"repobilityId": "80f9e0468832fa3b", "scanner": "scanner-primary", "fingerprint": "c9a60de88f3e1f7d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7df3915d12c7ce93", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/src/app/discover/page.tsx:78"}, "properties": {"repobilityId": "77243ad20e785cd4", "scanner": "scanner-primary", "fingerprint": "7df3915d12c7ce93", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aaff1a310efdfa6d", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/app/admin/layout.tsx:11"}, "properties": {"repobilityId": "0eea76ccf879db47", "scanner": "scanner-primary", "fingerprint": "aaff1a310efdfa6d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-676ccbd4700c75dd", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/app/admin/setup-totp/EnrollForm.tsx:21"}, "properties": {"repobilityId": "94a9b5b747c0767e", "scanner": "scanner-primary", "fingerprint": "676ccbd4700c75dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bbe31ac67aebeb9e", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/lib/tier.ts:8"}, "properties": {"repobilityId": "197907cb983416ad", "scanner": "scanner-primary", "fingerprint": "bbe31ac67aebeb9e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-86735c6bc3f23603", "level": "none", "message": {"text": "Commented-code block (6 lines) in nichesurage/src/lib/demo/preWarm.ts:9"}, "properties": {"repobilityId": "401134105694e480", "scanner": "scanner-primary", "fingerprint": "86735c6bc3f23603", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-19edc6497ac8ffde", "level": "none", "message": {"text": "Commented-code block (7 lines) in nichesurage/src/lib/demo/useFreeDemoState.ts:10"}, "properties": {"repobilityId": "722eabdb04ec4bf6", "scanner": "scanner-primary", "fingerprint": "19edc6497ac8ffde", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c04cce089587c426", "level": "none", "message": {"text": "Commented-code block (6 lines) in nichesurage/src/lib/types/index.ts:81"}, "properties": {"repobilityId": "9c9bbfe96503cba3", "scanner": "scanner-primary", "fingerprint": "c04cce089587c426", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b4cb607a3808198a", "level": "none", "message": {"text": "Commented-code block (6 lines) in nichesurage/src/lib/email/resend.ts:17"}, "properties": {"repobilityId": "e7f89375fee89ca5", "scanner": "scanner-primary", "fingerprint": "b4cb607a3808198a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4bc2eb3094daf9f5", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/lib/email/templates/welcome.ts:3"}, "properties": {"repobilityId": "d1839331dbd1199b", "scanner": "scanner-primary", "fingerprint": "4bc2eb3094daf9f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c2517fd6c99f378b", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/lib/tier/freeDemo.test.ts:412"}, "properties": {"repobilityId": "edff7460af605323", "scanner": "scanner-primary", "fingerprint": "c2517fd6c99f378b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-57363bf2a7e4663f", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/lib/tier/freeDemo.ts:6"}, "properties": {"repobilityId": "e4589123f810d54a", "scanner": "scanner-primary", "fingerprint": "57363bf2a7e4663f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ae1d1ca1848f4bae", "level": "none", "message": {"text": "Commented-code block (6 lines) in nichesurage/src/lib/clusters/detect.ts:59"}, "properties": {"repobilityId": "b07a6fe5209001ad", "scanner": "scanner-primary", "fingerprint": "ae1d1ca1848f4bae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c24152655d418368", "level": "none", "message": {"text": "Commented-code block (6 lines) in nichesurage/src/lib/discover/fetchDiscoverFeed.ts:57"}, "properties": {"repobilityId": "b364b12e2dab143d", "scanner": "scanner-primary", "fingerprint": "c24152655d418368", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2912f2c1f8b2d7b0", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/lib/landing/fetchTopNiches.ts:5"}, "properties": {"repobilityId": "610487af6856b839", "scanner": "scanner-primary", "fingerprint": "2912f2c1f8b2d7b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e323ebb99dfd3b1", "level": "none", "message": {"text": "Commented-code block (6 lines) in nichesurage/src/lib/landing/fetchRadarPings.ts:47"}, "properties": {"repobilityId": "82aab1e3beb856c2", "scanner": "scanner-primary", "fingerprint": "2e323ebb99dfd3b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-64ae4c63e5b20dd1", "level": "note", "message": {"text": "Legacy-named symbol `daysOld` in nichesurage/src/lib/scanner/premiumSpike.test.ts:101"}, "properties": {"repobilityId": "cdd11ede871e9c1d", "scanner": "scanner-primary", "fingerprint": "64ae4c63e5b20dd1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d12bd55f72b29157", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/lib/scanner/premiumSpike.test.ts:1"}, "properties": {"repobilityId": "d458208eb0b6bd44", "scanner": "scanner-primary", "fingerprint": "d12bd55f72b29157", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8ba4409e2fa5ff3e", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/lib/hooks/useDragToDismiss.ts:31"}, "properties": {"repobilityId": "ac50b4b5b406c719", "scanner": "scanner-primary", "fingerprint": "8ba4409e2fa5ff3e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b6a6ca0dc66750a7", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/lib/supabase/queries.ts:104"}, "properties": {"repobilityId": "5db7cf4d04b7d2db", "scanner": "scanner-primary", "fingerprint": "b6a6ca0dc66750a7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8ab4e17e71584329", "level": "none", "message": {"text": "Commented-code block (6 lines) in nichesurage/src/lib/context/UserContext.tsx:28"}, "properties": {"repobilityId": "3a63f0beca80efb7", "scanner": "scanner-primary", "fingerprint": "8ab4e17e71584329", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9f63745b227aa48f", "level": "none", "message": {"text": "Commented-code block (5 lines) in nichesurage/src/lib/turnstile/verify.ts:3"}, "properties": {"repobilityId": "384dcd027205b402", "scanner": "scanner-primary", "fingerprint": "9f63745b227aa48f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-969823c6912b32c1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/src/lib/youtube/recentVideos.ts:35"}, "properties": {"repobilityId": "17e0be0be753b448", "scanner": "scanner-primary", "fingerprint": "969823c6912b32c1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eef27d415dd05d60", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 nichesurage/src/lib/discovery/channelOnboard.ts:84"}, "properties": {"repobilityId": "2adf176c45d6cfbd", "scanner": "scanner-primary", "fingerprint": "eef27d415dd05d60", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}]}]}