{"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-0aac8ff39482358d", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-smtp.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-smtp.ts:50"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aeeb25b92bc55473", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-dev.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-dev.ts:65"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-71f7a841e025cfab", "name": "Stray `console.log` in TS/JS \u2014 scripts/smoke-llm.ts:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/smoke-llm.ts:66"}, "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-98fc0e781fa4172c", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-demo.ts:99", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-demo.ts:99"}, "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-49fc3496b0e81b0a", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-metrics.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-metrics.ts:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bde46a1f3470e837", "name": "Stray `console.log` in TS/JS \u2014 scripts/smoke-test-pipeline.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/smoke-test-pipeline.ts:53"}, "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-03e2b2decf25f2d6", "name": "Stray `console.log` in TS/JS \u2014 scripts/record-llm-cassette.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/record-llm-cassette.ts:65"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-79a5a336b62eb5eb", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/blog/etude-50-marques-charts.tsx:168", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/blog/etude-50-marques-charts.tsx:168"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f252b318d92bbde4", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/blog/json-ld.tsx:19", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/blog/json-ld.tsx:19"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-449fdc3c4f284f85", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/charts/breakdown-bars.tsx:88", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/charts/breakdown-bars.tsx:88"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ecaa770ae5ab49f8", "name": "\"active\" state uses light bg in a dark theme \u2014 src/components/ui/segmented-control.tsx:57", "shortDescription": {"text": "\"active\" state uses light bg in a dark theme \u2014 src/components/ui/segmented-control.tsx:57"}, "fullDescription": {"text": "A ternary like `active ? 'bg-white' : '...'` (or bg-gray-100/200) on a dark theme produces jarring white pills. Use a dark-emphasized active state instead \u2014 border + ring or slightly brighter dark bg. Example: `active ? 'bg-gray-800 border-gray-500 ring-1 ring-blue-500/30' : '\u2026'`.\n\nWhy: P-E in CHECKLIST.md \u2014 light bg in a dark theme is a class of regression.\nRule id: fq.active-light-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-57b6447cfe150f95", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/ui/score-bar.tsx:33", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/ui/score-bar.tsx:33"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-121f7d5e32247dda", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/app/brand-multi-select.tsx:142", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/app/brand-multi-select.tsx:142"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-97ba8ef6485d44a8", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/app/sidebar-subscribe-card.tsx:114", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/app/sidebar-subscribe-card.tsx:114"}, "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-82b46e9d1ee9f4da", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/app/run-activity-bar.tsx:127", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/app/run-activity-bar.tsx:127"}, "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-b6907bde0498eace", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:94", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:94"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0dfa2d4fd525372f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(app)/app-sidebar.tsx:172", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(app)/app-sidebar.tsx:172"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b6e3ec5a302e9027", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(app)/app-top-bar.tsx:80", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(app)/app-top-bar.tsx:80"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0c159c074e40d7ab", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(app)/app/(with-nav)/audits/page.tsx:176", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(app)/app/(with-nav)/audits/page.tsx:176"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-22d092fef8f65efb", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(app)/app/(with-nav)/audits/[id]/page.tsx:89", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(app)/app/(with-nav)/audits/[id]/page.tsx:89"}, "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-1eb23173f776f6c7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(app)/app/(with-nav)/audits/compare/page.tsx:202", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(app)/app/(with-nav)/audits/compare/page.tsx:202"}, "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-8061d9a0544a9d20", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(app)/app/(with-nav)/runs/[id]/page.tsx:110", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(app)/app/(with-nav)/runs/[id]/page.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-944d06381a2924ee", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(app)/app/(with-nav)/citations/sources-table.tsx:168", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(app)/app/(with-nav)/citations/sources-table.tsx:168"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3cda5a82534edfd8", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(app)/app/(with-nav)/citations/competitors-table.tsx:220", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(app)/app/(with-nav)/citations/competitors-table.tsx:220"}, "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-7e685ffd1a20585f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(marketing)/outils/comparateurs/comparator-results.tsx:162", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(marketing)/outils/comparateurs/comparator-results.tsx:162"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3584e2634d80bd41", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/vs/profound/page.tsx:128", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/vs/profound/page.tsx:128"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8eb14e512c7586f9", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(marketing)/_sections/how-it-works.tsx:102", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(marketing)/_sections/how-it-works.tsx:102"}, "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-ef173358fba2fd7f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(marketing)/_sections/hero-data-showcase.tsx:157", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(marketing)/_sections/hero-data-showcase.tsx:157"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b9d878e769bc4569", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(marketing)/_sections/home-demo-preview.tsx:88", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(marketing)/_sections/home-demo-preview.tsx:88"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-58b234a5846cce92", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/(marketing)/_sections/mockups/mockup-audit.tsx:55", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(marketing)/_sections/mockups/mockup-audit.tsx:55"}, "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-19f56b401fe3c793", "name": "Stray `console.log` in TS/JS \u2014 src/lib/cron-logger.ts:3", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/cron-logger.ts:3"}, "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-e47c2093c01accc1", "name": "Possible secret in scripts/test-smtp.ts", "shortDescription": {"text": "Possible secret in scripts/test-smtp.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-49831bf66f9a6eb2", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:94", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:94"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9291c21b4c6525b3", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/vs/profound/page.tsx:128", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/vs/profound/page.tsx:128"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea3b5e389d8c9c0f", "name": "Low test-to-source ratio", "shortDescription": {"text": "Low test-to-source ratio"}, "fullDescription": {"text": "67 tests / 361 src (ratio 0.19)."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 103 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 60 placeholder/mock markers across 26 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-8f8e1a23d806660b", "name": "Commented-code block (6 lines) in instrumentation-client.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in instrumentation-client.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-66c3970c25abb34f", "name": "Commented-code block (10 lines) in drizzle.config.ts:5", "shortDescription": {"text": "Commented-code block (10 lines) in drizzle.config.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-773985052540d003", "name": "Commented-code block (6 lines) in next.config.ts:31", "shortDescription": {"text": "Commented-code block (6 lines) in next.config.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-b9aa7831390b4ddb", "name": "Commented-code block (5 lines) in scripts/test-smtp.ts:7", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/test-smtp.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-d5449acae72d9ba3", "name": "Commented-code block (5 lines) in scripts/seed-demo.ts:13", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/seed-demo.ts:13"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a23350cee666df49", "name": "Commented-code block (5 lines) in src/instrumentation-client.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/instrumentation-client.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cb1714051a088435", "name": "Commented-code block (5 lines) in src/components/blog/etude-50-marques-charts.tsx:8", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/blog/etude-50-marques-charts.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-27232bf8aeb4509b", "name": "Commented-code block (7 lines) in src/components/blog/toc.tsx:8", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/blog/toc.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-54995d1403029bab", "name": "Commented-code block (6 lines) in src/components/blog/article-cta.tsx:8", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/blog/article-cta.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-b155e0919801643f", "name": "Commented-code block (6 lines) in src/components/blog/article-analytics.tsx:6", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/blog/article-analytics.tsx:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-31bbbe145f4e0a49", "name": "Commented-code block (5 lines) in src/components/blog/json-ld.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/blog/json-ld.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-01051eeab683a5e3", "name": "Commented-code block (7 lines) in src/components/charts/breakdown-bars.tsx:8", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/charts/breakdown-bars.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-f70343430aba1ab2", "name": "Commented-code block (5 lines) in src/components/charts/downloadable-chart.tsx:17", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/charts/downloadable-chart.tsx:17"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4b2f95250c20be58", "name": "Commented-code block (5 lines) in src/components/ui/corner-frame.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/ui/corner-frame.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bd6a69c185814f12", "name": "Commented-code block (5 lines) in src/components/ui/segment-bar.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/ui/segment-bar.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d974473d8b7652f4", "name": "Commented-code block (5 lines) in src/components/ui/button.tsx:9", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/ui/button.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-79c906f8fbe43a96", "name": "Commented-code block (6 lines) in src/components/ui/bottom-fade.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/ui/bottom-fade.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2dbfb8ba7d1d7f15", "name": "Commented-code block (5 lines) in src/components/ui/entity-type-badge.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/ui/entity-type-badge.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eefd5150004d980f", "name": "Commented-code block (6 lines) in src/components/ui/stat.tsx:14", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/ui/stat.tsx: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-e73834f1c641f75b", "name": "Commented-code block (5 lines) in src/components/ui/page-header.tsx:6", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/ui/page-header.tsx:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e8c39aea550c4394", "name": "Commented-code block (6 lines) in src/components/ui/metric-badge.tsx:14", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/ui/metric-badge.tsx: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-417d12915ce46f67", "name": "Commented-code block (5 lines) in src/components/app/plan-picker-modal-trigger.tsx:8", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/app/plan-picker-modal-trigger.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-3fd73a99d3263992", "name": "Commented-code block (5 lines) in src/components/app/brand-multi-select.tsx:31", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/app/brand-multi-select.tsx:31"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c46e591882029a7d", "name": "Commented-code block (5 lines) in src/components/app/posthog-user-identify.tsx:11", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/app/posthog-user-identify.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-4997158424a79964", "name": "Commented-code block (5 lines) in src/components/app/sidebar-subscribe-card.tsx:16", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/app/sidebar-subscribe-card.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-1d81b3a1669973c1", "name": "Commented-code block (5 lines) in src/components/app/run-status-badge.tsx:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/app/run-status-badge.tsx:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0d67d0a913260128", "name": "Commented-code block (5 lines) in src/components/app/run-activity-bar.tsx:10", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/app/run-activity-bar.tsx:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fdf63aaa198efd9e", "name": "Commented-code block (6 lines) in src/components/app/upgrade-banner.tsx:8", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/app/upgrade-banner.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-8ea434678e7ddc14", "name": "Commented-code block (5 lines) in src/components/marketing/llm-pill.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/marketing/llm-pill.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2d903d24ff7e5a3e", "name": "Commented-code block (6 lines) in src/components/admin/visuals/etre-cite-par-gemini/night-shell.tsx:7", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/admin/visuals/etre-cite-par-gemini/night-shell.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b091bddc25a22614", "name": "Commented-code block (7 lines) in src/components/admin/visuals/_primitives/tokens.ts:27", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/admin/visuals/_primitives/tokens.ts:27"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9510b3523f3f18b0", "name": "Commented-code block (6 lines) in src/components/admin/visuals/_primitives/slide-shell.tsx:13", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/admin/visuals/_primitives/slide-shell.tsx:13"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5b50c91f7b219750", "name": "Commented-code block (5 lines) in src/components/admin/visuals/etude-50-marques/article-cover.tsx:5", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/admin/visuals/etude-50-marques/article-cover.tsx:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-375d01b6a11f1696", "name": "Commented-code block (6 lines) in src/app/opengraph-image.tsx:6", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/opengraph-image.tsx:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9e6bd93ec35be576", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/opengraph-image.tsx:32", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/opengraph-image.tsx:32"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aa99d7df9686b50a", "name": "Commented-code block (5 lines) in src/app/login/login-content.tsx:12", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/login/login-content.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-70e4c1ee71ab3f70", "name": "Commented-code block (5 lines) in src/app/api/cron/dispatch/route.ts:20", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/cron/dispatch/route.ts:20"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cbf7f973b40473d7", "name": "Commented-code block (5 lines) in src/app/api/cron/schedule-runs/route.ts:11", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/cron/schedule-runs/route.ts:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b0e41102115bda7e", "name": "Commented-code block (6 lines) in src/app/api/account/export.json/route.ts:26", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/account/export.json/route.ts:26"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-34bcfa84368ace46", "name": "Commented-code block (8 lines) in src/app/(app)/app/admin/layout.tsx:39", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/(app)/app/admin/layout.tsx: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-4fc6a16e2207033d", "name": "Commented-code block (5 lines) in src/app/(app)/app/onboarding/actions.ts:144", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(app)/app/onboarding/actions.ts:144"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-106bc0d54503dd3a", "name": "Commented-code block (7 lines) in src/app/(app)/app/(with-nav)/layout.tsx:12", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/(app)/app/(with-nav)/layout.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-32439f154f6dbb15", "name": "Commented-code block (6 lines) in src/app/(app)/app/(with-nav)/settings/billing-section.tsx:9", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/(app)/app/(with-nav)/settings/billing-section.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-a40740c3d70b1538", "name": "Commented-code block (6 lines) in src/app/(app)/app/(with-nav)/settings/page.tsx:17", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/(app)/app/(with-nav)/settings/page.tsx:17"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d73b7f47351b6dee", "name": "Commented-code block (7 lines) in src/app/(app)/app/(with-nav)/settings/account-danger-zone.tsx:24", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/(app)/app/(with-nav)/settings/account-danger-zone.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-a7495335c78294fe", "name": "Commented-code block (12 lines) in src/app/(app)/app/(with-nav)/settings/account-actions.ts:14", "shortDescription": {"text": "Commented-code block (12 lines) in src/app/(app)/app/(with-nav)/settings/account-actions.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-faa8becf9b929a70", "name": "Commented-code block (5 lines) in src/app/(app)/app/(with-nav)/settings/billing-actions.ts:21", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(app)/app/(with-nav)/settings/billing-actions.ts:21"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a78364147ca62091", "name": "Commented-code block (5 lines) in src/app/(app)/app/(with-nav)/audits/[id]/checks-by-severity.tsx:14", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(app)/app/(with-nav)/audits/[id]/checks-by-severity.tsx: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-3a6888c2f8e7fc63", "name": "Commented-code block (5 lines) in src/app/(app)/app/(with-nav)/audits/[id]/page.tsx:45", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(app)/app/(with-nav)/audits/[id]/page.tsx:45"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0a272cfe23fbb298", "name": "Commented-code block (5 lines) in src/app/(app)/app/(with-nav)/dashboard/dashboard-tracker.tsx:6", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(app)/app/(with-nav)/dashboard/dashboard-tracker.tsx:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-98eb863a9fecbe0e", "name": "Commented-code block (6 lines) in src/app/(app)/app/(with-nav)/dashboard/trend-section.tsx:15", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/(app)/app/(with-nav)/dashboard/trend-section.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-1c3c67ca3fa7e006", "name": "Commented-code block (5 lines) in src/app/(app)/app/(with-nav)/citations/citations-view.tsx:14", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(app)/app/(with-nav)/citations/citations-view.tsx: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-6ec72d2169bb805b", "name": "Commented-code block (5 lines) in src/app/(app)/app/(with-nav)/citations/actions.ts:19", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(app)/app/(with-nav)/citations/actions.ts:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a34b6fceea94ac93", "name": "Commented-code block (5 lines) in src/app/(app)/app/(with-nav)/citations/page.tsx:15", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(app)/app/(with-nav)/citations/page.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-a7f4842cbf7f07c2", "name": "Commented-code block (8 lines) in src/app/(app)/app/(with-nav)/citations/ranking-tab.tsx:17", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/(app)/app/(with-nav)/citations/ranking-tab.tsx:17"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-00b1ccaea20ee090", "name": "Commented-code block (5 lines) in src/app/(app)/app/(with-nav)/citations/sources-table.tsx:15", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(app)/app/(with-nav)/citations/sources-table.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-5d99d892da2bafeb", "name": "Commented-code block (6 lines) in src/app/(app)/app/(with-nav)/citations/sources/[id]/page.tsx:17", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/(app)/app/(with-nav)/citations/sources/[id]/page.tsx:17"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0f5419742e0e85b4", "name": "Commented-code block (8 lines) in src/app/(app)/app/(with-nav)/conseils/conseils-view.tsx:23", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/(app)/app/(with-nav)/conseils/conseils-view.tsx:23"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-50098b5e3b2fa022", "name": "Commented-code block (5 lines) in src/app/(app)/app/(with-nav)/prompts/prompt-form-dialog.tsx:21", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(app)/app/(with-nav)/prompts/prompt-form-dialog.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-de251b0acd7bc482", "name": "Commented-code block (10 lines) in src/app/(marketing)/page.tsx:28", "shortDescription": {"text": "Commented-code block (10 lines) in src/app/(marketing)/page.tsx:28"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8ff55f6b48824c6f", "name": "Commented-code block (5 lines) in src/app/(marketing)/outils/location-actions.ts:8", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(marketing)/outils/location-actions.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-3a3288a18aef927a", "name": "Commented-code block (5 lines) in src/app/(marketing)/outils/audit-technique/actions.ts:13", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(marketing)/outils/audit-technique/actions.ts:13"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a22a2890ed77066a", "name": "Commented-code block (5 lines) in src/app/(marketing)/outils/comparateurs/comparator-results.tsx:11", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(marketing)/outils/comparateurs/comparator-results.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-4d5cc8e7b2a66a6f", "name": "Commented-code block (6 lines) in src/app/(marketing)/outils/comparateurs/page.tsx:19", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/(marketing)/outils/comparateurs/page.tsx:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0d8050711d700155", "name": "Commented-code block (5 lines) in src/app/(marketing)/outils/test-visibilite-ia/actions.ts:20", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(marketing)/outils/test-visibilite-ia/actions.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-c525dcce3d59daea", "name": "Commented-code block (7 lines) in src/app/(marketing)/outils/test-visibilite-ia/express-scan-results.tsx:12", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/(marketing)/outils/test-visibilite-ia/express-scan-results.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-40aeb85b6530d488", "name": "Commented-code block (5 lines) in src/app/(marketing)/_sections/marketing-header.tsx:8", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(marketing)/_sections/marketing-header.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-20e3c5a882e09335", "name": "Commented-code block (5 lines) in src/app/(marketing)/_sections/proof-strip.tsx:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(marketing)/_sections/proof-strip.tsx:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-db8568053cb2a30a", "name": "Commented-code block (6 lines) in src/app/(marketing)/_sections/audit-teaser.tsx:5", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/(marketing)/_sections/audit-teaser.tsx:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b34e380e09f961db", "name": "Commented-code block (5 lines) in src/app/(marketing)/_sections/how-it-works.tsx:5", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(marketing)/_sections/how-it-works.tsx:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dd9c76947cfe1a41", "name": "Commented-code block (12 lines) in src/app/(marketing)/_sections/product-tour.tsx:7", "shortDescription": {"text": "Commented-code block (12 lines) in src/app/(marketing)/_sections/product-tour.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e5bb5353000463c0", "name": "Commented-code block (5 lines) in src/app/(marketing)/_sections/hero-data-showcase.tsx:11", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(marketing)/_sections/hero-data-showcase.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-044a593fdb2d5515", "name": "Commented-code block (5 lines) in src/app/(marketing)/_sections/home-demo-preview-bars.tsx:8", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(marketing)/_sections/home-demo-preview-bars.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-b56b21e81e1e2c34", "name": "Commented-code block (6 lines) in src/app/(marketing)/_sections/tes-concurrents-pas-toi.tsx:18", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/(marketing)/_sections/tes-concurrents-pas-toi.tsx:18"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9e4c9d4cfbeecee1", "name": "Commented-code block (9 lines) in src/app/(marketing)/_sections/hero.tsx:6", "shortDescription": {"text": "Commented-code block (9 lines) in src/app/(marketing)/_sections/hero.tsx:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-80052b3f30cfceef", "name": "Commented-code block (6 lines) in src/app/(marketing)/_sections/sans-avec.tsx:5", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/(marketing)/_sections/sans-avec.tsx:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bf3898767a7e1ad9", "name": "Commented-code block (6 lines) in src/app/(marketing)/_sections/home-demo-preview.tsx:10", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/(marketing)/_sections/home-demo-preview.tsx:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bab14abf41313682", "name": "Commented-code block (5 lines) in src/app/(marketing)/_sections/pour-qui.tsx:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(marketing)/_sections/pour-qui.tsx:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6bc5fd98832e08ca", "name": "Commented-code block (5 lines) in src/app/(marketing)/_sections/mockups/mockup-report.tsx:6", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(marketing)/_sections/mockups/mockup-report.tsx:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-11d1d5fa57a85715", "name": "Commented-code block (5 lines) in src/app/(marketing)/_sections/pricing/pricing-plans.tsx:9", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(marketing)/_sections/pricing/pricing-plans.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-ee6e1b51c69923b9", "name": "Commented-code block (5 lines) in src/app/(blog)/blog/[slug]/page.tsx:15", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/(blog)/blog/[slug]/page.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-c59eae407b55d39c", "name": "Commented-code block (15 lines) in src/lib/site-profile.ts:10", "shortDescription": {"text": "Commented-code block (15 lines) in src/lib/site-profile.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-87e99a5c4620cd14", "name": "Commented-code block (5 lines) in src/lib/auth.ts:13", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/auth.ts:13"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c38a8d8c2aa42259", "name": "Commented-code block (5 lines) in src/lib/email.ts:7", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/email.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-a516e8a9abb12a4b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/email.ts:277", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/email.ts:277"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-53ec1403a997581e", "name": "Commented-code block (5 lines) in src/lib/geo-advice.ts:8", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/geo-advice.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-0ddf604c10fb2405", "name": "Commented-code block (12 lines) in src/lib/env.ts:5", "shortDescription": {"text": "Commented-code block (12 lines) in src/lib/env.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-6560bdd7db40c7c9", "name": "Commented-code block (6 lines) in src/lib/auth-client.ts:6", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/auth-client.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-22b2e4e908bf9069", "name": "Commented-code block (9 lines) in src/lib/location-detect.ts:3", "shortDescription": {"text": "Commented-code block (9 lines) in src/lib/location-detect.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-ecb4d474755f1e1e", "name": "Commented-code block (8 lines) in src/lib/blog/registry.test.ts:5", "shortDescription": {"text": "Commented-code block (8 lines) in src/lib/blog/registry.test.ts:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c63eedf1a9f74f3e", "name": "Commented-code block (6 lines) in src/lib/dashboard/queries.ts:161", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/dashboard/queries.ts:161"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eb819624afe5d661", "name": "Commented-code block (6 lines) in src/lib/brands/actions.ts:18", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/brands/actions.ts:18"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4bdf84d412a88ccb", "name": "Commented-code block (8 lines) in src/lib/sources/classify.ts:8", "shortDescription": {"text": "Commented-code block (8 lines) in src/lib/sources/classify.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-350063e3e6b1cb3c", "name": "Commented-code block (5 lines) in src/lib/audit/recommendations.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/audit/recommendations.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-484ebc3addbeaecf", "name": "Commented-code block (5 lines) in src/lib/audit/checks/ai-bots.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/audit/checks/ai-bots.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-eb5726cc79659b0a", "name": "Commented-code block (5 lines) in src/lib/admin/llm-credits.ts:15", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/admin/llm-credits.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-9382bf0d2be1de0b", "name": "Commented-code block (7 lines) in src/lib/runs/batches.test.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/runs/batches.test.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-247b248879e25052", "name": "Commented-code block (5 lines) in src/lib/hardcap/quotas.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/hardcap/quotas.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-3a09d099031a7296", "name": "Commented-code block (6 lines) in src/lib/express-scan/run.ts:11", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/express-scan/run.ts:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-87c76041e85eba7e", "name": "Commented-code block (7 lines) in src/lib/express-scan/extract.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/express-scan/extract.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-a1eae14950ce1442", "name": "Commented-code block (5 lines) in src/lib/csv/index.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/csv/index.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4fe322d724150655", "name": "Commented-code block (5 lines) in src/lib/metrics/part-de-voix.ts:12", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/metrics/part-de-voix.ts:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8642c35322071f91", "name": "Commented-code block (5 lines) in src/lib/stripe/plan-catalog.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/stripe/plan-catalog.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-ec388b677692844c", "name": "Commented-code block (5 lines) in src/lib/stripe/webhook-handlers.ts:16", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/stripe/webhook-handlers.ts: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-2a4b243d6702dd6d", "name": "Commented-code block (10 lines) in src/lib/comparators/enrich.ts:4", "shortDescription": {"text": "Commented-code block (10 lines) in src/lib/comparators/enrich.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8e3dc93243d7b95e", "name": "Commented-code block (8 lines) in src/lib/comparators/scan.ts:16", "shortDescription": {"text": "Commented-code block (8 lines) in src/lib/comparators/scan.ts: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-4176161e61c91ca4", "name": "Commented-code block (6 lines) in src/lib/comparators/sectors.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/comparators/sectors.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-6b58522b9eed626c", "name": "Commented-code block (5 lines) in src/lib/plans/quotas.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/plans/quotas.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-c486c311cc962344", "name": "Commented-code block (5 lines) in src/lib/citation/types.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/citation/types.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-8123eefffbd194cb", "name": "Commented-code block (6 lines) in src/lib/scheduler/cadence-eligibility.ts:7", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/scheduler/cadence-eligibility.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-eb172c6918079dc2", "name": "Commented-code block (6 lines) in src/lib/scheduler/schedule-runs.ts:11", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/scheduler/schedule-runs.ts:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-75e2087512c833e9", "name": "Commented-code block (5 lines) in src/lib/feedback/actions.ts:10", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/feedback/actions.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-cf4ad64c7175d508", "name": "Commented-code block (7 lines) in src/lib/llm/mistral.ts:14", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/llm/mistral.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-9da73d9dd722604d", "name": "Commented-code block (6 lines) in src/lib/llm/perplexity.ts:10", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/llm/perplexity.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-64299fa414164482", "name": "Commented-code block (5 lines) in src/lib/llm/perplexity.test.ts:72", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/llm/perplexity.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-e0992393bb72680b", "name": "Commented-code block (6 lines) in src/lib/llm/openai.ts:15", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/llm/openai.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-e562bbf17597ffab", "name": "Commented-code block (8 lines) in src/lib/llm/prompt-generator.ts:9", "shortDescription": {"text": "Commented-code block (8 lines) in src/lib/llm/prompt-generator.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-324737ff32148d8e", "name": "Commented-code block (5 lines) in src/lib/llm/pricing.ts:47", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/llm/pricing.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-523e7b920bf402a1", "name": "Commented-code block (5 lines) in src/lib/llm/anthropic.test.ts:55", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/llm/anthropic.test.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-fb38864f226fb72d", "name": "Commented-code block (5 lines) in src/lib/llm/openai.test.ts:55", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/llm/openai.test.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-0bb679766e67108e", "name": "Commented-code block (8 lines) in src/lib/llm/anthropic.ts:21", "shortDescription": {"text": "Commented-code block (8 lines) in src/lib/llm/anthropic.ts:21"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-58e42cb7e5563cb3", "name": "Commented-code block (10 lines) in src/workers/send-weekly-email.ts:31", "shortDescription": {"text": "Commented-code block (10 lines) in src/workers/send-weekly-email.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-67315bdf4663e260", "name": "Commented-code block (12 lines) in src/workers/score-response.ts:16", "shortDescription": {"text": "Commented-code block (12 lines) in src/workers/score-response.ts: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-674bf0f5f65d07d1", "name": "Commented-code block (6 lines) in src/workers/execute-prompt.ts:49", "shortDescription": {"text": "Commented-code block (6 lines) in src/workers/execute-prompt.ts:49"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b9e62b5e0b310c17", "name": "Commented-code block (8 lines) in src/workers/audit-workspace-url.ts:25", "shortDescription": {"text": "Commented-code block (8 lines) in src/workers/audit-workspace-url.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-613662bae84bdd31", "name": "Commented-code block (8 lines) in src/db/schema.ts:18", "shortDescription": {"text": "Commented-code block (8 lines) in src/db/schema.ts:18"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-af022f937dd5b7fd", "name": "9 env vars used in code but missing from .env.example", "shortDescription": {"text": "9 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ADMIN_EMAILS`, `CI`, `NEXT_PHASE`, `NEXT_PUBLIC_POSTHOG_PROJECT_TOKEN`, `NEXT_PUBLIC_VERCEL_ENV`, `NEXT_RUNTIME`, `PLAYWRIGHT_BASE_URL`, `VERCEL_ENV` + 1 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/21852"}, "properties": {"repository": "uimaxence/mamie-geo", "repoUrl": "https://github.com/uimaxence/mamie-geo", "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-0aac8ff39482358d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-smtp.ts:50"}, "properties": {"repobilityId": "5cae4a723cf3c1f3", "scanner": "scanner-primary", "fingerprint": "0aac8ff39482358d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aeeb25b92bc55473", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-dev.ts:65"}, "properties": {"repobilityId": "53c495cf24f45a46", "scanner": "scanner-primary", "fingerprint": "aeeb25b92bc55473", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-71f7a841e025cfab", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/smoke-llm.ts:66"}, "properties": {"repobilityId": "4a85d16a3c13eb66", "scanner": "scanner-primary", "fingerprint": "71f7a841e025cfab", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-98fc0e781fa4172c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-demo.ts:99"}, "properties": {"repobilityId": "b7f1ec3c1a06f2fb", "scanner": "scanner-primary", "fingerprint": "98fc0e781fa4172c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-49fc3496b0e81b0a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-metrics.ts:33"}, "properties": {"repobilityId": "919e35210bbd8b4c", "scanner": "scanner-primary", "fingerprint": "49fc3496b0e81b0a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bde46a1f3470e837", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/smoke-test-pipeline.ts:53"}, "properties": {"repobilityId": "979be330aef728c8", "scanner": "scanner-primary", "fingerprint": "bde46a1f3470e837", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-03e2b2decf25f2d6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/record-llm-cassette.ts:65"}, "properties": {"repobilityId": "d2a5460a898f8b12", "scanner": "scanner-primary", "fingerprint": "03e2b2decf25f2d6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-79a5a336b62eb5eb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/blog/etude-50-marques-charts.tsx:168"}, "properties": {"repobilityId": "1bb69f2f7d4e2a68", "scanner": "scanner-primary", "fingerprint": "79a5a336b62eb5eb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f252b318d92bbde4", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/blog/json-ld.tsx:19"}, "properties": {"repobilityId": "3b6d72316906b648", "scanner": "scanner-primary", "fingerprint": "f252b318d92bbde4", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-449fdc3c4f284f85", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/charts/breakdown-bars.tsx:88"}, "properties": {"repobilityId": "7f58f8b320b28eba", "scanner": "scanner-primary", "fingerprint": "449fdc3c4f284f85", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ecaa770ae5ab49f8", "level": "note", "message": {"text": "\"active\" state uses light bg in a dark theme \u2014 src/components/ui/segmented-control.tsx:57"}, "properties": {"repobilityId": "82d43d9169f51631", "scanner": "scanner-primary", "fingerprint": "ecaa770ae5ab49f8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.active-light-bg"]}}, {"ruleId": "scanner-57b6447cfe150f95", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/ui/score-bar.tsx:33"}, "properties": {"repobilityId": "b05b116a30771270", "scanner": "scanner-primary", "fingerprint": "57b6447cfe150f95", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-121f7d5e32247dda", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/app/brand-multi-select.tsx:142"}, "properties": {"repobilityId": "7870f3ac563cdeef", "scanner": "scanner-primary", "fingerprint": "121f7d5e32247dda", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-97ba8ef6485d44a8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/app/sidebar-subscribe-card.tsx:114"}, "properties": {"repobilityId": "e33fc6dddb8d37a6", "scanner": "scanner-primary", "fingerprint": "97ba8ef6485d44a8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-82b46e9d1ee9f4da", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/app/run-activity-bar.tsx:127"}, "properties": {"repobilityId": "0623396f9445740b", "scanner": "scanner-primary", "fingerprint": "82b46e9d1ee9f4da", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b6907bde0498eace", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:94"}, "properties": {"repobilityId": "0d72350965068f5b", "scanner": "scanner-primary", "fingerprint": "b6907bde0498eace", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-0dfa2d4fd525372f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(app)/app-sidebar.tsx:172"}, "properties": {"repobilityId": "cb5dd9be16451826", "scanner": "scanner-primary", "fingerprint": "0dfa2d4fd525372f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b6e3ec5a302e9027", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(app)/app-top-bar.tsx:80"}, "properties": {"repobilityId": "d2fe7d3e769f2fa3", "scanner": "scanner-primary", "fingerprint": "b6e3ec5a302e9027", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0c159c074e40d7ab", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(app)/app/(with-nav)/audits/page.tsx:176"}, "properties": {"repobilityId": "670336466b9c2aed", "scanner": "scanner-primary", "fingerprint": "0c159c074e40d7ab", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-22d092fef8f65efb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(app)/app/(with-nav)/audits/[id]/page.tsx:89"}, "properties": {"repobilityId": "d5e69337a0abd517", "scanner": "scanner-primary", "fingerprint": "22d092fef8f65efb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1eb23173f776f6c7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(app)/app/(with-nav)/audits/compare/page.tsx:202"}, "properties": {"repobilityId": "c069e594ea7491fe", "scanner": "scanner-primary", "fingerprint": "1eb23173f776f6c7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8061d9a0544a9d20", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(app)/app/(with-nav)/runs/[id]/page.tsx:110"}, "properties": {"repobilityId": "6b0e40ccd7b95c4b", "scanner": "scanner-primary", "fingerprint": "8061d9a0544a9d20", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-944d06381a2924ee", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(app)/app/(with-nav)/citations/sources-table.tsx:168"}, "properties": {"repobilityId": "124c5d5519c6f465", "scanner": "scanner-primary", "fingerprint": "944d06381a2924ee", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3cda5a82534edfd8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(app)/app/(with-nav)/citations/competitors-table.tsx:220"}, "properties": {"repobilityId": "25f06af044665d3c", "scanner": "scanner-primary", "fingerprint": "3cda5a82534edfd8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7e685ffd1a20585f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(marketing)/outils/comparateurs/comparator-results.tsx:162"}, "properties": {"repobilityId": "551bd097940581ad", "scanner": "scanner-primary", "fingerprint": "7e685ffd1a20585f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3584e2634d80bd41", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/(marketing)/vs/profound/page.tsx:128"}, "properties": {"repobilityId": "1a16b35c7477d79f", "scanner": "scanner-primary", "fingerprint": "3584e2634d80bd41", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-8eb14e512c7586f9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(marketing)/_sections/how-it-works.tsx:102"}, "properties": {"repobilityId": "467f7a0251950ca7", "scanner": "scanner-primary", "fingerprint": "8eb14e512c7586f9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ef173358fba2fd7f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(marketing)/_sections/hero-data-showcase.tsx:157"}, "properties": {"repobilityId": "2e369574ece344a8", "scanner": "scanner-primary", "fingerprint": "ef173358fba2fd7f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b9d878e769bc4569", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(marketing)/_sections/home-demo-preview.tsx:88"}, "properties": {"repobilityId": "1ec8f91b6eb72629", "scanner": "scanner-primary", "fingerprint": "b9d878e769bc4569", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-58b234a5846cce92", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/(marketing)/_sections/mockups/mockup-audit.tsx:55"}, "properties": {"repobilityId": "0eed434bd2a6ee86", "scanner": "scanner-primary", "fingerprint": "58b234a5846cce92", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-19f56b401fe3c793", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/cron-logger.ts:3"}, "properties": {"repobilityId": "cd9a16ef90e9c4a2", "scanner": "scanner-primary", "fingerprint": "19f56b401fe3c793", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e47c2093c01accc1", "level": "error", "message": {"text": "Possible secret in scripts/test-smtp.ts"}, "properties": {"repobilityId": "55af30eb99813ebf", "scanner": "scanner-primary", "fingerprint": "e47c2093c01accc1", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-smtp.ts"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-49831bf66f9a6eb2", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:94"}, "properties": {"repobilityId": "0bca654fa2052eb0", "scanner": "scanner-primary", "fingerprint": "49831bf66f9a6eb2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/layout.tsx"}, "region": {"startLine": 94}}}]}, {"ruleId": "scanner-9291c21b4c6525b3", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/(marketing)/vs/profound/page.tsx:128"}, "properties": {"repobilityId": "319a41a544521998", "scanner": "scanner-primary", "fingerprint": "9291c21b4c6525b3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(marketing)/vs/profound/page.tsx"}, "region": {"startLine": 128}}}]}, {"ruleId": "scanner-ea3b5e389d8c9c0f", "level": "note", "message": {"text": "Low test-to-source ratio"}, "properties": {"repobilityId": "ef7b2552cc00a375", "scanner": "scanner-primary", "fingerprint": "ea3b5e389d8c9c0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["tests"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "747b40398edef8ab", "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": "8f8809ade21225a5", "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": "d6e3eb788af6357f", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "31112ee3b00b4cf2", "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": "dfb5ab9c85895822", "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": "ab158bef66631bb7", "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": "e5eb3ccb15f6bbc9", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8f8e1a23d806660b", "level": "none", "message": {"text": "Commented-code block (6 lines) in instrumentation-client.ts:3"}, "properties": {"repobilityId": "fb3ce98cd06a0ce8", "scanner": "scanner-primary", "fingerprint": "8f8e1a23d806660b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-66c3970c25abb34f", "level": "none", "message": {"text": "Commented-code block (10 lines) in drizzle.config.ts:5"}, "properties": {"repobilityId": "5d9cbd3d6e0a19e2", "scanner": "scanner-primary", "fingerprint": "66c3970c25abb34f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-773985052540d003", "level": "none", "message": {"text": "Commented-code block (6 lines) in next.config.ts:31"}, "properties": {"repobilityId": "e17175ba90b0d163", "scanner": "scanner-primary", "fingerprint": "773985052540d003", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b9aa7831390b4ddb", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/test-smtp.ts:7"}, "properties": {"repobilityId": "8170b53498162bd0", "scanner": "scanner-primary", "fingerprint": "b9aa7831390b4ddb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d5449acae72d9ba3", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/seed-demo.ts:13"}, "properties": {"repobilityId": "64b7835fe99ac7f1", "scanner": "scanner-primary", "fingerprint": "d5449acae72d9ba3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a23350cee666df49", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/instrumentation-client.ts:4"}, "properties": {"repobilityId": "8b4a4c8c3be39c04", "scanner": "scanner-primary", "fingerprint": "a23350cee666df49", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb1714051a088435", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/blog/etude-50-marques-charts.tsx:8"}, "properties": {"repobilityId": "d27351d7f62062c0", "scanner": "scanner-primary", "fingerprint": "cb1714051a088435", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-27232bf8aeb4509b", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/blog/toc.tsx:8"}, "properties": {"repobilityId": "7417b254fc147892", "scanner": "scanner-primary", "fingerprint": "27232bf8aeb4509b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-54995d1403029bab", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/blog/article-cta.tsx:8"}, "properties": {"repobilityId": "4c743a4d8e306d45", "scanner": "scanner-primary", "fingerprint": "54995d1403029bab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b155e0919801643f", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/blog/article-analytics.tsx:6"}, "properties": {"repobilityId": "ba570be7a40f0997", "scanner": "scanner-primary", "fingerprint": "b155e0919801643f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-31bbbe145f4e0a49", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/blog/json-ld.tsx:1"}, "properties": {"repobilityId": "c0b4e4acc1a1e186", "scanner": "scanner-primary", "fingerprint": "31bbbe145f4e0a49", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-01051eeab683a5e3", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/charts/breakdown-bars.tsx:8"}, "properties": {"repobilityId": "b97cf53351e93796", "scanner": "scanner-primary", "fingerprint": "01051eeab683a5e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f70343430aba1ab2", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/charts/downloadable-chart.tsx:17"}, "properties": {"repobilityId": "51992559a37429c8", "scanner": "scanner-primary", "fingerprint": "f70343430aba1ab2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b2f95250c20be58", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/ui/corner-frame.tsx:3"}, "properties": {"repobilityId": "d46575eb3b92ef99", "scanner": "scanner-primary", "fingerprint": "4b2f95250c20be58", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bd6a69c185814f12", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/ui/segment-bar.tsx:3"}, "properties": {"repobilityId": "c88a88d13168b104", "scanner": "scanner-primary", "fingerprint": "bd6a69c185814f12", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d974473d8b7652f4", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/ui/button.tsx:9"}, "properties": {"repobilityId": "7dcd216677c43116", "scanner": "scanner-primary", "fingerprint": "d974473d8b7652f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-79c906f8fbe43a96", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/ui/bottom-fade.tsx:3"}, "properties": {"repobilityId": "779789161a9c37e6", "scanner": "scanner-primary", "fingerprint": "79c906f8fbe43a96", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2dbfb8ba7d1d7f15", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/ui/entity-type-badge.tsx:3"}, "properties": {"repobilityId": "6a1e58ae30e8847e", "scanner": "scanner-primary", "fingerprint": "2dbfb8ba7d1d7f15", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eefd5150004d980f", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/ui/stat.tsx:14"}, "properties": {"repobilityId": "9a76a88f95619a52", "scanner": "scanner-primary", "fingerprint": "eefd5150004d980f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e73834f1c641f75b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/ui/page-header.tsx:6"}, "properties": {"repobilityId": "3bb6e58489f17188", "scanner": "scanner-primary", "fingerprint": "e73834f1c641f75b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e8c39aea550c4394", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/ui/metric-badge.tsx:14"}, "properties": {"repobilityId": "9e998df2fc05147e", "scanner": "scanner-primary", "fingerprint": "e8c39aea550c4394", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-417d12915ce46f67", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/app/plan-picker-modal-trigger.tsx:8"}, "properties": {"repobilityId": "b552762c20f3d4fc", "scanner": "scanner-primary", "fingerprint": "417d12915ce46f67", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3fd73a99d3263992", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/app/brand-multi-select.tsx:31"}, "properties": {"repobilityId": "3ed2601b7838c537", "scanner": "scanner-primary", "fingerprint": "3fd73a99d3263992", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c46e591882029a7d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/app/posthog-user-identify.tsx:11"}, "properties": {"repobilityId": "47b0f067a29b90fd", "scanner": "scanner-primary", "fingerprint": "c46e591882029a7d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4997158424a79964", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/app/sidebar-subscribe-card.tsx:16"}, "properties": {"repobilityId": "10529610e3f4732c", "scanner": "scanner-primary", "fingerprint": "4997158424a79964", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1d81b3a1669973c1", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/app/run-status-badge.tsx:4"}, "properties": {"repobilityId": "aa701cfe96e5a9f7", "scanner": "scanner-primary", "fingerprint": "1d81b3a1669973c1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d67d0a913260128", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/app/run-activity-bar.tsx:10"}, "properties": {"repobilityId": "6b8480af3cd7f727", "scanner": "scanner-primary", "fingerprint": "0d67d0a913260128", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fdf63aaa198efd9e", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/app/upgrade-banner.tsx:8"}, "properties": {"repobilityId": "7dd1926edcb98b8d", "scanner": "scanner-primary", "fingerprint": "fdf63aaa198efd9e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8ea434678e7ddc14", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/marketing/llm-pill.tsx:3"}, "properties": {"repobilityId": "1ddb7c26e7a81191", "scanner": "scanner-primary", "fingerprint": "8ea434678e7ddc14", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2d903d24ff7e5a3e", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/admin/visuals/etre-cite-par-gemini/night-shell.tsx:7"}, "properties": {"repobilityId": "bf22d5ad3a3ba646", "scanner": "scanner-primary", "fingerprint": "2d903d24ff7e5a3e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b091bddc25a22614", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/admin/visuals/_primitives/tokens.ts:27"}, "properties": {"repobilityId": "3301b899840d9a3c", "scanner": "scanner-primary", "fingerprint": "b091bddc25a22614", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9510b3523f3f18b0", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/admin/visuals/_primitives/slide-shell.tsx:13"}, "properties": {"repobilityId": "91eb1ceec71b66e4", "scanner": "scanner-primary", "fingerprint": "9510b3523f3f18b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5b50c91f7b219750", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/admin/visuals/etude-50-marques/article-cover.tsx:5"}, "properties": {"repobilityId": "e02d68b17582173b", "scanner": "scanner-primary", "fingerprint": "5b50c91f7b219750", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-375d01b6a11f1696", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/opengraph-image.tsx:6"}, "properties": {"repobilityId": "96b753fe3763a473", "scanner": "scanner-primary", "fingerprint": "375d01b6a11f1696", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9e6bd93ec35be576", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/opengraph-image.tsx:32"}, "properties": {"repobilityId": "3d5e63109581da7f", "scanner": "scanner-primary", "fingerprint": "9e6bd93ec35be576", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aa99d7df9686b50a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/login/login-content.tsx:12"}, "properties": {"repobilityId": "3ef6d13ceecc3e8f", "scanner": "scanner-primary", "fingerprint": "aa99d7df9686b50a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-70e4c1ee71ab3f70", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/cron/dispatch/route.ts:20"}, "properties": {"repobilityId": "706ea35f48dcd85f", "scanner": "scanner-primary", "fingerprint": "70e4c1ee71ab3f70", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cbf7f973b40473d7", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/cron/schedule-runs/route.ts:11"}, "properties": {"repobilityId": "0fa9688b978180eb", "scanner": "scanner-primary", "fingerprint": "cbf7f973b40473d7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b0e41102115bda7e", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/account/export.json/route.ts:26"}, "properties": {"repobilityId": "ae7b7faac629ea60", "scanner": "scanner-primary", "fingerprint": "b0e41102115bda7e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-34bcfa84368ace46", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/(app)/app/admin/layout.tsx:39"}, "properties": {"repobilityId": "e713fa0c98d5dc9e", "scanner": "scanner-primary", "fingerprint": "34bcfa84368ace46", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4fc6a16e2207033d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(app)/app/onboarding/actions.ts:144"}, "properties": {"repobilityId": "c4e3b3612a915370", "scanner": "scanner-primary", "fingerprint": "4fc6a16e2207033d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-106bc0d54503dd3a", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/(app)/app/(with-nav)/layout.tsx:12"}, "properties": {"repobilityId": "1e2a6a28f852d773", "scanner": "scanner-primary", "fingerprint": "106bc0d54503dd3a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-32439f154f6dbb15", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/(app)/app/(with-nav)/settings/billing-section.tsx:9"}, "properties": {"repobilityId": "3c39b978958ada94", "scanner": "scanner-primary", "fingerprint": "32439f154f6dbb15", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a40740c3d70b1538", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/(app)/app/(with-nav)/settings/page.tsx:17"}, "properties": {"repobilityId": "308335352a875822", "scanner": "scanner-primary", "fingerprint": "a40740c3d70b1538", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d73b7f47351b6dee", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/(app)/app/(with-nav)/settings/account-danger-zone.tsx:24"}, "properties": {"repobilityId": "57f026ae5f283fc6", "scanner": "scanner-primary", "fingerprint": "d73b7f47351b6dee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a7495335c78294fe", "level": "none", "message": {"text": "Commented-code block (12 lines) in src/app/(app)/app/(with-nav)/settings/account-actions.ts:14"}, "properties": {"repobilityId": "5fced4f727964f39", "scanner": "scanner-primary", "fingerprint": "a7495335c78294fe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-faa8becf9b929a70", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(app)/app/(with-nav)/settings/billing-actions.ts:21"}, "properties": {"repobilityId": "6ef7b9a88e9de187", "scanner": "scanner-primary", "fingerprint": "faa8becf9b929a70", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a78364147ca62091", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(app)/app/(with-nav)/audits/[id]/checks-by-severity.tsx:14"}, "properties": {"repobilityId": "26e3b7d5daab569a", "scanner": "scanner-primary", "fingerprint": "a78364147ca62091", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3a6888c2f8e7fc63", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(app)/app/(with-nav)/audits/[id]/page.tsx:45"}, "properties": {"repobilityId": "8b2680716f9027f6", "scanner": "scanner-primary", "fingerprint": "3a6888c2f8e7fc63", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0a272cfe23fbb298", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(app)/app/(with-nav)/dashboard/dashboard-tracker.tsx:6"}, "properties": {"repobilityId": "33fe3a6b24a8a54c", "scanner": "scanner-primary", "fingerprint": "0a272cfe23fbb298", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-98eb863a9fecbe0e", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/(app)/app/(with-nav)/dashboard/trend-section.tsx:15"}, "properties": {"repobilityId": "3fb7c7ea6da6693c", "scanner": "scanner-primary", "fingerprint": "98eb863a9fecbe0e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c3c67ca3fa7e006", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(app)/app/(with-nav)/citations/citations-view.tsx:14"}, "properties": {"repobilityId": "18f5917c8f287523", "scanner": "scanner-primary", "fingerprint": "1c3c67ca3fa7e006", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6ec72d2169bb805b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(app)/app/(with-nav)/citations/actions.ts:19"}, "properties": {"repobilityId": "e6010617e13ac285", "scanner": "scanner-primary", "fingerprint": "6ec72d2169bb805b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a34b6fceea94ac93", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(app)/app/(with-nav)/citations/page.tsx:15"}, "properties": {"repobilityId": "9a6e2a94b43641f6", "scanner": "scanner-primary", "fingerprint": "a34b6fceea94ac93", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a7f4842cbf7f07c2", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/(app)/app/(with-nav)/citations/ranking-tab.tsx:17"}, "properties": {"repobilityId": "b366f0a5e1b95862", "scanner": "scanner-primary", "fingerprint": "a7f4842cbf7f07c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-00b1ccaea20ee090", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(app)/app/(with-nav)/citations/sources-table.tsx:15"}, "properties": {"repobilityId": "a7b2a00ad8bfc8b8", "scanner": "scanner-primary", "fingerprint": "00b1ccaea20ee090", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d99d892da2bafeb", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/(app)/app/(with-nav)/citations/sources/[id]/page.tsx:17"}, "properties": {"repobilityId": "f1920a6386759e7e", "scanner": "scanner-primary", "fingerprint": "5d99d892da2bafeb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0f5419742e0e85b4", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/(app)/app/(with-nav)/conseils/conseils-view.tsx:23"}, "properties": {"repobilityId": "c64934bc6fb5dbec", "scanner": "scanner-primary", "fingerprint": "0f5419742e0e85b4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-50098b5e3b2fa022", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(app)/app/(with-nav)/prompts/prompt-form-dialog.tsx:21"}, "properties": {"repobilityId": "e55fea99f77526cf", "scanner": "scanner-primary", "fingerprint": "50098b5e3b2fa022", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-de251b0acd7bc482", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/app/(marketing)/page.tsx:28"}, "properties": {"repobilityId": "bf406e94b2256324", "scanner": "scanner-primary", "fingerprint": "de251b0acd7bc482", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8ff55f6b48824c6f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(marketing)/outils/location-actions.ts:8"}, "properties": {"repobilityId": "aa375e0ce81f9a12", "scanner": "scanner-primary", "fingerprint": "8ff55f6b48824c6f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3a3288a18aef927a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(marketing)/outils/audit-technique/actions.ts:13"}, "properties": {"repobilityId": "4a9428c5f54a522a", "scanner": "scanner-primary", "fingerprint": "3a3288a18aef927a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a22a2890ed77066a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(marketing)/outils/comparateurs/comparator-results.tsx:11"}, "properties": {"repobilityId": "c9e92a88d631836a", "scanner": "scanner-primary", "fingerprint": "a22a2890ed77066a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d5cc8e7b2a66a6f", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/(marketing)/outils/comparateurs/page.tsx:19"}, "properties": {"repobilityId": "29314e66ff4645e7", "scanner": "scanner-primary", "fingerprint": "4d5cc8e7b2a66a6f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d8050711d700155", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(marketing)/outils/test-visibilite-ia/actions.ts:20"}, "properties": {"repobilityId": "4f7762559ce997a3", "scanner": "scanner-primary", "fingerprint": "0d8050711d700155", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c525dcce3d59daea", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/(marketing)/outils/test-visibilite-ia/express-scan-results.tsx:12"}, "properties": {"repobilityId": "9b9ecaeb61fd4a46", "scanner": "scanner-primary", "fingerprint": "c525dcce3d59daea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-40aeb85b6530d488", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(marketing)/_sections/marketing-header.tsx:8"}, "properties": {"repobilityId": "4fde107fd690af0c", "scanner": "scanner-primary", "fingerprint": "40aeb85b6530d488", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-20e3c5a882e09335", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(marketing)/_sections/proof-strip.tsx:4"}, "properties": {"repobilityId": "d3b7e7e6c5164e1e", "scanner": "scanner-primary", "fingerprint": "20e3c5a882e09335", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-db8568053cb2a30a", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/(marketing)/_sections/audit-teaser.tsx:5"}, "properties": {"repobilityId": "a4ed5a53d637226d", "scanner": "scanner-primary", "fingerprint": "db8568053cb2a30a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b34e380e09f961db", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(marketing)/_sections/how-it-works.tsx:5"}, "properties": {"repobilityId": "552561d9f4e5c6b5", "scanner": "scanner-primary", "fingerprint": "b34e380e09f961db", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dd9c76947cfe1a41", "level": "none", "message": {"text": "Commented-code block (12 lines) in src/app/(marketing)/_sections/product-tour.tsx:7"}, "properties": {"repobilityId": "49407bc09e81bf55", "scanner": "scanner-primary", "fingerprint": "dd9c76947cfe1a41", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e5bb5353000463c0", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(marketing)/_sections/hero-data-showcase.tsx:11"}, "properties": {"repobilityId": "cd6e78aad119f102", "scanner": "scanner-primary", "fingerprint": "e5bb5353000463c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-044a593fdb2d5515", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(marketing)/_sections/home-demo-preview-bars.tsx:8"}, "properties": {"repobilityId": "c847645f926ab62d", "scanner": "scanner-primary", "fingerprint": "044a593fdb2d5515", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b56b21e81e1e2c34", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/(marketing)/_sections/tes-concurrents-pas-toi.tsx:18"}, "properties": {"repobilityId": "93568c7490ec7e2e", "scanner": "scanner-primary", "fingerprint": "b56b21e81e1e2c34", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9e4c9d4cfbeecee1", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/app/(marketing)/_sections/hero.tsx:6"}, "properties": {"repobilityId": "669a22a267f85ce5", "scanner": "scanner-primary", "fingerprint": "9e4c9d4cfbeecee1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-80052b3f30cfceef", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/(marketing)/_sections/sans-avec.tsx:5"}, "properties": {"repobilityId": "63887a0f41680e38", "scanner": "scanner-primary", "fingerprint": "80052b3f30cfceef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bf3898767a7e1ad9", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/(marketing)/_sections/home-demo-preview.tsx:10"}, "properties": {"repobilityId": "0be9b621e5e08162", "scanner": "scanner-primary", "fingerprint": "bf3898767a7e1ad9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bab14abf41313682", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(marketing)/_sections/pour-qui.tsx:4"}, "properties": {"repobilityId": "a5af338de9641546", "scanner": "scanner-primary", "fingerprint": "bab14abf41313682", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6bc5fd98832e08ca", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(marketing)/_sections/mockups/mockup-report.tsx:6"}, "properties": {"repobilityId": "951b7f9595e3a60b", "scanner": "scanner-primary", "fingerprint": "6bc5fd98832e08ca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-11d1d5fa57a85715", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(marketing)/_sections/pricing/pricing-plans.tsx:9"}, "properties": {"repobilityId": "2b017674798aed83", "scanner": "scanner-primary", "fingerprint": "11d1d5fa57a85715", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ee6e1b51c69923b9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/(blog)/blog/[slug]/page.tsx:15"}, "properties": {"repobilityId": "fca19f88b9233eb1", "scanner": "scanner-primary", "fingerprint": "ee6e1b51c69923b9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c59eae407b55d39c", "level": "none", "message": {"text": "Commented-code block (15 lines) in src/lib/site-profile.ts:10"}, "properties": {"repobilityId": "8b3ff7e7f7aef931", "scanner": "scanner-primary", "fingerprint": "c59eae407b55d39c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-87e99a5c4620cd14", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/auth.ts:13"}, "properties": {"repobilityId": "0b29e374d3e6d659", "scanner": "scanner-primary", "fingerprint": "87e99a5c4620cd14", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c38a8d8c2aa42259", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/email.ts:7"}, "properties": {"repobilityId": "51d16e50a0767f72", "scanner": "scanner-primary", "fingerprint": "c38a8d8c2aa42259", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a516e8a9abb12a4b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/email.ts:277"}, "properties": {"repobilityId": "f6c3f0e46d0ad61e", "scanner": "scanner-primary", "fingerprint": "a516e8a9abb12a4b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-53ec1403a997581e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/geo-advice.ts:8"}, "properties": {"repobilityId": "7260c6876602a792", "scanner": "scanner-primary", "fingerprint": "53ec1403a997581e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0ddf604c10fb2405", "level": "none", "message": {"text": "Commented-code block (12 lines) in src/lib/env.ts:5"}, "properties": {"repobilityId": "cb3813317ca09224", "scanner": "scanner-primary", "fingerprint": "0ddf604c10fb2405", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6560bdd7db40c7c9", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/auth-client.ts:6"}, "properties": {"repobilityId": "4354c4767caec029", "scanner": "scanner-primary", "fingerprint": "6560bdd7db40c7c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-22b2e4e908bf9069", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/lib/location-detect.ts:3"}, "properties": {"repobilityId": "a59acb9df1cdc07c", "scanner": "scanner-primary", "fingerprint": "22b2e4e908bf9069", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ecb4d474755f1e1e", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/lib/blog/registry.test.ts:5"}, "properties": {"repobilityId": "868164e19e6cb03e", "scanner": "scanner-primary", "fingerprint": "ecb4d474755f1e1e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c63eedf1a9f74f3e", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/dashboard/queries.ts:161"}, "properties": {"repobilityId": "693c13b57ec47327", "scanner": "scanner-primary", "fingerprint": "c63eedf1a9f74f3e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb819624afe5d661", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/brands/actions.ts:18"}, "properties": {"repobilityId": "95478ede0362268a", "scanner": "scanner-primary", "fingerprint": "eb819624afe5d661", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4bdf84d412a88ccb", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/lib/sources/classify.ts:8"}, "properties": {"repobilityId": "27a4eefca001fe1c", "scanner": "scanner-primary", "fingerprint": "4bdf84d412a88ccb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-350063e3e6b1cb3c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/audit/recommendations.ts:1"}, "properties": {"repobilityId": "0b07da87c22b4f2e", "scanner": "scanner-primary", "fingerprint": "350063e3e6b1cb3c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-484ebc3addbeaecf", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/audit/checks/ai-bots.ts:3"}, "properties": {"repobilityId": "73e254bd4e5f4830", "scanner": "scanner-primary", "fingerprint": "484ebc3addbeaecf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb5726cc79659b0a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/admin/llm-credits.ts:15"}, "properties": {"repobilityId": "91d637fd41b54050", "scanner": "scanner-primary", "fingerprint": "eb5726cc79659b0a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9382bf0d2be1de0b", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/runs/batches.test.ts:4"}, "properties": {"repobilityId": "e0fd7952e776f318", "scanner": "scanner-primary", "fingerprint": "9382bf0d2be1de0b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-247b248879e25052", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/hardcap/quotas.ts:3"}, "properties": {"repobilityId": "2875f2b1e441863e", "scanner": "scanner-primary", "fingerprint": "247b248879e25052", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3a09d099031a7296", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/express-scan/run.ts:11"}, "properties": {"repobilityId": "3382922456611d70", "scanner": "scanner-primary", "fingerprint": "3a09d099031a7296", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-87c76041e85eba7e", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/express-scan/extract.ts:3"}, "properties": {"repobilityId": "a39121b60b9c8ecf", "scanner": "scanner-primary", "fingerprint": "87c76041e85eba7e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a1eae14950ce1442", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/csv/index.ts:4"}, "properties": {"repobilityId": "623fa06bc48978c8", "scanner": "scanner-primary", "fingerprint": "a1eae14950ce1442", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4fe322d724150655", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/metrics/part-de-voix.ts:12"}, "properties": {"repobilityId": "4fba27a7c0ab3e9e", "scanner": "scanner-primary", "fingerprint": "4fe322d724150655", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8642c35322071f91", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/stripe/plan-catalog.ts:1"}, "properties": {"repobilityId": "5884a4367802335c", "scanner": "scanner-primary", "fingerprint": "8642c35322071f91", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec388b677692844c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/stripe/webhook-handlers.ts:16"}, "properties": {"repobilityId": "88ec41a503b44422", "scanner": "scanner-primary", "fingerprint": "ec388b677692844c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a4b243d6702dd6d", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/lib/comparators/enrich.ts:4"}, "properties": {"repobilityId": "d8f351989f3c927c", "scanner": "scanner-primary", "fingerprint": "2a4b243d6702dd6d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8e3dc93243d7b95e", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/lib/comparators/scan.ts:16"}, "properties": {"repobilityId": "a24ed6f16079b34f", "scanner": "scanner-primary", "fingerprint": "8e3dc93243d7b95e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4176161e61c91ca4", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/comparators/sectors.ts:1"}, "properties": {"repobilityId": "f4db3085b612c9d3", "scanner": "scanner-primary", "fingerprint": "4176161e61c91ca4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b58522b9eed626c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/plans/quotas.ts:6"}, "properties": {"repobilityId": "94f66d1752019c19", "scanner": "scanner-primary", "fingerprint": "6b58522b9eed626c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c486c311cc962344", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/citation/types.ts:1"}, "properties": {"repobilityId": "d9d52721e98b6f67", "scanner": "scanner-primary", "fingerprint": "c486c311cc962344", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8123eefffbd194cb", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/scheduler/cadence-eligibility.ts:7"}, "properties": {"repobilityId": "3c3d3d10f7f69f7e", "scanner": "scanner-primary", "fingerprint": "8123eefffbd194cb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb172c6918079dc2", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/scheduler/schedule-runs.ts:11"}, "properties": {"repobilityId": "2777b32d6b1b22bb", "scanner": "scanner-primary", "fingerprint": "eb172c6918079dc2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-75e2087512c833e9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/feedback/actions.ts:10"}, "properties": {"repobilityId": "190631bd3a28a9e8", "scanner": "scanner-primary", "fingerprint": "75e2087512c833e9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cf4ad64c7175d508", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/llm/mistral.ts:14"}, "properties": {"repobilityId": "c72873531b30412e", "scanner": "scanner-primary", "fingerprint": "cf4ad64c7175d508", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9da73d9dd722604d", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/llm/perplexity.ts:10"}, "properties": {"repobilityId": "588cd3f21be82efe", "scanner": "scanner-primary", "fingerprint": "9da73d9dd722604d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-64299fa414164482", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/llm/perplexity.test.ts:72"}, "properties": {"repobilityId": "ec755a083a622ba8", "scanner": "scanner-primary", "fingerprint": "64299fa414164482", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e0992393bb72680b", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/llm/openai.ts:15"}, "properties": {"repobilityId": "b4f1625a8e3c5ef5", "scanner": "scanner-primary", "fingerprint": "e0992393bb72680b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e562bbf17597ffab", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/lib/llm/prompt-generator.ts:9"}, "properties": {"repobilityId": "9d95c202f638a9bc", "scanner": "scanner-primary", "fingerprint": "e562bbf17597ffab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-324737ff32148d8e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/llm/pricing.ts:47"}, "properties": {"repobilityId": "677e5b20f151fce5", "scanner": "scanner-primary", "fingerprint": "324737ff32148d8e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-523e7b920bf402a1", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/llm/anthropic.test.ts:55"}, "properties": {"repobilityId": "0f4be14dc236b116", "scanner": "scanner-primary", "fingerprint": "523e7b920bf402a1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb38864f226fb72d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/llm/openai.test.ts:55"}, "properties": {"repobilityId": "4a22a22b6a247fa7", "scanner": "scanner-primary", "fingerprint": "fb38864f226fb72d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0bb679766e67108e", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/lib/llm/anthropic.ts:21"}, "properties": {"repobilityId": "f242b4257d62cbda", "scanner": "scanner-primary", "fingerprint": "0bb679766e67108e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-58e42cb7e5563cb3", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/workers/send-weekly-email.ts:31"}, "properties": {"repobilityId": "ca951f07bdfa3bc4", "scanner": "scanner-primary", "fingerprint": "58e42cb7e5563cb3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-67315bdf4663e260", "level": "none", "message": {"text": "Commented-code block (12 lines) in src/workers/score-response.ts:16"}, "properties": {"repobilityId": "0915cb28060fa566", "scanner": "scanner-primary", "fingerprint": "67315bdf4663e260", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-674bf0f5f65d07d1", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/workers/execute-prompt.ts:49"}, "properties": {"repobilityId": "b92e67094f7e87e2", "scanner": "scanner-primary", "fingerprint": "674bf0f5f65d07d1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b9e62b5e0b310c17", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/workers/audit-workspace-url.ts:25"}, "properties": {"repobilityId": "6e42b58a05fd043a", "scanner": "scanner-primary", "fingerprint": "b9e62b5e0b310c17", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-613662bae84bdd31", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/db/schema.ts:18"}, "properties": {"repobilityId": "d632a94e25f405e8", "scanner": "scanner-primary", "fingerprint": "613662bae84bdd31", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-af022f937dd5b7fd", "level": "note", "message": {"text": "9 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "5597384795dea7a4", "scanner": "scanner-primary", "fingerprint": "af022f937dd5b7fd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}