{"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-76d7f24a21cacc71", "name": "Possibly dead Python function: build_x_version", "shortDescription": {"text": "Possibly dead Python function: build_x_version"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-17ae34e70dac7300", "name": "Possibly dead Python function: build_reddit_version", "shortDescription": {"text": "Possibly dead Python function: build_reddit_version"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e862b0b9d5ee240f", "name": "Possibly dead Python function: build_chinese_version", "shortDescription": {"text": "Possibly dead Python function: build_chinese_version"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-be4fe44e513bcf72", "name": "Stray `console.log` in TS/JS \u2014 check_schema2.js:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check_schema2.js:18"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-311f6dcabba4c266", "name": "Stray `console.log` in TS/JS \u2014 init-db.js:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 init-db.js:20"}, "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-50edd7b089a3ed19", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/layout.tsx:98", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/layout.tsx:98"}, "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-99a490c014f2bbb1", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/blog/[slug]/page.tsx:76", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/blog/[slug]/page.tsx:76"}, "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-299e6c029239167e", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/updates/page.tsx:104", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/updates/page.tsx:104"}, "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-b4320ba25f2436ad", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/platform/page.tsx:102", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/platform/page.tsx:102"}, "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-312997ffdc78604c", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/platform/[name]/page.tsx:354", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/platform/[name]/page.tsx:354"}, "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-a1e78072899322b8", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/gpu/[card]/page.tsx:300", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/gpu/[card]/page.tsx:300"}, "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-6ee6ad0ca48c7de1", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/page.tsx:236", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/page.tsx:236"}, "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-80e472f76b22dced", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/image/page.tsx:121", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/image/page.tsx:121"}, "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-bd73b35db59daa15", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/image/[model]/page.tsx:223", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/image/[model]/page.tsx:223"}, "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-6048654169c91372", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/audio/page.tsx:124", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/audio/page.tsx:124"}, "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-aca2eae46f054a01", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/audio/[model]/page.tsx:210", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/audio/[model]/page.tsx:210"}, "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-e07b1d79351f139c", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/calculator/page.tsx:65", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/calculator/page.tsx:65"}, "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-7da2be16ecd249eb", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/[model]/page.tsx:239", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/[model]/page.tsx:239"}, "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-e6746ae166fcecf7", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/compare/[slug]/page.tsx:189", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/compare/[slug]/page.tsx:189"}, "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-5dc8cba2f8ca2623", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/video/page.tsx:117", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/video/page.tsx:117"}, "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-d5b4de8d8d257539", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/video/[model]/page.tsx:204", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/video/[model]/page.tsx:204"}, "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-4a26e8f50bfddc7c", "name": "Stray `console.log` in TS/JS \u2014 lib/db.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/db.ts:15"}, "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-0530a6e5820e2b50", "name": "Possible secret in init-db.js", "shortDescription": {"text": "Possible secret in init-db.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-a3b69e1e682af43b", "name": "Insecure pattern 'tls_verify_false' in scrapers/api_checkers/siliconflow_checker.py:73", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in scrapers/api_checkers/siliconflow_checker.py:73"}, "fullDescription": {"text": "Found a known-risky pattern (tls_verify_false). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f718c66c96fc8ace", "name": "Insecure pattern 'tls_verify_false' in scrapers/api_checkers/fireworks_checker.py:130", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in scrapers/api_checkers/fireworks_checker.py:130"}, "fullDescription": {"text": "Found a known-risky pattern (tls_verify_false). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1f6f32a8f1d16c8e", "name": "Insecure pattern 'tls_verify_false' in scrapers/api_checkers/anthropic_checker.py:67", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in scrapers/api_checkers/anthropic_checker.py:67"}, "fullDescription": {"text": "Found a known-risky pattern (tls_verify_false). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4ba00dac056b8a62", "name": "Insecure pattern 'tls_verify_false' in scrapers/api_checkers/xai_checker.py:62", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in scrapers/api_checkers/xai_checker.py:62"}, "fullDescription": {"text": "Found a known-risky pattern (tls_verify_false). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-563b9f7e7f0933cc", "name": "Insecure pattern 'tls_verify_false' in scrapers/api_checkers/mistral_checker.py:67", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in scrapers/api_checkers/mistral_checker.py:67"}, "fullDescription": {"text": "Found a known-risky pattern (tls_verify_false). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c8300008f60644e8", "name": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/layout.tsx:98", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/layout.tsx:98"}, "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-252cd0f6d8156b85", "name": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/blog/[slug]/page.tsx:76", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/blog/[slug]/page.tsx:76"}, "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-c34b5c4b496082b6", "name": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/updates/page.tsx:104", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/updates/page.tsx:104"}, "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-cbb37b24e4f3754a", "name": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/platform/page.tsx:102", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/platform/page.tsx:102"}, "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-bd59b479a9f22a3e", "name": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/platform/[name]/page.tsx:354", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/platform/[name]/page.tsx:354"}, "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-2f5dd498feb433f9", "name": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/gpu/[card]/page.tsx:300", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/gpu/[card]/page.tsx:300"}, "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-1e0a449221d45474", "name": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/page.tsx:236", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/page.tsx:236"}, "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-721cec2bef98048d", "name": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/image/page.tsx:121", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/image/page.tsx:121"}, "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-2ef471cd9b8e9c68", "name": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/image/[model]/page.tsx:223", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/image/[model]/page.tsx:223"}, "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-f2e4f49abea6e540", "name": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/audio/page.tsx:124", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/audio/page.tsx:124"}, "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-7c78ca7013134823", "name": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/audio/[model]/page.tsx:210", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/audio/[model]/page.tsx:210"}, "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-628851311d77724f", "name": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/calculator/page.tsx:65", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/calculator/page.tsx:65"}, "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-bf378845f4887728", "name": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/[model]/page.tsx:239", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/[model]/page.tsx:239"}, "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-7b7f3241556f25b6", "name": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/compare/[slug]/page.tsx:189", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/compare/[slug]/page.tsx:189"}, "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-b55c3aee04cd273b", "name": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/video/page.tsx:117", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/video/page.tsx:117"}, "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-374f688eadb05851", "name": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/video/[model]/page.tsx:204", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/video/[model]/page.tsx:204"}, "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-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-74f7b5bd85a4c555", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-403df69cb1ef18ec", "name": "Very large file: scrapers/canonical.py (1294 lines)", "shortDescription": {"text": "Very large file: scrapers/canonical.py (1294 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "1 test file(s) for 187 source file(s) (ratio 0.01). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 584 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-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-6d9ae0c5a4eefb63", "name": "Legacy-named symbol `is_deprecated` in scrapers/delete_relay_orphans.py:27", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/delete_relay_orphans.py:27"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-214940b8f887a878", "name": "Commented-code block (5 lines) in scrapers/canonical.py:1260", "shortDescription": {"text": "Commented-code block (5 lines) in scrapers/canonical.py:1260"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-147fd613cfc22797", "name": "Legacy-named symbol `is_deprecated` in scrapers/check_no_canonical.py:21", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/check_no_canonical.py:21"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-07ea6c2b08311351", "name": "Network/subprocess call without timeout or try/except \u2014 scrapers/platforms/computeunion_api.py:25", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scrapers/platforms/computeunion_api.py:25"}, "fullDescription": {"text": "`requests.get(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0c8c3a1f77e7a371", "name": "Commented-code block (6 lines) in scrapers/platforms/vastai.py:147", "shortDescription": {"text": "Commented-code block (6 lines) in scrapers/platforms/vastai.py:147"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f4a46f6bff19dbd5", "name": "Legacy-named symbol `is_deprecated` in scrapers/utils/data_quality_check.py:31", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/utils/data_quality_check.py:31"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c0f5ee8d2987c998", "name": "Legacy-named symbol `is_deprecated` in scrapers/utils/new_models_report.py:40", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/utils/new_models_report.py:40"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5ddcaf895f63dd81", "name": "Legacy-named symbol `is_deprecated` in scrapers/utils/canonicalize_models.py:40", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/utils/canonicalize_models.py:40"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3a7f9c7e25c3ddf4", "name": "Network/subprocess call without timeout or try/except \u2014 scrapers/utils/price_verifier.py:58", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scrapers/utils/price_verifier.py:58"}, "fullDescription": {"text": "`requests.post(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c3ffb6b95566b0e0", "name": "Legacy-named symbol `is_deprecated` in scrapers/utils/snapshot_prices.py:46", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/utils/snapshot_prices.py:46"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0a1418fd0ebc3fc1", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/dashscope_checker.py:79", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/dashscope_checker.py:79"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f11dc09c0d3afbc9", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/voyageai_checker.py:128", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/voyageai_checker.py:128"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-119c86b607a341aa", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/cerebras_checker.py:116", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/cerebras_checker.py:116"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-61c63de318120b06", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/luma_checker.py:33", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/luma_checker.py:33"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-30d851578420d3bf", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/upstage_checker.py:38", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/upstage_checker.py:38"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e891cd29c2a3460a", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/ai302_checker.py:167", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/ai302_checker.py:167"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9d947106641dc88e", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/cartesia_checker.py:40", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/cartesia_checker.py:40"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d3003017d812be48", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/huggingface_checker.py:50", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/huggingface_checker.py:50"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-493753ecadeed747", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/elevenlabs_checker.py:41", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/elevenlabs_checker.py:41"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2960269e95b2819d", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/siliconflow_checker.py:180", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/siliconflow_checker.py:180"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ad5e9d4c2982dcec", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/qianfan_checker.py:45", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/qianfan_checker.py:45"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-999380a9dc6eaca3", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/openrouter_checker.py:123", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/openrouter_checker.py:123"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-748c29ffc484fbb3", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/deepgram_checker.py:51", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/deepgram_checker.py:51"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1f896163a943d516", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/novita_checker.py:116", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/novita_checker.py:116"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e31d09d59aa5753a", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/pika_checker.py:31", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/pika_checker.py:31"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0390905d1d6212f7", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/ai302_multimodal_checker.py:342", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/ai302_multimodal_checker.py:342"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-baf867a8c48801ef", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/deepseek_checker.py:15", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/deepseek_checker.py:15"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3cf7c82ff1c1f65d", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/hyperbolic_checker.py:116", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/hyperbolic_checker.py:116"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6a994549c49d1717", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/fireworks_checker.py:267", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/fireworks_checker.py:267"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-deaa95660c37c509", "name": "Legacy-named symbol `_parse_newapi_v2` in scrapers/api_checkers/aihubmix_checker.py:30", "shortDescription": {"text": "Legacy-named symbol `_parse_newapi_v2` in scrapers/api_checkers/aihubmix_checker.py:30"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1fabecd0a0e21cf6", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/sambanova_checker.py:107", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/sambanova_checker.py:107"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5d23008a0323f93f", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/azure_openai_checker.py:67", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/azure_openai_checker.py:67"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1c222e53a6ad368f", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/nebius_checker.py:67", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/nebius_checker.py:67"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cff0c9ecc7ffc59b", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/google_checker.py:165", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/google_checker.py:165"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fc8ab34c69ad1d19", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/openai_checker.py:19", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/openai_checker.py:19"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-08d7e1a8a0a21fc8", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/deepinfra_checker.py:101", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/deepinfra_checker.py:101"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1c201778cdce2392", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/cohere_checker.py:138", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/cohere_checker.py:138"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fa3d22bc6427827c", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/anthropic_checker.py:9", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/anthropic_checker.py:9"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-13a48b4dc0e1b752", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/groq_checker.py:202", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/groq_checker.py:202"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9f2a33f249979b5b", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/runway_checker.py:31", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/runway_checker.py:31"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4ecaff584e55c437", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/xai_checker.py:157", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/xai_checker.py:157"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9c429a13c367c030", "name": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/mistral_checker.py:169", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/mistral_checker.py:169"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-64d4d953f6c9178a", "name": "Legacy-named symbol `is_deprecated` in scripts/fix_remaining.py:18", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scripts/fix_remaining.py:18"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-84b29fc2bfa9b067", "name": "Legacy-named symbol `is_deprecated` in scripts/clean_image_data.py:144", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scripts/clean_image_data.py:144"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-41d346cbc3dc2542", "name": "Legacy-named symbol `is_deprecated` in scripts/check_llm_list.py:17", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scripts/check_llm_list.py:17"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-81f16238e0f5fb2a", "name": "Legacy-named symbol `is_deprecated` in scripts/seed_official_llm.py:113", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scripts/seed_official_llm.py:113"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-149cf334a16a9aca", "name": "Legacy-named symbol `is_deprecated` in scripts/fix_canonical_names.py:66", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scripts/fix_canonical_names.py:66"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-58ef7d870cdb875b", "name": "Legacy-named symbol `is_deprecated` in scripts/db_audit.py:27", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in scripts/db_audit.py:27"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9b07cb5c52d0bea4", "name": "Legacy-named symbol `total_deprecated` in scripts/clean_llm_data.py:74", "shortDescription": {"text": "Legacy-named symbol `total_deprecated` in scripts/clean_llm_data.py:74"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-860b4ca0061b31ba", "name": "`fetch()` without try/.catch or AbortSignal \u2014 components/CalcWidget.tsx:50", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/CalcWidget.tsx:50"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ec67fb1e9bab6aa4", "name": "Legacy-named symbol `is_deprecated` in app/sitemap.ts:43", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in app/sitemap.ts:43"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f5d7f79ee8b00d51", "name": "Legacy-named symbol `is_deprecated` in app/api/gpu-stats/route.ts:18", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in app/api/gpu-stats/route.ts:18"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-349ac98352925045", "name": "Legacy-named symbol `is_deprecated` in app/api/calculator/route.ts:20", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in app/api/calculator/route.ts:20"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa311900370a45d8", "name": "Legacy-named symbol `is_deprecated` in app/api/api-pricing-summary/route.ts:29", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in app/api/api-pricing-summary/route.ts:29"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c973ee5ef969bd8e", "name": "Legacy-named symbol `is_deprecated` in app/[locale]/platform/[name]/page.tsx:106", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in app/[locale]/platform/[name]/page.tsx:106"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-89c0a47394a438d4", "name": "Legacy-named symbol `is_deprecated` in lib/providerPage.ts:52", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in lib/providerPage.ts:52"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dedacacfa7686a56", "name": "Legacy-named symbol `is_deprecated` in lib/apiQueries.ts:132", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in lib/apiQueries.ts:132"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e40381fcbd93b75e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/deepseek.ts:16", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/deepseek.ts:16"}, "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-81a385faf504dc6a", "name": "Legacy-named symbol `is_deprecated` in lib/homeData.ts:179", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in lib/homeData.ts:179"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscrapers/platforms/scaleway.py:get_or_create_gpu_model, scrapers/platforms/gcore.py:get_or_create_gpu_model\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-76a2f6818267a9a8", "name": "Near-duplicate function bodies in 8 places", "shortDescription": {"text": "Near-duplicate function bodies in 8 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscrapers/platforms/tensordock.py:get_or_create_gpu_model, scrapers/platforms/vultr.py:get_or_create_gpu_model, scrapers/platforms/oblivus.py:get_or_create_gpu_model, scrapers/platforms/jarvis_labs.py:get_or_create_gpu_model\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscrapers/platforms/vultr.py:fetch_prices, scrapers/platforms/oblivus.py:fetch_prices, scrapers/platforms/replicate.py:fetch_prices, scrapers/platforms/jarvis_labs.py:fetch_prices\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-33a6b62e30ce7ab4", "name": "Near-duplicate function bodies in 6 places", "shortDescription": {"text": "Near-duplicate function bodies in 6 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscrapers/platforms/replicate.py:get_or_create_gpu_model, scrapers/platforms/crusoe.py:get_or_create_gpu_model, scrapers/platforms/modal_labs.py:get_or_create_gpu_model, scrapers/platforms/shadeform.py:get_or_create_gpu_model\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/23197"}, "properties": {"repository": "yego880-jpg/computeunion", "repoUrl": "https://github.com/yego880-jpg/computeunion", "branch": "main"}, "results": [{"ruleId": "scanner-76d7f24a21cacc71", "level": "note", "message": {"text": "Possibly dead Python function: build_x_version"}, "properties": {"repobilityId": "8e03c307df6bbbda", "scanner": "scanner-primary", "fingerprint": "76d7f24a21cacc71", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scrapers/telegram_push/daily_push.py:137"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-17ae34e70dac7300", "level": "note", "message": {"text": "Possibly dead Python function: build_reddit_version"}, "properties": {"repobilityId": "ca2eef52d3484756", "scanner": "scanner-primary", "fingerprint": "17ae34e70dac7300", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scrapers/telegram_push/daily_push.py:163"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e862b0b9d5ee240f", "level": "note", "message": {"text": "Possibly dead Python function: build_chinese_version"}, "properties": {"repobilityId": "5beeb0091ff0d355", "scanner": "scanner-primary", "fingerprint": "e862b0b9d5ee240f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scrapers/telegram_push/daily_push.py:214"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-be4fe44e513bcf72", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check_schema2.js:18"}, "properties": {"repobilityId": "9df307c2f6f9e3b5", "scanner": "scanner-primary", "fingerprint": "be4fe44e513bcf72", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-311f6dcabba4c266", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 init-db.js:20"}, "properties": {"repobilityId": "d8d0e6234e84b6a2", "scanner": "scanner-primary", "fingerprint": "311f6dcabba4c266", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-50edd7b089a3ed19", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/layout.tsx:98"}, "properties": {"repobilityId": "c4166e9f03dd0580", "scanner": "scanner-primary", "fingerprint": "50edd7b089a3ed19", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-99a490c014f2bbb1", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/blog/[slug]/page.tsx:76"}, "properties": {"repobilityId": "3499f532fbb85cc5", "scanner": "scanner-primary", "fingerprint": "99a490c014f2bbb1", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-299e6c029239167e", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/updates/page.tsx:104"}, "properties": {"repobilityId": "3f0972a66ec48b05", "scanner": "scanner-primary", "fingerprint": "299e6c029239167e", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-b4320ba25f2436ad", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/platform/page.tsx:102"}, "properties": {"repobilityId": "45038f61875d7d0d", "scanner": "scanner-primary", "fingerprint": "b4320ba25f2436ad", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-312997ffdc78604c", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/platform/[name]/page.tsx:354"}, "properties": {"repobilityId": "3314b9faccb8abcb", "scanner": "scanner-primary", "fingerprint": "312997ffdc78604c", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-a1e78072899322b8", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/gpu/[card]/page.tsx:300"}, "properties": {"repobilityId": "4e37b28f782e2861", "scanner": "scanner-primary", "fingerprint": "a1e78072899322b8", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-6ee6ad0ca48c7de1", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/page.tsx:236"}, "properties": {"repobilityId": "d1b5ef9f0a7ada91", "scanner": "scanner-primary", "fingerprint": "6ee6ad0ca48c7de1", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-80e472f76b22dced", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/image/page.tsx:121"}, "properties": {"repobilityId": "5eac7552d010da22", "scanner": "scanner-primary", "fingerprint": "80e472f76b22dced", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-bd73b35db59daa15", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/image/[model]/page.tsx:223"}, "properties": {"repobilityId": "19b580a861888d68", "scanner": "scanner-primary", "fingerprint": "bd73b35db59daa15", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-6048654169c91372", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/audio/page.tsx:124"}, "properties": {"repobilityId": "7a58e9407a6f410b", "scanner": "scanner-primary", "fingerprint": "6048654169c91372", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-aca2eae46f054a01", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/audio/[model]/page.tsx:210"}, "properties": {"repobilityId": "2e607ac32dad305e", "scanner": "scanner-primary", "fingerprint": "aca2eae46f054a01", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-e07b1d79351f139c", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/calculator/page.tsx:65"}, "properties": {"repobilityId": "2b60b5224951128e", "scanner": "scanner-primary", "fingerprint": "e07b1d79351f139c", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-7da2be16ecd249eb", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/[model]/page.tsx:239"}, "properties": {"repobilityId": "70d63bae52208721", "scanner": "scanner-primary", "fingerprint": "7da2be16ecd249eb", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-e6746ae166fcecf7", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/compare/[slug]/page.tsx:189"}, "properties": {"repobilityId": "a8b547ee1167b8c8", "scanner": "scanner-primary", "fingerprint": "e6746ae166fcecf7", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-5dc8cba2f8ca2623", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/video/page.tsx:117"}, "properties": {"repobilityId": "55f72d20bdc66924", "scanner": "scanner-primary", "fingerprint": "5dc8cba2f8ca2623", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-d5b4de8d8d257539", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[locale]/api-pricing/video/[model]/page.tsx:204"}, "properties": {"repobilityId": "2df97eb51f050f54", "scanner": "scanner-primary", "fingerprint": "d5b4de8d8d257539", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-4a26e8f50bfddc7c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/db.ts:15"}, "properties": {"repobilityId": "9eab514567f8f4c1", "scanner": "scanner-primary", "fingerprint": "4a26e8f50bfddc7c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0530a6e5820e2b50", "level": "error", "message": {"text": "Possible secret in init-db.js"}, "properties": {"repobilityId": "b75ce28699491a7e", "scanner": "scanner-primary", "fingerprint": "0530a6e5820e2b50", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "init-db.js"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-a3b69e1e682af43b", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in scrapers/api_checkers/siliconflow_checker.py:73"}, "properties": {"repobilityId": "37012aba8706dc42", "scanner": "scanner-primary", "fingerprint": "a3b69e1e682af43b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scrapers/api_checkers/siliconflow_checker.py"}, "region": {"startLine": 73}}}]}, {"ruleId": "scanner-f718c66c96fc8ace", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in scrapers/api_checkers/fireworks_checker.py:130"}, "properties": {"repobilityId": "fe2fa987e1cfe47d", "scanner": "scanner-primary", "fingerprint": "f718c66c96fc8ace", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scrapers/api_checkers/fireworks_checker.py"}, "region": {"startLine": 130}}}]}, {"ruleId": "scanner-1f6f32a8f1d16c8e", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in scrapers/api_checkers/anthropic_checker.py:67"}, "properties": {"repobilityId": "52dfdffec8a5bb15", "scanner": "scanner-primary", "fingerprint": "1f6f32a8f1d16c8e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scrapers/api_checkers/anthropic_checker.py"}, "region": {"startLine": 67}}}]}, {"ruleId": "scanner-4ba00dac056b8a62", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in scrapers/api_checkers/xai_checker.py:62"}, "properties": {"repobilityId": "b28c5135b5efa729", "scanner": "scanner-primary", "fingerprint": "4ba00dac056b8a62", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scrapers/api_checkers/xai_checker.py"}, "region": {"startLine": 62}}}]}, {"ruleId": "scanner-563b9f7e7f0933cc", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in scrapers/api_checkers/mistral_checker.py:67"}, "properties": {"repobilityId": "b8b9ee90a7fa0fbc", "scanner": "scanner-primary", "fingerprint": "563b9f7e7f0933cc", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scrapers/api_checkers/mistral_checker.py"}, "region": {"startLine": 67}}}]}, {"ruleId": "scanner-c8300008f60644e8", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/layout.tsx:98"}, "properties": {"repobilityId": "5e5cba0de7adc723", "scanner": "scanner-primary", "fingerprint": "c8300008f60644e8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[locale]/layout.tsx"}, "region": {"startLine": 98}}}]}, {"ruleId": "scanner-252cd0f6d8156b85", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/blog/[slug]/page.tsx:76"}, "properties": {"repobilityId": "7408eeb1d0acddea", "scanner": "scanner-primary", "fingerprint": "252cd0f6d8156b85", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[locale]/blog/[slug]/page.tsx"}, "region": {"startLine": 76}}}]}, {"ruleId": "scanner-c34b5c4b496082b6", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/updates/page.tsx:104"}, "properties": {"repobilityId": "09a18f701761e2f2", "scanner": "scanner-primary", "fingerprint": "c34b5c4b496082b6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[locale]/updates/page.tsx"}, "region": {"startLine": 104}}}]}, {"ruleId": "scanner-cbb37b24e4f3754a", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/platform/page.tsx:102"}, "properties": {"repobilityId": "709c3196e9378dc5", "scanner": "scanner-primary", "fingerprint": "cbb37b24e4f3754a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[locale]/platform/page.tsx"}, "region": {"startLine": 102}}}]}, {"ruleId": "scanner-bd59b479a9f22a3e", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/platform/[name]/page.tsx:354"}, "properties": {"repobilityId": "dd01e952e4fc7055", "scanner": "scanner-primary", "fingerprint": "bd59b479a9f22a3e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[locale]/platform/[name]/page.tsx"}, "region": {"startLine": 354}}}]}, {"ruleId": "scanner-2f5dd498feb433f9", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/gpu/[card]/page.tsx:300"}, "properties": {"repobilityId": "9e8097976fc1299c", "scanner": "scanner-primary", "fingerprint": "2f5dd498feb433f9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[locale]/gpu/[card]/page.tsx"}, "region": {"startLine": 300}}}]}, {"ruleId": "scanner-1e0a449221d45474", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/page.tsx:236"}, "properties": {"repobilityId": "d0be0b5ebbfd8ed4", "scanner": "scanner-primary", "fingerprint": "1e0a449221d45474", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[locale]/api-pricing/page.tsx"}, "region": {"startLine": 236}}}]}, {"ruleId": "scanner-721cec2bef98048d", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/image/page.tsx:121"}, "properties": {"repobilityId": "01d502635ca644f8", "scanner": "scanner-primary", "fingerprint": "721cec2bef98048d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[locale]/api-pricing/image/page.tsx"}, "region": {"startLine": 121}}}]}, {"ruleId": "scanner-2ef471cd9b8e9c68", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/image/[model]/page.tsx:223"}, "properties": {"repobilityId": "33f5a341ed16f14e", "scanner": "scanner-primary", "fingerprint": "2ef471cd9b8e9c68", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[locale]/api-pricing/image/[model]/page.tsx"}, "region": {"startLine": 223}}}]}, {"ruleId": "scanner-f2e4f49abea6e540", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/audio/page.tsx:124"}, "properties": {"repobilityId": "e0c7b2165db247c2", "scanner": "scanner-primary", "fingerprint": "f2e4f49abea6e540", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[locale]/api-pricing/audio/page.tsx"}, "region": {"startLine": 124}}}]}, {"ruleId": "scanner-7c78ca7013134823", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/audio/[model]/page.tsx:210"}, "properties": {"repobilityId": "663869e7cf76dd1a", "scanner": "scanner-primary", "fingerprint": "7c78ca7013134823", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[locale]/api-pricing/audio/[model]/page.tsx"}, "region": {"startLine": 210}}}]}, {"ruleId": "scanner-628851311d77724f", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/calculator/page.tsx:65"}, "properties": {"repobilityId": "0089c8a210bdf733", "scanner": "scanner-primary", "fingerprint": "628851311d77724f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[locale]/api-pricing/calculator/page.tsx"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-bf378845f4887728", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/[model]/page.tsx:239"}, "properties": {"repobilityId": "3b91fb93e02d7b84", "scanner": "scanner-primary", "fingerprint": "bf378845f4887728", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[locale]/api-pricing/[model]/page.tsx"}, "region": {"startLine": 239}}}]}, {"ruleId": "scanner-7b7f3241556f25b6", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/compare/[slug]/page.tsx:189"}, "properties": {"repobilityId": "6eb4f493bf777534", "scanner": "scanner-primary", "fingerprint": "7b7f3241556f25b6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[locale]/api-pricing/compare/[slug]/page.tsx"}, "region": {"startLine": 189}}}]}, {"ruleId": "scanner-b55c3aee04cd273b", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/video/page.tsx:117"}, "properties": {"repobilityId": "a47cc48d2b0178f7", "scanner": "scanner-primary", "fingerprint": "b55c3aee04cd273b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[locale]/api-pricing/video/page.tsx"}, "region": {"startLine": 117}}}]}, {"ruleId": "scanner-374f688eadb05851", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[locale]/api-pricing/video/[model]/page.tsx:204"}, "properties": {"repobilityId": "e6a8df77ad3ffea0", "scanner": "scanner-primary", "fingerprint": "374f688eadb05851", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[locale]/api-pricing/video/[model]/page.tsx"}, "region": {"startLine": 204}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-74f7b5bd85a4c555", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "6628f1195054bbec", "scanner": "scanner-primary", "fingerprint": "74f7b5bd85a4c555", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/price-check.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-403df69cb1ef18ec", "level": "note", "message": {"text": "Very large file: scrapers/canonical.py (1294 lines)"}, "properties": {"repobilityId": "eda1725db02d6d71", "scanner": "scanner-primary", "fingerprint": "403df69cb1ef18ec", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "69d8d680f15aaec7", "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": "ab79ecb8bf341c22", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "1bbb0b951ca48367", "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": "6c8b0f73844ce04b", "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": "0b8ea41fbaafcf9e", "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": "bac458a7695c8660", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-6d9ae0c5a4eefb63", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/delete_relay_orphans.py:27"}, "properties": {"repobilityId": "d29a0dfe91bfa7a1", "scanner": "scanner-primary", "fingerprint": "6d9ae0c5a4eefb63", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-214940b8f887a878", "level": "none", "message": {"text": "Commented-code block (5 lines) in scrapers/canonical.py:1260"}, "properties": {"repobilityId": "a5993cb6bb66bc19", "scanner": "scanner-primary", "fingerprint": "214940b8f887a878", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-147fd613cfc22797", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/check_no_canonical.py:21"}, "properties": {"repobilityId": "1ddfb4bf525e8e15", "scanner": "scanner-primary", "fingerprint": "147fd613cfc22797", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-07ea6c2b08311351", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scrapers/platforms/computeunion_api.py:25"}, "properties": {"repobilityId": "4da4733bc91a5884", "scanner": "scanner-primary", "fingerprint": "07ea6c2b08311351", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0c8c3a1f77e7a371", "level": "none", "message": {"text": "Commented-code block (6 lines) in scrapers/platforms/vastai.py:147"}, "properties": {"repobilityId": "985e82cd4585c900", "scanner": "scanner-primary", "fingerprint": "0c8c3a1f77e7a371", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f4a46f6bff19dbd5", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/utils/data_quality_check.py:31"}, "properties": {"repobilityId": "9e84baed53b71b4e", "scanner": "scanner-primary", "fingerprint": "f4a46f6bff19dbd5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c0f5ee8d2987c998", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/utils/new_models_report.py:40"}, "properties": {"repobilityId": "8cb0ce274be2d3e0", "scanner": "scanner-primary", "fingerprint": "c0f5ee8d2987c998", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5ddcaf895f63dd81", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/utils/canonicalize_models.py:40"}, "properties": {"repobilityId": "3e67d8c2fe9480e0", "scanner": "scanner-primary", "fingerprint": "5ddcaf895f63dd81", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3a7f9c7e25c3ddf4", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scrapers/utils/price_verifier.py:58"}, "properties": {"repobilityId": "82f78d3c9ac5d9f3", "scanner": "scanner-primary", "fingerprint": "3a7f9c7e25c3ddf4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c3ffb6b95566b0e0", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/utils/snapshot_prices.py:46"}, "properties": {"repobilityId": "07f1145100a8e945", "scanner": "scanner-primary", "fingerprint": "c3ffb6b95566b0e0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0a1418fd0ebc3fc1", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/dashscope_checker.py:79"}, "properties": {"repobilityId": "b6314e811882da94", "scanner": "scanner-primary", "fingerprint": "0a1418fd0ebc3fc1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f11dc09c0d3afbc9", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/voyageai_checker.py:128"}, "properties": {"repobilityId": "a60128665cdbe141", "scanner": "scanner-primary", "fingerprint": "f11dc09c0d3afbc9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-119c86b607a341aa", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/cerebras_checker.py:116"}, "properties": {"repobilityId": "74711183a171b565", "scanner": "scanner-primary", "fingerprint": "119c86b607a341aa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-61c63de318120b06", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/luma_checker.py:33"}, "properties": {"repobilityId": "92226f1417f496d5", "scanner": "scanner-primary", "fingerprint": "61c63de318120b06", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-30d851578420d3bf", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/upstage_checker.py:38"}, "properties": {"repobilityId": "df048aa1815562d1", "scanner": "scanner-primary", "fingerprint": "30d851578420d3bf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e891cd29c2a3460a", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/ai302_checker.py:167"}, "properties": {"repobilityId": "a99619f136b13805", "scanner": "scanner-primary", "fingerprint": "e891cd29c2a3460a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9d947106641dc88e", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/cartesia_checker.py:40"}, "properties": {"repobilityId": "90ad05cfff0e6b5e", "scanner": "scanner-primary", "fingerprint": "9d947106641dc88e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d3003017d812be48", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/huggingface_checker.py:50"}, "properties": {"repobilityId": "edbf6610703b97ef", "scanner": "scanner-primary", "fingerprint": "d3003017d812be48", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-493753ecadeed747", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/elevenlabs_checker.py:41"}, "properties": {"repobilityId": "5802ed956c4ebade", "scanner": "scanner-primary", "fingerprint": "493753ecadeed747", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2960269e95b2819d", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/siliconflow_checker.py:180"}, "properties": {"repobilityId": "fee936a93cbd6891", "scanner": "scanner-primary", "fingerprint": "2960269e95b2819d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ad5e9d4c2982dcec", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/qianfan_checker.py:45"}, "properties": {"repobilityId": "6fae79b4da6216f5", "scanner": "scanner-primary", "fingerprint": "ad5e9d4c2982dcec", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-999380a9dc6eaca3", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/openrouter_checker.py:123"}, "properties": {"repobilityId": "16981e9ef98536d7", "scanner": "scanner-primary", "fingerprint": "999380a9dc6eaca3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-748c29ffc484fbb3", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/deepgram_checker.py:51"}, "properties": {"repobilityId": "20fc14559d05c5e0", "scanner": "scanner-primary", "fingerprint": "748c29ffc484fbb3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1f896163a943d516", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/novita_checker.py:116"}, "properties": {"repobilityId": "d54e2ea342b7a1de", "scanner": "scanner-primary", "fingerprint": "1f896163a943d516", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e31d09d59aa5753a", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/pika_checker.py:31"}, "properties": {"repobilityId": "7919ccb3accb868d", "scanner": "scanner-primary", "fingerprint": "e31d09d59aa5753a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0390905d1d6212f7", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/ai302_multimodal_checker.py:342"}, "properties": {"repobilityId": "63ba694ae8525e32", "scanner": "scanner-primary", "fingerprint": "0390905d1d6212f7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-baf867a8c48801ef", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/deepseek_checker.py:15"}, "properties": {"repobilityId": "a51d4e6ca7833c3c", "scanner": "scanner-primary", "fingerprint": "baf867a8c48801ef", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3cf7c82ff1c1f65d", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/hyperbolic_checker.py:116"}, "properties": {"repobilityId": "3099e2ac20512ff4", "scanner": "scanner-primary", "fingerprint": "3cf7c82ff1c1f65d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6a994549c49d1717", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/fireworks_checker.py:267"}, "properties": {"repobilityId": "6efc4ce1e356e2f2", "scanner": "scanner-primary", "fingerprint": "6a994549c49d1717", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-deaa95660c37c509", "level": "note", "message": {"text": "Legacy-named symbol `_parse_newapi_v2` in scrapers/api_checkers/aihubmix_checker.py:30"}, "properties": {"repobilityId": "b4c52258a4514171", "scanner": "scanner-primary", "fingerprint": "deaa95660c37c509", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1fabecd0a0e21cf6", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/sambanova_checker.py:107"}, "properties": {"repobilityId": "af5bfc3ecc622e38", "scanner": "scanner-primary", "fingerprint": "1fabecd0a0e21cf6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5d23008a0323f93f", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/azure_openai_checker.py:67"}, "properties": {"repobilityId": "57822644f1313b7c", "scanner": "scanner-primary", "fingerprint": "5d23008a0323f93f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1c222e53a6ad368f", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/nebius_checker.py:67"}, "properties": {"repobilityId": "49924747fa9114ad", "scanner": "scanner-primary", "fingerprint": "1c222e53a6ad368f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-cff0c9ecc7ffc59b", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/google_checker.py:165"}, "properties": {"repobilityId": "f1ba5a16935220c6", "scanner": "scanner-primary", "fingerprint": "cff0c9ecc7ffc59b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fc8ab34c69ad1d19", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/openai_checker.py:19"}, "properties": {"repobilityId": "aaa8065c78519712", "scanner": "scanner-primary", "fingerprint": "fc8ab34c69ad1d19", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-08d7e1a8a0a21fc8", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/deepinfra_checker.py:101"}, "properties": {"repobilityId": "92c092625d4597c7", "scanner": "scanner-primary", "fingerprint": "08d7e1a8a0a21fc8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1c201778cdce2392", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/cohere_checker.py:138"}, "properties": {"repobilityId": "1e2a74b247d08b08", "scanner": "scanner-primary", "fingerprint": "1c201778cdce2392", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fa3d22bc6427827c", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/anthropic_checker.py:9"}, "properties": {"repobilityId": "10fffbffb0f27f6e", "scanner": "scanner-primary", "fingerprint": "fa3d22bc6427827c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-13a48b4dc0e1b752", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/groq_checker.py:202"}, "properties": {"repobilityId": "3925173d4a63f041", "scanner": "scanner-primary", "fingerprint": "13a48b4dc0e1b752", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9f2a33f249979b5b", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/runway_checker.py:31"}, "properties": {"repobilityId": "1b4c1c851545b41e", "scanner": "scanner-primary", "fingerprint": "9f2a33f249979b5b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4ecaff584e55c437", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/xai_checker.py:157"}, "properties": {"repobilityId": "a977d06b526e7a3c", "scanner": "scanner-primary", "fingerprint": "4ecaff584e55c437", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9c429a13c367c030", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scrapers/api_checkers/mistral_checker.py:169"}, "properties": {"repobilityId": "5158273eb9f4a813", "scanner": "scanner-primary", "fingerprint": "9c429a13c367c030", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-64d4d953f6c9178a", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scripts/fix_remaining.py:18"}, "properties": {"repobilityId": "77c0da17fafa7e8a", "scanner": "scanner-primary", "fingerprint": "64d4d953f6c9178a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-84b29fc2bfa9b067", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scripts/clean_image_data.py:144"}, "properties": {"repobilityId": "d6d8c3f7954d455e", "scanner": "scanner-primary", "fingerprint": "84b29fc2bfa9b067", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-41d346cbc3dc2542", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scripts/check_llm_list.py:17"}, "properties": {"repobilityId": "20be62414f1d8da8", "scanner": "scanner-primary", "fingerprint": "41d346cbc3dc2542", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-81f16238e0f5fb2a", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scripts/seed_official_llm.py:113"}, "properties": {"repobilityId": "0921b98460d0c8fc", "scanner": "scanner-primary", "fingerprint": "81f16238e0f5fb2a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-149cf334a16a9aca", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scripts/fix_canonical_names.py:66"}, "properties": {"repobilityId": "01c3d3859eb5d0aa", "scanner": "scanner-primary", "fingerprint": "149cf334a16a9aca", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-58ef7d870cdb875b", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in scripts/db_audit.py:27"}, "properties": {"repobilityId": "71b954ac65a3df1c", "scanner": "scanner-primary", "fingerprint": "58ef7d870cdb875b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9b07cb5c52d0bea4", "level": "note", "message": {"text": "Legacy-named symbol `total_deprecated` in scripts/clean_llm_data.py:74"}, "properties": {"repobilityId": "7cf1f9fcb7234385", "scanner": "scanner-primary", "fingerprint": "9b07cb5c52d0bea4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-860b4ca0061b31ba", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/CalcWidget.tsx:50"}, "properties": {"repobilityId": "ccddb33b87572e32", "scanner": "scanner-primary", "fingerprint": "860b4ca0061b31ba", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ec67fb1e9bab6aa4", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in app/sitemap.ts:43"}, "properties": {"repobilityId": "f26a0ec92887e2f3", "scanner": "scanner-primary", "fingerprint": "ec67fb1e9bab6aa4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f5d7f79ee8b00d51", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in app/api/gpu-stats/route.ts:18"}, "properties": {"repobilityId": "7e5ef4b3a220e82d", "scanner": "scanner-primary", "fingerprint": "f5d7f79ee8b00d51", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-349ac98352925045", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in app/api/calculator/route.ts:20"}, "properties": {"repobilityId": "6f15c0bb582dd3ed", "scanner": "scanner-primary", "fingerprint": "349ac98352925045", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-aa311900370a45d8", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in app/api/api-pricing-summary/route.ts:29"}, "properties": {"repobilityId": "2f21092fee8ba843", "scanner": "scanner-primary", "fingerprint": "aa311900370a45d8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c973ee5ef969bd8e", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in app/[locale]/platform/[name]/page.tsx:106"}, "properties": {"repobilityId": "a821c2c1f608f52e", "scanner": "scanner-primary", "fingerprint": "c973ee5ef969bd8e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-89c0a47394a438d4", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in lib/providerPage.ts:52"}, "properties": {"repobilityId": "8fec6111227c85c0", "scanner": "scanner-primary", "fingerprint": "89c0a47394a438d4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-dedacacfa7686a56", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in lib/apiQueries.ts:132"}, "properties": {"repobilityId": "7252ce69e1f8dc91", "scanner": "scanner-primary", "fingerprint": "dedacacfa7686a56", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e40381fcbd93b75e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/deepseek.ts:16"}, "properties": {"repobilityId": "1f78273840be8428", "scanner": "scanner-primary", "fingerprint": "e40381fcbd93b75e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-81a385faf504dc6a", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in lib/homeData.ts:179"}, "properties": {"repobilityId": "d1f477b5a13a99a1", "scanner": "scanner-primary", "fingerprint": "81a385faf504dc6a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "1facef33b6b30372", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-76a2f6818267a9a8", "level": "note", "message": {"text": "Near-duplicate function bodies in 8 places"}, "properties": {"repobilityId": "24c4abaf12c3e0d9", "scanner": "scanner-primary", "fingerprint": "76a2f6818267a9a8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "850638cd8b4ab8bd", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-33a6b62e30ce7ab4", "level": "note", "message": {"text": "Near-duplicate function bodies in 6 places"}, "properties": {"repobilityId": "223860279e3dfcf7", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "eb1e8ee1e1ff6788", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "cdcb433fb1e986e9", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}