{"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-c29cb6d80ab25cc9", "name": "Icon-only button without accessible name \u2014 solicitudes_ux1_extension.js:476", "shortDescription": {"text": "Icon-only button without accessible name \u2014 solicitudes_ux1_extension.js:476"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a348e0e4f2e96fa6", "name": "Icon-only button without accessible name \u2014 components.js:145", "shortDescription": {"text": "Icon-only button without accessible name \u2014 components.js:145"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fd46b0f030fbfcb0", "name": "Stray `console.log` in TS/JS \u2014 solicitudes_workboard_extension.js:203", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 solicitudes_workboard_extension.js:203"}, "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-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a8b0bbfe601f06c5", "name": "Insecure pattern 'direct_innerhtml_assignment' in configuracion.js:143", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in configuracion.js:143"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-790d99548e6d6503", "name": "Insecure pattern 'direct_innerhtml_assignment' in socios.js:109", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in socios.js:109"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-07b8882928f6d3e1", "name": "Insecure pattern 'insert_adjacent_html' in solicitudes_cash_detail_patch.js:80", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in solicitudes_cash_detail_patch.js:80"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cb22824ae8366362", "name": "Insecure pattern 'direct_innerhtml_assignment' in aprobaciones.js:116", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in aprobaciones.js:116"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8d7ac3f4657e7e47", "name": "Insecure pattern 'direct_innerhtml_assignment' in layouts_ux2_extension.js:109", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in layouts_ux2_extension.js:109"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-644f4b884598f5db", "name": "Insecure pattern 'insert_adjacent_html' in layouts_ux2_extension.js:77", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in layouts_ux2_extension.js:77"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dbde8e13b40f2207", "name": "Insecure pattern 'direct_innerhtml_assignment' in dashboard_demo_extension.js:1", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard_demo_extension.js:1"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6a3c76c70195354e", "name": "Insecure pattern 'direct_innerhtml_assignment' in layouts.js:117", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in layouts.js:117"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-026c599b0a6ae247", "name": "Insecure pattern 'direct_innerhtml_assignment' in efectivo.js:89", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in efectivo.js:89"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8085f79fe18730f4", "name": "Insecure pattern 'direct_innerhtml_assignment' in pagos_comprobaciones_cash_ux.js:73", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pagos_comprobaciones_cash_ux.js:73"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ddb2f6987a3cfcb2", "name": "Insecure pattern 'direct_innerhtml_assignment' in dashboard.js:278", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard.js:278"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bf68a12b8eb06508", "name": "Insecure pattern 'direct_innerhtml_assignment' in proveedores.js:90", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in proveedores.js:90"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6b4425e40d224e82", "name": "Insecure pattern 'direct_innerhtml_assignment' in solicitudes_ux1_extension.js:130", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in solicitudes_ux1_extension.js:130"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-69e6bbee9664c91b", "name": "Insecure pattern 'insert_adjacent_html' in solicitudes_ux1_extension.js:319", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in solicitudes_ux1_extension.js:319"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2fa2b234bf491ed4", "name": "Insecure pattern 'direct_innerhtml_assignment' in ingresos.js:190", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ingresos.js:190"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5c06c2adabc5971a", "name": "Insecure pattern 'direct_innerhtml_assignment' in config.js:90", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in config.js:90"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2df6e1810e212ca7", "name": "Insecure pattern 'direct_innerhtml_assignment' in layouts_result_extension.js:142", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in layouts_result_extension.js:142"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-75a69d3f134e01e7", "name": "Insecure pattern 'direct_innerhtml_assignment' in pagos_comprobaciones.js:103", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pagos_comprobaciones.js:103"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-92d11b7586177107", "name": "Insecure pattern 'direct_innerhtml_assignment' in solicitudes.js:268", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in solicitudes.js:268"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dbb1ac4cfbbbf190", "name": "Insecure pattern 'direct_innerhtml_assignment' in ingresos_ux2_extension.js:36", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ingresos_ux2_extension.js:36"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-003de5196e7228df", "name": "Insecure pattern 'insert_adjacent_html' in ingresos_ux2_extension.js:40", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in ingresos_ux2_extension.js:40"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ab4e96bb7b939f36", "name": "Insecure pattern 'insert_adjacent_html' in efectivo_ux2_extension.js:15", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in efectivo_ux2_extension.js:15"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6bd05d2dbe6d81e3", "name": "Insecure pattern 'direct_innerhtml_assignment' in dashboard_report_downloads_extension.js:308", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard_report_downloads_extension.js:308"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1eb7bad91fb9ac93", "name": "Insecure pattern 'direct_innerhtml_assignment' in ingresos_ux_extension.js:54", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ingresos_ux_extension.js:54"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-523dd62bf1ed812d", "name": "Insecure pattern 'direct_innerhtml_assignment' in ingresos_carlos_ux_patch_v2.js:82", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ingresos_carlos_ux_patch_v2.js:82"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5d9aeb8744fc7489", "name": "Insecure pattern 'insert_adjacent_html' in ingresos_carlos_ux_patch_v2.js:263", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in ingresos_carlos_ux_patch_v2.js:263"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1a2eed6ef00fc1c2", "name": "Insecure pattern 'direct_innerhtml_assignment' in solicitudes_workboard_extension.js:227", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in solicitudes_workboard_extension.js:227"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8eb9ea57c70785fa", "name": "Insecure pattern 'insert_adjacent_html' in solicitudes_workboard_extension.js:93", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in solicitudes_workboard_extension.js:93"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-18b545ab3de1f6c9", "name": "Insecure pattern 'direct_innerhtml_assignment' in cash_flow_extension.js:492", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in cash_flow_extension.js:492"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7d32ec3e8dfafe89", "name": "Insecure pattern 'insert_adjacent_html' in cash_flow_extension.js:83", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in cash_flow_extension.js:83"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4ff76643633f7a73", "name": "Very large file: solicitudes.js (1735 lines)", "shortDescription": {"text": "Very large file: solicitudes.js (1735 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": "0 test file(s) for 31 source file(s) (ratio 0.00). 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-01f96f71d9907a8c", "name": "README lacks setup or run instructions", "shortDescription": {"text": "README lacks setup or run instructions"}, "fullDescription": {"text": "A README exists, but it does not contain common install/setup/run markers. This matches a frequent generated-code pattern: UI is present, operational handoff is thin."}, "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 6 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 29 placeholder/mock markers across 9 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, tests, operator-readme. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-6678a6cd6c79aa39", "name": "`fetch()` without try/.catch or AbortSignal \u2014 layouts.js:597", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 layouts.js:597"}, "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-99d9b7486eea5cc7", "name": "Legacy-named symbol `ingresos_carlos_ux_patch_v2` in ingresos.js:75", "shortDescription": {"text": "Legacy-named symbol `ingresos_carlos_ux_patch_v2` in ingresos.js:75"}, "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-dd518a593c4eccf9", "name": "Legacy-named symbol `ingresos_carlos_ux_patch_v2` in config.js:390", "shortDescription": {"text": "Legacy-named symbol `ingresos_carlos_ux_patch_v2` in config.js:390"}, "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-bfb7621bb70c9694", "name": "Commented-code block (5 lines) in components.js:55", "shortDescription": {"text": "Commented-code block (5 lines) in components.js:55"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6a2a78d7efaf1100", "name": "Legacy-named symbol `ingresos_carlos_ux_patch_v2` in ingresos_ux2_extension.js:60", "shortDescription": {"text": "Legacy-named symbol `ingresos_carlos_ux_patch_v2` in ingresos_ux2_extension.js:60"}, "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}}]}}, "automationDetails": {"id": "repobility/17790"}, "properties": {"repository": "ramon1415/catalogo-proveedores-flux", "repoUrl": "https://github.com/ramon1415/catalogo-proveedores-flux", "branch": "main"}, "results": [{"ruleId": "scanner-c29cb6d80ab25cc9", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 solicitudes_ux1_extension.js:476"}, "properties": {"repobilityId": "9966c8f3778ed05f", "scanner": "scanner-primary", "fingerprint": "c29cb6d80ab25cc9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-a348e0e4f2e96fa6", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 components.js:145"}, "properties": {"repobilityId": "bcba3601361d0dcf", "scanner": "scanner-primary", "fingerprint": "a348e0e4f2e96fa6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-fd46b0f030fbfcb0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 solicitudes_workboard_extension.js:203"}, "properties": {"repobilityId": "b12ab381e79fd632", "scanner": "scanner-primary", "fingerprint": "fd46b0f030fbfcb0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-a8b0bbfe601f06c5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in configuracion.js:143"}, "properties": {"repobilityId": "3df435bb03fdae88", "scanner": "scanner-primary", "fingerprint": "a8b0bbfe601f06c5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "configuracion.js"}, "region": {"startLine": 143}}}]}, {"ruleId": "scanner-790d99548e6d6503", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in socios.js:109"}, "properties": {"repobilityId": "64c14523b788cd04", "scanner": "scanner-primary", "fingerprint": "790d99548e6d6503", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "socios.js"}, "region": {"startLine": 109}}}]}, {"ruleId": "scanner-07b8882928f6d3e1", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in solicitudes_cash_detail_patch.js:80"}, "properties": {"repobilityId": "0ae8633ae79ff8a4", "scanner": "scanner-primary", "fingerprint": "07b8882928f6d3e1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "solicitudes_cash_detail_patch.js"}, "region": {"startLine": 80}}}]}, {"ruleId": "scanner-cb22824ae8366362", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in aprobaciones.js:116"}, "properties": {"repobilityId": "ae4f6937a5a108a4", "scanner": "scanner-primary", "fingerprint": "cb22824ae8366362", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aprobaciones.js"}, "region": {"startLine": 116}}}]}, {"ruleId": "scanner-8d7ac3f4657e7e47", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in layouts_ux2_extension.js:109"}, "properties": {"repobilityId": "f9ffceff7a93ae44", "scanner": "scanner-primary", "fingerprint": "8d7ac3f4657e7e47", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "layouts_ux2_extension.js"}, "region": {"startLine": 109}}}]}, {"ruleId": "scanner-644f4b884598f5db", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in layouts_ux2_extension.js:77"}, "properties": {"repobilityId": "e05555482f8deff8", "scanner": "scanner-primary", "fingerprint": "644f4b884598f5db", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "layouts_ux2_extension.js"}, "region": {"startLine": 77}}}]}, {"ruleId": "scanner-dbde8e13b40f2207", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard_demo_extension.js:1"}, "properties": {"repobilityId": "f6c95b0c6e1edabe", "scanner": "scanner-primary", "fingerprint": "dbde8e13b40f2207", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard_demo_extension.js"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6a3c76c70195354e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in layouts.js:117"}, "properties": {"repobilityId": "540e36d6def21e74", "scanner": "scanner-primary", "fingerprint": "6a3c76c70195354e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "layouts.js"}, "region": {"startLine": 117}}}]}, {"ruleId": "scanner-026c599b0a6ae247", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in efectivo.js:89"}, "properties": {"repobilityId": "390645b3f3291d0f", "scanner": "scanner-primary", "fingerprint": "026c599b0a6ae247", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "efectivo.js"}, "region": {"startLine": 89}}}]}, {"ruleId": "scanner-8085f79fe18730f4", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pagos_comprobaciones_cash_ux.js:73"}, "properties": {"repobilityId": "438982221f042b9e", "scanner": "scanner-primary", "fingerprint": "8085f79fe18730f4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pagos_comprobaciones_cash_ux.js"}, "region": {"startLine": 73}}}]}, {"ruleId": "scanner-ddb2f6987a3cfcb2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard.js:278"}, "properties": {"repobilityId": "7ce9f76231a38cc5", "scanner": "scanner-primary", "fingerprint": "ddb2f6987a3cfcb2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard.js"}, "region": {"startLine": 278}}}]}, {"ruleId": "scanner-bf68a12b8eb06508", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in proveedores.js:90"}, "properties": {"repobilityId": "3609cd72d10fe9eb", "scanner": "scanner-primary", "fingerprint": "bf68a12b8eb06508", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "proveedores.js"}, "region": {"startLine": 90}}}]}, {"ruleId": "scanner-6b4425e40d224e82", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in solicitudes_ux1_extension.js:130"}, "properties": {"repobilityId": "9e8503e81044864f", "scanner": "scanner-primary", "fingerprint": "6b4425e40d224e82", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "solicitudes_ux1_extension.js"}, "region": {"startLine": 130}}}]}, {"ruleId": "scanner-69e6bbee9664c91b", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in solicitudes_ux1_extension.js:319"}, "properties": {"repobilityId": "91b558ece7302691", "scanner": "scanner-primary", "fingerprint": "69e6bbee9664c91b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "solicitudes_ux1_extension.js"}, "region": {"startLine": 319}}}]}, {"ruleId": "scanner-2fa2b234bf491ed4", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ingresos.js:190"}, "properties": {"repobilityId": "73b4094fe21c2819", "scanner": "scanner-primary", "fingerprint": "2fa2b234bf491ed4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ingresos.js"}, "region": {"startLine": 190}}}]}, {"ruleId": "scanner-5c06c2adabc5971a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in config.js:90"}, "properties": {"repobilityId": "88bfa23eaf264e29", "scanner": "scanner-primary", "fingerprint": "5c06c2adabc5971a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "config.js"}, "region": {"startLine": 90}}}]}, {"ruleId": "scanner-2df6e1810e212ca7", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in layouts_result_extension.js:142"}, "properties": {"repobilityId": "500fbf9eac674e13", "scanner": "scanner-primary", "fingerprint": "2df6e1810e212ca7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "layouts_result_extension.js"}, "region": {"startLine": 142}}}]}, {"ruleId": "scanner-75a69d3f134e01e7", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pagos_comprobaciones.js:103"}, "properties": {"repobilityId": "dc3f6b01bd6e5369", "scanner": "scanner-primary", "fingerprint": "75a69d3f134e01e7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pagos_comprobaciones.js"}, "region": {"startLine": 103}}}]}, {"ruleId": "scanner-92d11b7586177107", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in solicitudes.js:268"}, "properties": {"repobilityId": "8803afaa25d6d3cd", "scanner": "scanner-primary", "fingerprint": "92d11b7586177107", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "solicitudes.js"}, "region": {"startLine": 268}}}]}, {"ruleId": "scanner-dbb1ac4cfbbbf190", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ingresos_ux2_extension.js:36"}, "properties": {"repobilityId": "103b504d143a9f42", "scanner": "scanner-primary", "fingerprint": "dbb1ac4cfbbbf190", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ingresos_ux2_extension.js"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-003de5196e7228df", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in ingresos_ux2_extension.js:40"}, "properties": {"repobilityId": "8df171826c688665", "scanner": "scanner-primary", "fingerprint": "003de5196e7228df", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ingresos_ux2_extension.js"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-ab4e96bb7b939f36", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in efectivo_ux2_extension.js:15"}, "properties": {"repobilityId": "7d6feda5cb6c70ed", "scanner": "scanner-primary", "fingerprint": "ab4e96bb7b939f36", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "efectivo_ux2_extension.js"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-6bd05d2dbe6d81e3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard_report_downloads_extension.js:308"}, "properties": {"repobilityId": "098947db6a1da41b", "scanner": "scanner-primary", "fingerprint": "6bd05d2dbe6d81e3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard_report_downloads_extension.js"}, "region": {"startLine": 308}}}]}, {"ruleId": "scanner-1eb7bad91fb9ac93", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ingresos_ux_extension.js:54"}, "properties": {"repobilityId": "97fcdc1188d1b96c", "scanner": "scanner-primary", "fingerprint": "1eb7bad91fb9ac93", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ingresos_ux_extension.js"}, "region": {"startLine": 54}}}]}, {"ruleId": "scanner-523dd62bf1ed812d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ingresos_carlos_ux_patch_v2.js:82"}, "properties": {"repobilityId": "91484520a54b2e51", "scanner": "scanner-primary", "fingerprint": "523dd62bf1ed812d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ingresos_carlos_ux_patch_v2.js"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-5d9aeb8744fc7489", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in ingresos_carlos_ux_patch_v2.js:263"}, "properties": {"repobilityId": "092e9e49d6becb29", "scanner": "scanner-primary", "fingerprint": "5d9aeb8744fc7489", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ingresos_carlos_ux_patch_v2.js"}, "region": {"startLine": 263}}}]}, {"ruleId": "scanner-1a2eed6ef00fc1c2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in solicitudes_workboard_extension.js:227"}, "properties": {"repobilityId": "ecc747610b8be1ef", "scanner": "scanner-primary", "fingerprint": "1a2eed6ef00fc1c2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "solicitudes_workboard_extension.js"}, "region": {"startLine": 227}}}]}, {"ruleId": "scanner-8eb9ea57c70785fa", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in solicitudes_workboard_extension.js:93"}, "properties": {"repobilityId": "9fcbafa9c0fcbd0f", "scanner": "scanner-primary", "fingerprint": "8eb9ea57c70785fa", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "solicitudes_workboard_extension.js"}, "region": {"startLine": 93}}}]}, {"ruleId": "scanner-18b545ab3de1f6c9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in cash_flow_extension.js:492"}, "properties": {"repobilityId": "c67ca509bc92955a", "scanner": "scanner-primary", "fingerprint": "18b545ab3de1f6c9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cash_flow_extension.js"}, "region": {"startLine": 492}}}]}, {"ruleId": "scanner-7d32ec3e8dfafe89", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in cash_flow_extension.js:83"}, "properties": {"repobilityId": "e23c26dcc4376beb", "scanner": "scanner-primary", "fingerprint": "7d32ec3e8dfafe89", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cash_flow_extension.js"}, "region": {"startLine": 83}}}]}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-4ff76643633f7a73", "level": "note", "message": {"text": "Very large file: solicitudes.js (1735 lines)"}, "properties": {"repobilityId": "ffac6c5ca23d9046", "scanner": "scanner-primary", "fingerprint": "4ff76643633f7a73", "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": "f733327ac062395e", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-01f96f71d9907a8c", "level": "note", "message": {"text": "README lacks setup or run instructions"}, "properties": {"repobilityId": "6acb5a61e84111aa", "scanner": "scanner-primary", "fingerprint": "01f96f71d9907a8c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["docs", "readme", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "01f22f81a89948e0", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "56417645b82f9d50", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "09986fff295d1a65", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "a4dd1bc81ee4f729", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "53255f1d6084d694", "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": "2871fda07d7531b6", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-6678a6cd6c79aa39", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 layouts.js:597"}, "properties": {"repobilityId": "f77887f12b186803", "scanner": "scanner-primary", "fingerprint": "6678a6cd6c79aa39", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-99d9b7486eea5cc7", "level": "note", "message": {"text": "Legacy-named symbol `ingresos_carlos_ux_patch_v2` in ingresos.js:75"}, "properties": {"repobilityId": "acb7b1c9581ca85a", "scanner": "scanner-primary", "fingerprint": "99d9b7486eea5cc7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-dd518a593c4eccf9", "level": "note", "message": {"text": "Legacy-named symbol `ingresos_carlos_ux_patch_v2` in config.js:390"}, "properties": {"repobilityId": "3ddf8de1eb8cf38b", "scanner": "scanner-primary", "fingerprint": "dd518a593c4eccf9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bfb7621bb70c9694", "level": "none", "message": {"text": "Commented-code block (5 lines) in components.js:55"}, "properties": {"repobilityId": "2ceac58c26ba5912", "scanner": "scanner-primary", "fingerprint": "bfb7621bb70c9694", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a2a78d7efaf1100", "level": "note", "message": {"text": "Legacy-named symbol `ingresos_carlos_ux_patch_v2` in ingresos_ux2_extension.js:60"}, "properties": {"repobilityId": "87853898c44b0bab", "scanner": "scanner-primary", "fingerprint": "6a2a78d7efaf1100", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}]}]}