{"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-73459da725530a30", "name": "Stray `console.log` in TS/JS \u2014 Backend/verify_data_integrity.spec.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/verify_data_integrity.spec.ts:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-32101884312256e7", "name": "Stray `console.log` in TS/JS \u2014 Backend/check_last_logs.js:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/check_last_logs.js:10"}, "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-2b98aaa79a9567e6", "name": "Stray `console.log` in TS/JS \u2014 Backend/seed_demo_data.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/seed_demo_data.ts:6"}, "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-e63253aa34b003ca", "name": "Stray `console.log` in TS/JS \u2014 Backend/upgrade_admin_plan.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/upgrade_admin_plan.ts:7"}, "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-3f0b5d0c7583cc7d", "name": "Stray `console.log` in TS/JS \u2014 Backend/delete_user.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/delete_user.ts:8"}, "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-34c161f816a7cf1c", "name": "Stray `console.log` in TS/JS \u2014 Backend/simulate_ux_messaging.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/simulate_ux_messaging.ts:6"}, "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-dffc88e23ddce743", "name": "Stray `console.log` in TS/JS \u2014 Backend/check_users.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/check_users.ts:14"}, "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-c744c3c45f0982fb", "name": "Stray `console.log` in TS/JS \u2014 Backend/find_target_user.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/find_target_user.ts:19"}, "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-66bf115d3a190ad2", "name": "Stray `console.log` in TS/JS \u2014 Backend/master_validation.spec.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/master_validation.spec.ts:29"}, "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-0c9a40e23c70eb2b", "name": "Stray `console.log` in TS/JS \u2014 Backend/clear_cache.ts:4", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/clear_cache.ts:4"}, "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-6282adff757b9709", "name": "Stray `console.log` in TS/JS \u2014 Backend/check_user_email.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/check_user_email.ts:9"}, "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-46b8fb25d107bf85", "name": "Stray `console.log` in TS/JS \u2014 Backend/test_login_verification.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test_login_verification.ts:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e4aff48478a3b355", "name": "Stray `console.log` in TS/JS \u2014 Backend/inspect_meta.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/inspect_meta.ts:6"}, "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-649f1def05b301f6", "name": "Stray `console.log` in TS/JS \u2014 Backend/check_meta.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/check_meta.ts:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8c7f92302df51314", "name": "Stray `console.log` in TS/JS \u2014 Backend/clear_all_caches.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/clear_all_caches.ts:9"}, "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-6d3f6c7e2f77cd54", "name": "Stray `console.log` in TS/JS \u2014 Backend/test_scenarios.js:4", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test_scenarios.js:4"}, "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-f83aeb50d0601a0f", "name": "Stray `console.log` in TS/JS \u2014 Backend/display_logs.js:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/display_logs.js:13"}, "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-c4723fe7da0ab5e0", "name": "Stray `console.log` in TS/JS \u2014 Backend/check_google_config.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/check_google_config.ts: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-ddf0be5325e04a14", "name": "Stray `console.log` in TS/JS \u2014 Backend/print_logs.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/print_logs.js:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3c39979ae9c0b7ed", "name": "Stray `console.log` in TS/JS \u2014 Backend/test_auth_full.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test_auth_full.ts:10"}, "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-5c69ab1f9f8f1953", "name": "Stray `console.log` in TS/JS \u2014 Backend/check_all_integrations.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/check_all_integrations.ts:9"}, "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-1af8cf2e776ca43a", "name": "Stray `console.log` in TS/JS \u2014 Backend/verify_logic.js:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/verify_logic.js:6"}, "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-a95b173d16be13bf", "name": "Stray `console.log` in TS/JS \u2014 Backend/audit_metria.spec.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/audit_metria.spec.ts:12"}, "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-d10d99658fe2624b", "name": "Stray `console.log` in TS/JS \u2014 Backend/sync_orders_heal.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/sync_orders_heal.ts:6"}, "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-56efe9b1730dfd1c", "name": "Stray `console.log` in TS/JS \u2014 Backend/read_db.ts:4", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/read_db.ts:4"}, "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-7e34c821499df836", "name": "Stray `console.log` in TS/JS \u2014 Backend/test_mp_direct.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test_mp_direct.js:5"}, "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-8b37e1d5b292ee40", "name": "Stray `console.log` in TS/JS \u2014 Backend/setup_wario_user.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/setup_wario_user.ts:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5b3cf211746fd6e4", "name": "Stray `console.log` in TS/JS \u2014 Backend/generate_hash.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/generate_hash.ts:6"}, "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-3e36009222a0ecff", "name": "Stray `console.log` in TS/JS \u2014 Backend/view_logs.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/view_logs.js:9"}, "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-07d72431ad7b52bb", "name": "Stray `console.log` in TS/JS \u2014 Backend/log_summary.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/log_summary.js:9"}, "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-cad113996a895fac", "name": "Stray `console.log` in TS/JS \u2014 Backend/inspect_meta_v2.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/inspect_meta_v2.ts:7"}, "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-63e1b1a814d8afc7", "name": "Stray `console.log` in TS/JS \u2014 Backend/check_db.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/check_db.ts:7"}, "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-8b488e49748816e0", "name": "Stray `console.log` in TS/JS \u2014 Backend/simulate-dropi.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/simulate-dropi.js:36"}, "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-13ba94301c72406f", "name": "Stray `console.log` in TS/JS \u2014 Backend/full_cleanup_user.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/full_cleanup_user.ts:7"}, "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-a31a58b2975089c8", "name": "Stray `console.log` in TS/JS \u2014 Backend/debug_env.ts:2", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/debug_env.ts:2"}, "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-ad9cb82dd9135876", "name": "Stray `console.log` in TS/JS \u2014 Backend/verify_db.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/verify_db.ts:6"}, "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-666646e63a546019", "name": "Stray `console.log` in TS/JS \u2014 Backend/fix_demo.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/fix_demo.ts:34"}, "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-edc9a174a5748770", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_db_expose.spec.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_db_expose.spec.ts: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-15ffc28cf28c1f79", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/production_update_fix.spec.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/production_update_fix.spec.ts:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bee78459c7fd73ee", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_deploy_logs_check.spec.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_deploy_logs_check.spec.ts:19"}, "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-2a9bcf1e4c96256f", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_retry.spec.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_retry.spec.ts:10"}, "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-576acfd09143ae52", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/production_setup_audit.spec.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/production_setup_audit.spec.ts: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-e21fb60e1938cb8f", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_prod_sql.spec.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_prod_sql.spec.ts:17"}, "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-ae521ffc5b3fa324", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_direct_fix.spec.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_direct_fix.spec.ts:17"}, "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-c91e3320dffc9a62", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_audit.spec.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_audit.spec.ts:10"}, "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-fdb252e9944ca117", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_apply_fix.spec.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_apply_fix.spec.ts:22"}, "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-7e3722a013119460", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_diagnostic.spec.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_diagnostic.spec.ts: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-99ac45462471c5bf", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_domains.spec.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_domains.spec.ts:19"}, "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-0cdfb79abf5ff6ce", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_force_expose.spec.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_force_expose.spec.ts:17"}, "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-4521cd5c4df5cc0e", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_deep.spec.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_deep.spec.ts:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-743586eadad213b3", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_db_inspect.spec.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_db_inspect.spec.ts:19"}, "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-c8bd91417ae04747", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_upgrade_plan.spec.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_upgrade_plan.spec.ts:36"}, "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-945528f0e9b7f780", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_nav_debug.spec.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_nav_debug.spec.ts:17"}, "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-6d20f863129463a2", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_redeploy.spec.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_redeploy.spec.ts:17"}, "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-47cfebcf9368b5e0", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_db_unmask_v2.spec.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_db_unmask_v2.spec.ts:22"}, "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-6e5c3e667fb09a37", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_repair.spec.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_repair.spec.ts:17"}, "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-39eca5cc63a585d4", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_realtime_logs.spec.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_realtime_logs.spec.ts: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-b9c49911897a866f", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_config.spec.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_config.spec.ts:21"}, "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-89d485b98394b06d", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_logs_hunting.spec.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_logs_hunting.spec.ts:22"}, "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-4edcd30086c244fc", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_advanced_check.spec.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_advanced_check.spec.ts: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-b5b70c0145bc5bea", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_port_repair.spec.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_port_repair.spec.ts:19"}, "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-bf1f0c7a925f1ba4", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_config_github.spec.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_config_github.spec.ts: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-eeb5123bc7cf25bc", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_env.spec.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_env.spec.ts:26"}, "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-31e5b8129dc3e406", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_env_extract.spec.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_env_extract.spec.ts:24"}, "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-7dc975cba6b5fd3c", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_console_update.spec.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_console_update.spec.ts:17"}, "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-e7212b7359a610f4", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_manual_deploy.spec.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_manual_deploy.spec.ts:17"}, "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-b6276b7d5bdc2dcf", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_logs.spec.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_logs.spec.ts:17"}, "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-3142cafbab9eb765", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_infra_audit.spec.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_infra_audit.spec.ts:21"}, "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-ce1f637b8716a346", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_check_version.spec.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_check_version.spec.ts:17"}, "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-43766554de012bee", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_app_logs.spec.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_app_logs.spec.ts:17"}, "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-8327899192d8a034", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_deployments.spec.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_deployments.spec.ts: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-f3d7d1221b2b3ea9", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_prod_sql_precision.spec.ts:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_prod_sql_precision.spec.ts:28"}, "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-dfab6583d2f0cc0d", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/frontend_diagnostic.spec.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/frontend_diagnostic.spec.ts:10"}, "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-9805a60a96d30ebf", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_mp_logs.spec.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_mp_logs.spec.ts: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-9e4586f6f3459db5", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_logs.spec.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_logs.spec.ts:19"}, "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-f5bd91d9efb6b638", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/extract_token.spec.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/extract_token.spec.ts: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-8fac624f2ea150f9", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_force_rebuild.spec.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_force_rebuild.spec.ts: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-163f60a3dca84456", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_github_source.spec.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_github_source.spec.ts:19"}, "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-2f5e08e268f57d18", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_dump.spec.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_dump.spec.ts:17"}, "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-2ad680e5e35e8b2a", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_source_check.spec.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_source_check.spec.ts: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-61ea84953caf4309", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/production_audit.spec.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/production_audit.spec.ts:9"}, "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-71fb286b0e94508a", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_terminal_hunt.spec.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_terminal_hunt.spec.ts:25"}, "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-ad7b44af5d067286", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/frontend_trace.spec.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/frontend_trace.spec.ts:10"}, "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-199d827a54bdae2c", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_visual_audit.spec.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_visual_audit.spec.ts:19"}, "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-09c9ce4b8f4af4db", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_port_audit.spec.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_port_audit.spec.ts: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-148b974ef1018617", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_maintenance_check.spec.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_maintenance_check.spec.ts: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-c11b2165e1f68970", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_direct_fix.spec.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_direct_fix.spec.ts:22"}, "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-1d2c718f01f3fbc7", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_discovery.spec.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_discovery.spec.ts:21"}, "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-0f2d197c69d52709", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/frontend_prod.spec.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/frontend_prod.spec.ts:10"}, "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-7353025b3bb9babf", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_db_unmask.spec.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_db_unmask.spec.ts:19"}, "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-c333a4919e8e49da", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_console_update_v2.spec.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_console_update_v2.spec.ts:17"}, "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-caf427c1ddb26a7d", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_db_check.spec.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_db_check.spec.ts:16"}, "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-86c7c675f3200a40", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_html.spec.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_html.spec.ts: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-d28350d20d113ecb", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_db_credentials.spec.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_db_credentials.spec.ts:19"}, "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-f7d5a0594a7e8da8", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_repair.spec.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_repair.spec.ts: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-acc472398e75e8d2", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_prod_validation.spec.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_prod_validation.spec.ts: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-c2076ee43d6cf79f", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/get_prod_token.spec.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/get_prod_token.spec.ts: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-de7c14cd64d2fe88", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_projects.spec.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_projects.spec.ts:19"}, "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-2f21b1e7425b7d01", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/phase3_production_audit.spec.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/phase3_production_audit.spec.ts:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-332b56b1f7c2ea33", "name": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_direct.spec.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_direct.spec.ts:19"}, "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-c5a8cf46a5268272", "name": "Stray `console.log` in TS/JS \u2014 Backend/scripts/cleanup-phone-suffixes.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/scripts/cleanup-phone-suffixes.js:16"}, "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-19883daeb3a2d9ae", "name": "Stray `console.log` in TS/JS \u2014 Backend/prisma/seed.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/prisma/seed.ts:7"}, "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-7dbf9fc5fcf44649", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/test-webhooks.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/test-webhooks.ts:10"}, "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-4cb3112a7f0815f5", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/tmp-check-orders.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/tmp-check-orders.ts:6"}, "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-ae18218d69f58ca6", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/tmp-fix-workspaces.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/tmp-fix-workspaces.ts:6"}, "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-874f0f0860aa12c8", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/tmp-check-skus.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/tmp-check-skus.ts:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-efd65705a667f2dd", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/index.ts:2", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/index.ts:2"}, "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-0ec5ec0452c53c42", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/tmp-check-dates.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/tmp-check-dates.ts:10"}, "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-f3015da2e8cfc0df", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/tmp-check-products.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/tmp-check-products.ts:6"}, "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-ec840039213ad079", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/tmp-list-products.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/tmp-list-products.ts:6"}, "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-531b6dc0381c9be5", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/tmp-trigger-alert.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/tmp-trigger-alert.ts:8"}, "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-d44668c69c237cbc", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/tmp-workspace-check.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/tmp-workspace-check.ts:6"}, "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-a7f1ab378ac66b7f", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/tmp-check-channels.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/tmp-check-channels.ts:7"}, "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-0f97541e6a7991a2", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/middleware/planGate.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/middleware/planGate.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-3c9daa3d2c0a3b60", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/test/setup.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/test/setup.ts:14"}, "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-83946c763905e771", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/scripts/list_campaigns.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/scripts/list_campaigns.ts:16"}, "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-73bdfa15286e1607", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/scripts/check_db_status.ts:4", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/scripts/check_db_status.ts:4"}, "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-385c1007eac82ee0", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/scripts/clean_mocks.ts:4", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/scripts/clean_mocks.ts:4"}, "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-f0296a59bfb95f16", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/scripts/setup-paypal-plans.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/scripts/setup-paypal-plans.ts:57"}, "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-c109c1a44212987b", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/scripts/list_products.ts:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/scripts/list_products.ts:5"}, "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-615d42e972043802", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/lib/db-check.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/lib/db-check.ts:7"}, "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-31e78e6d72536392", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/lib/redis.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/lib/redis.ts:19"}, "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-2a50cc2804876f92", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/lib/whatsapp/WhatsAppManager.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/lib/whatsapp/WhatsAppManager.ts:31"}, "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-baf45e93f87b65b1", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/routes/auth.ts:119", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/routes/auth.ts:119"}, "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-934010db71e0e4c1", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/routes/composio.ts:78", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/routes/composio.ts:78"}, "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-77389686911a0179", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/routes/tiktok.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/routes/tiktok.ts:14"}, "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-9146d0dc0cf86bca", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/routes/payments.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/routes/payments.ts:49"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a1331f8a8cb6b8a5", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/routes/meta.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/routes/meta.ts:16"}, "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-2984399f6ef39e5f", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/modules/ai-agent/followup.cron.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/modules/ai-agent/followup.cron.ts:12"}, "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-cabf8a2a6291d033", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/modules/ai-agent/test-ai-flow.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/modules/ai-agent/test-ai-flow.ts:9"}, "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-59fb884aebae0267", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/modules/ai-agent/ai.service.ts:203", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/modules/ai-agent/ai.service.ts: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-c50257a614979c32", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/modules/analytics/analytics.cron.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/modules/analytics/analytics.cron.ts:21"}, "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-f51be502eaaaeaa9", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/modules/meta-ai/knowledge.controller.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/modules/meta-ai/knowledge.controller.ts:29"}, "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-1104a3f19ac7da52", "name": "Stray `console.log` in TS/JS \u2014 Backend/src/modules/crm/lifecycle.service.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/modules/crm/lifecycle.service.ts:27"}, "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-e1fe53bdcacc6f17", "name": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/components/layout/app-sidebar.tsx:181", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/components/layout/app-sidebar.tsx:181"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-589c4f011828a787", "name": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/components/layout/admin-sidebar.tsx:113", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/components/layout/admin-sidebar.tsx:113"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-790f6e2a79358480", "name": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/components/dashboard/AndromedaOptimizat", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/components/dashboard/AndromedaOptimization.tsx:408"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b81749bc795b6b61", "name": "Stray `console.log` in TS/JS \u2014 metria-metrics/Frontend/src/components/messaging/WhatsAppQRDialog.tsx:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 metria-metrics/Frontend/src/components/messaging/WhatsAppQRDialog.tsx:29"}, "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-efe92b0201ecbb67", "name": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/components/bots/AgentSetupWizard.tsx:89", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/components/bots/AgentSetupWizard.tsx:898"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a78fbb88818d2b0b", "name": "Stray `console.log` in TS/JS \u2014 metria-metrics/Frontend/src/components/pricing/mercadopago-brick.tsx:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 metria-metrics/Frontend/src/components/pricing/mercadopago-brick.tsx:57"}, "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-77ff039c48ab43e9", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 metria-metrics/Frontend/src/app/layout.tsx:53", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 metria-metrics/Frontend/src/app/layout.tsx:53"}, "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-28b3fd6d7da910c6", "name": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/app/dashboard/settings/PageClient.tsx:4", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/app/dashboard/settings/PageClient.tsx:461"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-25975aa717e344b1", "name": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/app/dashboard/tiktok-ads/PageClient.tsx", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/app/dashboard/tiktok-ads/PageClient.tsx:392"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-deed2cb16f5c4e38", "name": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/app/dashboard/crm/appointments/Appointm", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/app/dashboard/crm/appointments/AppointmentsClient.tsx:158"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a764f029d721578d", "name": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/app/dashboard/sales/PageClient.tsx:303", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/app/dashboard/sales/PageClient.tsx:303"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0240cd67e05195ce", "name": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/app/dashboard/inbox/components/ContactP", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/app/dashboard/inbox/components/ContactPanel.tsx:71"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1fe58c3628533a93", "name": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/app/dashboard/inbox/components/Conversa", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/app/dashboard/inbox/components/ConversationList.tsx:104"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1e9a2f17762eff90", "name": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/app/admin/workspaces/page.tsx:319", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/app/admin/workspaces/page.tsx:319"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ab26710d57bc9c24", "name": "Dockerfile runs as root: Backend/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: Backend/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-073bd614cafa1630", "name": "Docker base image is tag-pinned but not digest-pinned: node:20-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa1507cc0f0c0c62", "name": "Runtime dotenv file present in repo: Backend/.env", "shortDescription": {"text": "Runtime dotenv file present in repo: Backend/.env"}, "fullDescription": {"text": "`Backend/.env` looks like a runtime dotenv file. It contains secret-looking assignments for JWT_SECRET, SHOPIFY_ACCESS_TOKEN, SHOPIFY_WEBHOOK_SECRET. Move real values to a secret manager and keep only `.env.example` style templates in source control."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-4d7de62aed59139b", "name": "Possible secret in Backend/setup_wario_user.ts", "shortDescription": {"text": "Possible secret in Backend/setup_wario_user.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-76651b6a4d8acb70", "name": "Possible secret in Backend/generate_hash.ts", "shortDescription": {"text": "Possible secret in Backend/generate_hash.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-5fa5ffdb44652c83", "name": "Possible secret in Backend/test/metria_db_expose.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/metria_db_expose.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-365d19e0f2d3dc3d", "name": "Possible secret in Backend/test/production_update_fix.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/production_update_fix.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-d98360d482dfc536", "name": "Possible secret in Backend/test/easypanel_deploy_logs_check.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/easypanel_deploy_logs_check.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-bdb4c12997254252", "name": "Possible secret in Backend/test/easypanel_retry.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/easypanel_retry.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-fe0b9832e453a02a", "name": "Possible secret in Backend/test/production_setup_audit.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/production_setup_audit.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-a139fd78968ee523", "name": "Possible secret in Backend/test/metria_prod_sql.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/metria_prod_sql.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-b2274fcda400f801", "name": "Possible secret in Backend/test/metria_direct_fix.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/metria_direct_fix.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-0264cdad4c57b618", "name": "Possible secret in Backend/test/easypanel_audit.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/easypanel_audit.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-4bb35d01d6c30056", "name": "Possible secret in Backend/test/metria_apply_fix.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/metria_apply_fix.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-117d12fe85728ea4", "name": "Possible secret in Backend/test/easypanel_diagnostic.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/easypanel_diagnostic.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-7ff670c53dbd00b5", "name": "Possible secret in Backend/test/metria_domains.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/metria_domains.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-f9edb2d099269872", "name": "Possible secret in Backend/test/easypanel_force_expose.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/easypanel_force_expose.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-692ef91bcd7e2099", "name": "Possible secret in Backend/test/easypanel_deep.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/easypanel_deep.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-68c749f61a7f7042", "name": "Possible secret in Backend/test/metria_db_inspect.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/metria_db_inspect.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-49ad6c993365be2d", "name": "Possible secret in Backend/test/metria_upgrade_plan.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/metria_upgrade_plan.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-621a1935ab70264e", "name": "Possible secret in Backend/test/easypanel_nav_debug.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/easypanel_nav_debug.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-a6b60f0659226281", "name": "Possible secret in Backend/test/easypanel_redeploy.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/easypanel_redeploy.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-591e917cd139b4f5", "name": "Possible secret in Backend/test/metria_db_unmask_v2.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/metria_db_unmask_v2.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-e7aa0b464646a5ee", "name": "Possible secret in Backend/test/easypanel_repair.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/easypanel_repair.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-2f1cc6f91e0f3e53", "name": "Possible secret in Backend/test/metria_realtime_logs.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/metria_realtime_logs.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-bc454a78703ab83f", "name": "Possible secret in Backend/test/metria_config.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/metria_config.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-9c3da127d5acd3df", "name": "Possible secret in Backend/test/metria_logs_hunting.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/metria_logs_hunting.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-5a8cde1a53450ef7", "name": "Possible secret in Backend/test/easypanel_advanced_check.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/easypanel_advanced_check.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-c550203517d4010e", "name": "Possible secret in Backend/test/metria_port_repair.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/metria_port_repair.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-8cb775c58ab04760", "name": "Possible secret in Backend/test/easypanel_config_github.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/easypanel_config_github.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-0fecece10610befb", "name": "Possible secret in Backend/test/metria_env.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/metria_env.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-11a3352e91ce051a", "name": "Possible secret in Backend/test/metria_env_extract.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/metria_env_extract.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-49e1d481afacf3ff", "name": "Possible secret in Backend/test/metria_console_update.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/metria_console_update.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-40948089d4b25596", "name": "Possible secret in Backend/test/easypanel_manual_deploy.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/easypanel_manual_deploy.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-a10a4622299f74b3", "name": "Possible secret in Backend/test/metria_logs.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/metria_logs.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-1da954c6bddc8e96", "name": "Possible secret in Backend/test/metria_infra_audit.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/metria_infra_audit.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-d8c5b7c046018c9c", "name": "Possible secret in Backend/test/easypanel_check_version.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/easypanel_check_version.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-89b24600853b0ade", "name": "Possible secret in Backend/test/easypanel_app_logs.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/easypanel_app_logs.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-6626945720d87ab7", "name": "Possible secret in Backend/test/easypanel_deployments.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/easypanel_deployments.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-62bef59906a9d6e8", "name": "Possible secret in Backend/test/metria_prod_sql_precision.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/metria_prod_sql_precision.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-3f97134da7855c24", "name": "Possible secret in Backend/test/frontend_diagnostic.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/frontend_diagnostic.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-bffe45a5e758fae9", "name": "Possible secret in Backend/test/metria_mp_logs.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/metria_mp_logs.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-a82ca1f74d3305ad", "name": "Possible secret in Backend/test/easypanel_logs.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/easypanel_logs.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-a89e923e927a9a41", "name": "Possible secret in Backend/test/extract_token.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/extract_token.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-f4a99c4adfb02b39", "name": "Possible secret in Backend/test/easypanel_force_rebuild.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/easypanel_force_rebuild.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-4f22c26ba5c9a841", "name": "Possible secret in Backend/test/easypanel_github_source.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/easypanel_github_source.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-ef56784abdbd57da", "name": "Possible secret in Backend/test/easypanel_dump.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/easypanel_dump.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-a09ebac2e9352d9b", "name": "Possible secret in Backend/test/easypanel_source_check.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/easypanel_source_check.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-18006a4d15d74228", "name": "Possible secret in Backend/test/easypanel_terminal_hunt.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/easypanel_terminal_hunt.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-02b2b28c3254d430", "name": "Possible secret in Backend/test/frontend_trace.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/frontend_trace.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-e39aed270dadc299", "name": "Possible secret in Backend/test/metria_visual_audit.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/metria_visual_audit.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-fb3fbe5c44c0c187", "name": "Possible secret in Backend/test/metria_port_audit.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/metria_port_audit.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-9afacd72f0953a2f", "name": "Possible secret in Backend/test/easypanel_maintenance_check.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/easypanel_maintenance_check.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-27f0977066846507", "name": "Possible secret in Backend/test/easypanel_direct_fix.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/easypanel_direct_fix.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-fa226efbd006b4b0", "name": "Possible secret in Backend/test/easypanel_discovery.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/easypanel_discovery.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-38a3c8348ba58e14", "name": "Possible secret in Backend/test/frontend_prod.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/frontend_prod.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-030b9086c8ac0e9d", "name": "Possible secret in Backend/test/metria_db_unmask.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/metria_db_unmask.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-41b51f18921d4f60", "name": "Possible secret in Backend/test/metria_console_update_v2.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/metria_console_update_v2.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-9857b04e56935b05", "name": "Possible secret in Backend/test/metria_db_check.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/metria_db_check.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-17a34e49cc55d656", "name": "Possible secret in Backend/test/easypanel_html.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/easypanel_html.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-3f1988e5b18ce4d4", "name": "Possible secret in Backend/test/metria_db_credentials.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/metria_db_credentials.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-e7e224ebb0108ac7", "name": "Possible secret in Backend/test/metria_repair.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/metria_repair.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-7e7b5854e6d296ef", "name": "Possible secret in Backend/test/metria_prod_validation.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/metria_prod_validation.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-d28f640110dc7178", "name": "Possible secret in Backend/test/get_prod_token.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/get_prod_token.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-264d9c25ea2bcf2d", "name": "Possible secret in Backend/test/easypanel_projects.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/easypanel_projects.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-4d859fedf2608f53", "name": "Possible secret in Backend/test/phase3_production_audit.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/phase3_production_audit.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-27959d1f70170c60", "name": "Possible secret in Backend/test/easypanel_direct.spec.ts", "shortDescription": {"text": "Possible secret in Backend/test/easypanel_direct.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-e509bd42869feaa8", "name": "Insecure pattern 'cors_wildcard' in Backend/src/app.ts:38", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in Backend/src/app.ts:38"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d2d5e70cb46e6571", "name": "Possible secret in metria-metrics/Frontend/test/starter-bypass.spec.ts", "shortDescription": {"text": "Possible secret in metria-metrics/Frontend/test/starter-bypass.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-8248189be7f31dde", "name": "Insecure pattern 'local_storage_auth_token' in metria-metrics/Frontend/src/components/layout/app-sidebar.tsx:100", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in metria-metrics/Frontend/src/components/layout/app-sidebar.tsx:100"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-324e02df26ddb620", "name": "Insecure pattern 'local_storage_auth_token' in metria-metrics/Frontend/src/components/pricing/mercadopago-brick.tsx:85", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in metria-metrics/Frontend/src/components/pricing/mercadopago-brick.tsx:85"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5606800043949bf5", "name": "Insecure pattern 'dangerous_innerhtml' in metria-metrics/Frontend/src/app/layout.tsx:53", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in metria-metrics/Frontend/src/app/layout.tsx:53"}, "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-4fb1f2e765da239d", "name": "Insecure pattern 'local_storage_auth_token' in metria-metrics/Frontend/src/app/force-password/page.tsx:49", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in metria-metrics/Frontend/src/app/force-password/page.tsx:49"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-21d619c5b3e40a3e", "name": "Insecure pattern 'local_storage_auth_token' in metria-metrics/Frontend/src/app/login/page.tsx:24", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in metria-metrics/Frontend/src/app/login/page.tsx:24"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-508c1f99f961a85d", "name": "Insecure pattern 'local_storage_auth_token' in metria-metrics/Frontend/src/app/signup/page.tsx:23", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in metria-metrics/Frontend/src/app/signup/page.tsx:23"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-809676bc1c07aa09", "name": "Insecure pattern 'local_storage_auth_token' in metria-metrics/Frontend/src/app/admin/workspaces/page.tsx:88", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in metria-metrics/Frontend/src/app/admin/workspaces/page.tsx:88"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f89ec686bdfc65a7", "name": "Insecure pattern 'local_storage_auth_token' in metria-metrics/Frontend/src/app/onboarding/plans/page.tsx:70", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in metria-metrics/Frontend/src/app/onboarding/plans/page.tsx:70"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6e7ccd082a81f81c", "name": "Insecure pattern 'local_storage_auth_token' in metria-metrics/Frontend/src/store/useUserStore.ts:97", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in metria-metrics/Frontend/src/store/useUserStore.ts:97"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-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 290 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 97 placeholder/mock markers across 32 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e725d2ab884fbd49", "name": "Multiple root agent instruction files without precedence", "shortDescription": {"text": "Multiple root agent instruction files without precedence"}, "fullDescription": {"text": "The repo has multiple top-level AI-coder instruction files. Without precedence rules, different agents may follow different policies."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fca29ac3af6f2f11", "name": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/sync_orders_heal.ts:34", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/sync_orders_heal.ts:34"}, "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-5cd2ad09ffb2a0e1", "name": "Legacy-named symbol `unmasked_credentials_v2` in Backend/test/metria_db_unmask_v2.spec.ts:51", "shortDescription": {"text": "Legacy-named symbol `unmasked_credentials_v2` in Backend/test/metria_db_unmask_v2.spec.ts: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-0eee15e74c84a90e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/test/get_prod_token.spec.ts:22", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/test/get_prod_token.spec.ts:22"}, "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-1cbebda52c7cb6d3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/test-webhooks.ts:64", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/test-webhooks.ts:64"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c7042296d0cfdb11", "name": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/scripts/setup-paypal-plans.ts:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/scripts/setup-paypal-plans.ts:23"}, "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-68c8836862bc387c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/lib/oauth/providers/shopify.ts:56", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/lib/oauth/providers/shopify.ts:56"}, "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-103c6a268c51edbb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/lib/oauth/providers/meta.ts:49", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/lib/oauth/providers/meta.ts:49"}, "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-beede7afa7cbc2de", "name": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/lib/oauth/providers/google.ts:39", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/lib/oauth/providers/google.ts:39"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-04772b4a216960a1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/routes/shopify.ts:177", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/routes/shopify.ts:177"}, "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-f901fc9547de8ecb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/routes/tiktok.ts:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/routes/tiktok.ts:79"}, "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-0c3f67353689f9ed", "name": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/routes/payments.ts:17", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/routes/payments.ts:17"}, "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-da83a90d447cd2e3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/routes/meta.ts:230", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/routes/meta.ts:230"}, "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-fab41cd899fa4da2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/routes/google.ts:46", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/routes/google.ts:46"}, "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-5faf7c5a27f53983", "name": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/modules/messaging/channels/messenger.service.ts:34", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/modules/messaging/channels/messenger.service.ts:34"}, "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-e52de4fd907cf155", "name": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/modules/messaging/channels/telegram.service.ts:72", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/modules/messaging/channels/telegram.service.ts:72"}, "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-41e68eb6843c8605", "name": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/modules/messaging/channels/instagram.service.ts:38", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/modules/messaging/channels/instagram.service.ts:38"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-239790f398709ba7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/modules/messaging/channels/whatsapp.service.ts:38", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/modules/messaging/channels/whatsapp.service.ts:38"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f808a4ef3e1071fb", "name": "14 env vars used in code but missing from .env.example", "shortDescription": {"text": "14 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `COMPOSIO_API_KEY`, `GEMINI_CHAT_MODEL`, `GEMINI_EMBED_MODEL`, `GOOGLE_AI_API_KEY`, `INTERNAL_AI_KEY`, `NEXT_PUBLIC_API_URL`, `NEXT_PUBLIC_GOOGLE_CLIENT_ID`, `NEXT_PUBLIC_MERCADOPAGO_PUBLIC_KEY` + 6 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-79c386a7fce5f76f", "name": "Dangling fetch: POST https://api.mercadopago.com/preapproval (Backend/test_mp_direct.js:25)", "shortDescription": {"text": "Dangling fetch: POST https://api.mercadopago.com/preapproval (Backend/test_mp_direct.js:25)"}, "fullDescription": {"text": "`Backend/test_mp_direct.js:25` calls `POST https://api.mercadopago.com/preapproval` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.mercadopago.com/preapproval`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ff66da247c97990e", "name": "Dangling fetch: POST http://127.0.0.1:4000/api/auth/login (Backend/test_login_verification.ts:12)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:4000/api/auth/login (Backend/test_login_verification.ts:12)"}, "fullDescription": {"text": "`Backend/test_login_verification.ts:12` calls `POST http://127.0.0.1:4000/api/auth/login` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:4000/api/auth/login`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-633ee5bdd752b44c", "name": "Dangling fetch: POST http://127.0.0.1:4000/api/auth/login (Backend/test_auth_full.ts:3)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:4000/api/auth/login (Backend/test_auth_full.ts:3)"}, "fullDescription": {"text": "`Backend/test_auth_full.ts:3` calls `POST http://127.0.0.1:4000/api/auth/login` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:4000/api/auth/login`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0c1c73f073f2222d", "name": "Dangling fetch: GET http://127.0.0.1:4000/api/users/me (Backend/test_auth_full.ts:12)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/users/me (Backend/test_auth_full.ts:12)"}, "fullDescription": {"text": "`Backend/test_auth_full.ts:12` calls `GET http://127.0.0.1:4000/api/users/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:4000/api/users/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e1e1b839878986ca", "name": "Dangling fetch: GET https://bobyads-backend-m.3awmod.easypanel.host/api/messaging/conversations?status=OPEN (Backend/tes", "shortDescription": {"text": "Dangling fetch: GET https://bobyads-backend-m.3awmod.easypanel.host/api/messaging/conversations?status=OPEN (Backend/test/get_prod_token.spec.ts:22)"}, "fullDescription": {"text": "`Backend/test/get_prod_token.spec.ts:22` calls `GET https://bobyads-backend-m.3awmod.easypanel.host/api/messaging/conversations?status=OPEN` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/bobyads-backend-m.3awmod.easypanel.host/api/messaging/conversations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cd2d8bb6fa94881f", "name": "Dangling fetch: POST https://${shop}/admin/oauth/access_token (Backend/src/lib/oauth/providers/shopify.ts:56)", "shortDescription": {"text": "Dangling fetch: POST https://${shop}/admin/oauth/access_token (Backend/src/lib/oauth/providers/shopify.ts:56)"}, "fullDescription": {"text": "`Backend/src/lib/oauth/providers/shopify.ts:56` calls `POST https://${shop}/admin/oauth/access_token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/<p>/admin/oauth/access_token`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1fbe878e175e2fa3", "name": "Dangling fetch: GET https://api.mercadopago.com/v1/customers/search?email=${email} (Backend/src/routes/payments.ts:66)", "shortDescription": {"text": "Dangling fetch: GET https://api.mercadopago.com/v1/customers/search?email=${email} (Backend/src/routes/payments.ts:66)"}, "fullDescription": {"text": "`Backend/src/routes/payments.ts:66` calls `GET https://api.mercadopago.com/v1/customers/search?email=${email}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.mercadopago.com/v1/customers/search`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-20f47683d3e00779", "name": "Dangling fetch: POST https://api.mercadopago.com/v1/customers (Backend/src/routes/payments.ts:74)", "shortDescription": {"text": "Dangling fetch: POST https://api.mercadopago.com/v1/customers (Backend/src/routes/payments.ts:74)"}, "fullDescription": {"text": "`Backend/src/routes/payments.ts:74` calls `POST https://api.mercadopago.com/v1/customers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.mercadopago.com/v1/customers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-35b6aa93f5b2116f", "name": "Dangling fetch: GET https://api.mercadopago.com/v1/card_tokens/${token} (Backend/src/routes/payments.ts:90)", "shortDescription": {"text": "Dangling fetch: GET https://api.mercadopago.com/v1/card_tokens/${token} (Backend/src/routes/payments.ts:90)"}, "fullDescription": {"text": "`Backend/src/routes/payments.ts:90` calls `GET https://api.mercadopago.com/v1/card_tokens/${token}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.mercadopago.com/v1/card_tokens/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-574a37e4722f8674", "name": "Dangling fetch: GET https://api.mercadopago.com/v1/payments/${data.id} (Backend/src/routes/payments.ts:348)", "shortDescription": {"text": "Dangling fetch: GET https://api.mercadopago.com/v1/payments/${data.id} (Backend/src/routes/payments.ts:348)"}, "fullDescription": {"text": "`Backend/src/routes/payments.ts:348` calls `GET https://api.mercadopago.com/v1/payments/${data.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.mercadopago.com/v1/payments/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5ef8c10cb50a96d4", "name": "Dangling fetch: GET https://api.mercadopago.com/preapproval/${data.id} (Backend/src/routes/payments.ts:392)", "shortDescription": {"text": "Dangling fetch: GET https://api.mercadopago.com/preapproval/${data.id} (Backend/src/routes/payments.ts:392)"}, "fullDescription": {"text": "`Backend/src/routes/payments.ts:392` calls `GET https://api.mercadopago.com/preapproval/${data.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.mercadopago.com/preapproval/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a40a278eb4835800", "name": "Dangling fetch: PUT https://api.mercadopago.com/preapproval/${subscriptionId} (Backend/src/routes/payments.ts:776)", "shortDescription": {"text": "Dangling fetch: PUT https://api.mercadopago.com/preapproval/${subscriptionId} (Backend/src/routes/payments.ts:776)"}, "fullDescription": {"text": "`Backend/src/routes/payments.ts:776` calls `PUT https://api.mercadopago.com/preapproval/${subscriptionId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.mercadopago.com/preapproval/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a16cf0669d7e4cd5", "name": "Dangling fetch: GET https://graph.facebook.com/v20.0/act_${formattedAdAccountId}/insights?level=ad&${timeRangeParams}&fi", "shortDescription": {"text": "Dangling fetch: GET https://graph.facebook.com/v20.0/act_${formattedAdAccountId}/insights?level=ad&${timeRangeParams}&fields=ad_name,spend,actions,action_values&limit=4&access_token=${accessToken} (Backend/src/routes/meta.ts:230)"}, "fullDescription": {"text": "`Backend/src/routes/meta.ts:230` calls `GET https://graph.facebook.com/v20.0/act_${formattedAdAccountId}/insights?level=ad&${timeRangeParams}&fields=ad_name,spend,actions,action_values&limit=4&access_token=${accessToken}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.facebook.com/v20.0/act_/<p>/insights`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bd363ffda90a8e4b", "name": "Dangling fetch: POST https://oauth2.googleapis.com/token (Backend/src/routes/google.ts:46)", "shortDescription": {"text": "Dangling fetch: POST https://oauth2.googleapis.com/token (Backend/src/routes/google.ts:46)"}, "fullDescription": {"text": "`Backend/src/routes/google.ts:46` calls `POST https://oauth2.googleapis.com/token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/oauth2.googleapis.com/token`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-188ab7bc2aa47aea", "name": "Dangling fetch: POST https://googleads.googleapis.com/v19/customers/${customerId}/googleAds:search (Backend/src/routes/g", "shortDescription": {"text": "Dangling fetch: POST https://googleads.googleapis.com/v19/customers/${customerId}/googleAds:search (Backend/src/routes/google.ts:93)"}, "fullDescription": {"text": "`Backend/src/routes/google.ts:93` calls `POST https://googleads.googleapis.com/v19/customers/${customerId}/googleAds:search` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/googleads.googleapis.com/v19/customers/<p>/googleads/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e555720a1581db97", "name": "Dangling fetch: GET https://${domain}/admin/api/2024-01/shop.json (Backend/src/controllers/settingsController.ts:100)", "shortDescription": {"text": "Dangling fetch: GET https://${domain}/admin/api/2024-01/shop.json (Backend/src/controllers/settingsController.ts:100)"}, "fullDescription": {"text": "`Backend/src/controllers/settingsController.ts:100` calls `GET https://${domain}/admin/api/2024-01/shop.json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/<p>/admin/api/2024-01/shop.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3b29363e5dc08a9f", "name": "Dangling fetch: GET https://business-api.tiktok.com/open_api/v1.3/advertiser/info/?${params} (Backend/src/controllers/se", "shortDescription": {"text": "Dangling fetch: GET https://business-api.tiktok.com/open_api/v1.3/advertiser/info/?${params} (Backend/src/controllers/settingsController.ts:123)"}, "fullDescription": {"text": "`Backend/src/controllers/settingsController.ts:123` calls `GET https://business-api.tiktok.com/open_api/v1.3/advertiser/info/?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/business-api.tiktok.com/open_api/v1.3/advertiser/info`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d28be76499c69b22", "name": "Dangling fetch: POST https://oauth2.googleapis.com/token (Backend/src/controllers/settingsController.ts:151)", "shortDescription": {"text": "Dangling fetch: POST https://oauth2.googleapis.com/token (Backend/src/controllers/settingsController.ts:151)"}, "fullDescription": {"text": "`Backend/src/controllers/settingsController.ts:151` calls `POST https://oauth2.googleapis.com/token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/oauth2.googleapis.com/token`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-20ceca86dbe1d9c9", "name": "Unused endpoint: USE /webhooks/shopify", "shortDescription": {"text": "Unused endpoint: USE /webhooks/shopify"}, "fullDescription": {"text": "`Backend/src/app.ts` declares `USE /webhooks/shopify` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3971399f93853213", "name": "Unused endpoint: USE /api/webhooks/whatsapp", "shortDescription": {"text": "Unused endpoint: USE /api/webhooks/whatsapp"}, "fullDescription": {"text": "`Backend/src/app.ts` declares `USE /api/webhooks/whatsapp` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-81d29c1254d852b1", "name": "Unused endpoint: USE /api/webhooks/instagram", "shortDescription": {"text": "Unused endpoint: USE /api/webhooks/instagram"}, "fullDescription": {"text": "`Backend/src/app.ts` declares `USE /api/webhooks/instagram` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6eb452fbfb454d20", "name": "Unused endpoint: USE /api/auth", "shortDescription": {"text": "Unused endpoint: USE /api/auth"}, "fullDescription": {"text": "`Backend/src/app.ts` declares `USE /api/auth` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-efb45fe0bb0f8393", "name": "Unused endpoint: USE /api/shopify", "shortDescription": {"text": "Unused endpoint: USE /api/shopify"}, "fullDescription": {"text": "`Backend/src/app.ts` declares `USE /api/shopify` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b8be624dd9ede73a", "name": "Unused endpoint: USE /api/meta", "shortDescription": {"text": "Unused endpoint: USE /api/meta"}, "fullDescription": {"text": "`Backend/src/app.ts` declares `USE /api/meta` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-289fcc2835c849d6", "name": "Unused endpoint: USE /api/google", "shortDescription": {"text": "Unused endpoint: USE /api/google"}, "fullDescription": {"text": "`Backend/src/app.ts` declares `USE /api/google` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d79b64f1b400a75a", "name": "Unused endpoint: USE /api/tiktok", "shortDescription": {"text": "Unused endpoint: USE /api/tiktok"}, "fullDescription": {"text": "`Backend/src/app.ts` declares `USE /api/tiktok` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-89653660d9f39861", "name": "Unused endpoint: USE /api/dropi", "shortDescription": {"text": "Unused endpoint: USE /api/dropi"}, "fullDescription": {"text": "`Backend/src/app.ts` declares `USE /api/dropi` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f93a38e1d605cafc", "name": "Unused endpoint: USE /api/metrics", "shortDescription": {"text": "Unused endpoint: USE /api/metrics"}, "fullDescription": {"text": "`Backend/src/app.ts` declares `USE /api/metrics` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b93c1ed754cfdc30", "name": "Unused endpoint: USE /api/oauth", "shortDescription": {"text": "Unused endpoint: USE /api/oauth"}, "fullDescription": {"text": "`Backend/src/app.ts` declares `USE /api/oauth` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e1ae3aeb68b3c3c1", "name": "Unused endpoint: USE /api/ia", "shortDescription": {"text": "Unused endpoint: USE /api/ia"}, "fullDescription": {"text": "`Backend/src/app.ts` declares `USE /api/ia` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8ca4664c9cda1cd6", "name": "Unused endpoint: USE /api/settings", "shortDescription": {"text": "Unused endpoint: USE /api/settings"}, "fullDescription": {"text": "`Backend/src/app.ts` declares `USE /api/settings` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4ff40cb10f7c8519", "name": "Unused endpoint: USE /api/users", "shortDescription": {"text": "Unused endpoint: USE /api/users"}, "fullDescription": {"text": "`Backend/src/app.ts` declares `USE /api/users` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d93a530ce10d47d9", "name": "Unused endpoint: USE /api/admin", "shortDescription": {"text": "Unused endpoint: USE /api/admin"}, "fullDescription": {"text": "`Backend/src/app.ts` declares `USE /api/admin` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cefe3e16e4a7273d", "name": "Unused endpoint: USE /api/products", "shortDescription": {"text": "Unused endpoint: USE /api/products"}, "fullDescription": {"text": "`Backend/src/app.ts` declares `USE /api/products` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e4b2c2b7682a8346", "name": "Unused endpoint: USE /api/logs", "shortDescription": {"text": "Unused endpoint: USE /api/logs"}, "fullDescription": {"text": "`Backend/src/app.ts` declares `USE /api/logs` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1c75c6f40d00cae7", "name": "Unused endpoint: USE /api/onboarding", "shortDescription": {"text": "Unused endpoint: USE /api/onboarding"}, "fullDescription": {"text": "`Backend/src/app.ts` declares `USE /api/onboarding` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f8242ba07247d2f8", "name": "Unused endpoint: USE /api/payments", "shortDescription": {"text": "Unused endpoint: USE /api/payments"}, "fullDescription": {"text": "`Backend/src/app.ts` declares `USE /api/payments` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dde3adb27bf7eebe", "name": "Unused endpoint: USE /api", "shortDescription": {"text": "Unused endpoint: USE /api"}, "fullDescription": {"text": "`Backend/src/app.ts` declares `USE /api` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-01f4e0da5fd4a496", "name": "Unused endpoint: USE /api/composio", "shortDescription": {"text": "Unused endpoint: USE /api/composio"}, "fullDescription": {"text": "`Backend/src/app.ts` declares `USE /api/composio` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-618721b912bad1c2", "name": "Unused endpoint: POST /login", "shortDescription": {"text": "Unused endpoint: POST /login"}, "fullDescription": {"text": "`Backend/src/routes/auth.ts` declares `POST /login` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5887f6beb60dee57", "name": "Unused endpoint: POST /google", "shortDescription": {"text": "Unused endpoint: POST /google"}, "fullDescription": {"text": "`Backend/src/routes/auth.ts` declares `POST /google` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-69aa6a6a0699b217", "name": "Unused endpoint: POST /force-change-password", "shortDescription": {"text": "Unused endpoint: POST /force-change-password"}, "fullDescription": {"text": "`Backend/src/routes/auth.ts` declares `POST /force-change-password` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-304b6f2b403d93f7", "name": "Unused endpoint: POST /register", "shortDescription": {"text": "Unused endpoint: POST /register"}, "fullDescription": {"text": "`Backend/src/routes/auth.ts` declares `POST /register` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`Backend/src/routes/health.ts` declares `GET /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8664e7608b8880ea", "name": "Unused endpoint: POST /connect", "shortDescription": {"text": "Unused endpoint: POST /connect"}, "fullDescription": {"text": "`Backend/src/routes/composio.ts` declares `POST /connect` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cdfb578618cf2542", "name": "Unused endpoint: GET /callback", "shortDescription": {"text": "Unused endpoint: GET /callback"}, "fullDescription": {"text": "`Backend/src/routes/composio.ts` declares `GET /callback` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-612648bbd62b68ab", "name": "Unused endpoint: DELETE /disconnect", "shortDescription": {"text": "Unused endpoint: DELETE /disconnect"}, "fullDescription": {"text": "`Backend/src/routes/composio.ts` declares `DELETE /disconnect` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2b8c06301fe42c7f", "name": "Unused endpoint: POST /select-plan", "shortDescription": {"text": "Unused endpoint: POST /select-plan"}, "fullDescription": {"text": "`Backend/src/routes/onboarding.ts` declares `POST /select-plan` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fd1dc91abf32142d", "name": "Unused endpoint: GET /me", "shortDescription": {"text": "Unused endpoint: GET /me"}, "fullDescription": {"text": "`Backend/src/routes/users.ts` declares `GET /me` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3a6dc402c9f6cbc4", "name": "Unused endpoint: PUT /me", "shortDescription": {"text": "Unused endpoint: PUT /me"}, "fullDescription": {"text": "`Backend/src/routes/users.ts` declares `PUT /me` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a0c590d074465035", "name": "Unused endpoint: PUT /me/password", "shortDescription": {"text": "Unused endpoint: PUT /me/password"}, "fullDescription": {"text": "`Backend/src/routes/users.ts` declares `PUT /me/password` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4b0fb29c2a726422", "name": "Unused endpoint: GET /me/preferences", "shortDescription": {"text": "Unused endpoint: GET /me/preferences"}, "fullDescription": {"text": "`Backend/src/routes/users.ts` declares `GET /me/preferences` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a4f762733185e1cb", "name": "Unused endpoint: PUT /me/preferences", "shortDescription": {"text": "Unused endpoint: PUT /me/preferences"}, "fullDescription": {"text": "`Backend/src/routes/users.ts` declares `PUT /me/preferences` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3e173d872a6c674e", "name": "Unused endpoint: POST /webhooks/orders/create", "shortDescription": {"text": "Unused endpoint: POST /webhooks/orders/create"}, "fullDescription": {"text": "`Backend/src/routes/shopify.ts` declares `POST /webhooks/orders/create` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3fae78fafd02ab83", "name": "Unused endpoint: POST /webhooks/orders/updated", "shortDescription": {"text": "Unused endpoint: POST /webhooks/orders/updated"}, "fullDescription": {"text": "`Backend/src/routes/shopify.ts` declares `POST /webhooks/orders/updated` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0328e9bdbb61fa68", "name": "Unused endpoint: GET /orders", "shortDescription": {"text": "Unused endpoint: GET /orders"}, "fullDescription": {"text": "`Backend/src/routes/shopify.ts` declares `GET /orders` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fa413208496243a5", "name": "Unused endpoint: POST /sync", "shortDescription": {"text": "Unused endpoint: POST /sync"}, "fullDescription": {"text": "`Backend/src/routes/shopify.ts` declares `POST /sync` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a73aebc088a06d2d", "name": "Unused endpoint: GET /:platform", "shortDescription": {"text": "Unused endpoint: GET /:platform"}, "fullDescription": {"text": "`Backend/src/routes/oauth.ts` declares `GET /:platform` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-841e4c4b67dfe44a", "name": "Unused endpoint: GET /:platform/callback", "shortDescription": {"text": "Unused endpoint: GET /:platform/callback"}, "fullDescription": {"text": "`Backend/src/routes/oauth.ts` declares `GET /:platform/callback` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fce72c9e2ae9bfb0", "name": "Unused endpoint: GET /valentina-context", "shortDescription": {"text": "Unused endpoint: GET /valentina-context"}, "fullDescription": {"text": "`Backend/src/routes/valentina.ts` declares `GET /valentina-context` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f267cc6244ff132b", "name": "Unused endpoint: GET /campaigns", "shortDescription": {"text": "Unused endpoint: GET /campaigns"}, "fullDescription": {"text": "`Backend/src/routes/tiktok.ts` declares `GET /campaigns` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-de69773c75bbd5a2", "name": "Unused endpoint: GET /daily-performance", "shortDescription": {"text": "Unused endpoint: GET /daily-performance"}, "fullDescription": {"text": "`Backend/src/routes/tiktok.ts` declares `GET /daily-performance` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ff9b0e3fb42adb0e", "name": "Unused endpoint: GET /creatives", "shortDescription": {"text": "Unused endpoint: GET /creatives"}, "fullDescription": {"text": "`Backend/src/routes/tiktok.ts` declares `GET /creatives` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-69652b976bca614f", "name": "Unused endpoint: POST /process-mercadopago-subscription", "shortDescription": {"text": "Unused endpoint: POST /process-mercadopago-subscription"}, "fullDescription": {"text": "`Backend/src/routes/payments.ts` declares `POST /process-mercadopago-subscription` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9e8f766adc9ffe4c", "name": "Unused endpoint: POST /create-mp-preference", "shortDescription": {"text": "Unused endpoint: POST /create-mp-preference"}, "fullDescription": {"text": "`Backend/src/routes/payments.ts` declares `POST /create-mp-preference` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-323abe7af659d4d5", "name": "Unused endpoint: POST /webhook-mp", "shortDescription": {"text": "Unused endpoint: POST /webhook-mp"}, "fullDescription": {"text": "`Backend/src/routes/payments.ts` declares `POST /webhook-mp` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a4533e26456580a", "name": "Unused endpoint: POST /create-subscription", "shortDescription": {"text": "Unused endpoint: POST /create-subscription"}, "fullDescription": {"text": "`Backend/src/routes/payments.ts` declares `POST /create-subscription` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ce6c0c064e067960", "name": "Unused endpoint: POST /activate-paypal-subscription", "shortDescription": {"text": "Unused endpoint: POST /activate-paypal-subscription"}, "fullDescription": {"text": "`Backend/src/routes/payments.ts` declares `POST /activate-paypal-subscription` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/21196"}, "properties": {"repository": "ThinkWario/metria", "repoUrl": "https://github.com/ThinkWario/metria", "branch": "main"}, "results": [{"ruleId": "scanner-73459da725530a30", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/verify_data_integrity.spec.ts:11"}, "properties": {"repobilityId": "e44f421089acac9c", "scanner": "scanner-primary", "fingerprint": "73459da725530a30", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-32101884312256e7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/check_last_logs.js:10"}, "properties": {"repobilityId": "b5a722683e8a19b0", "scanner": "scanner-primary", "fingerprint": "32101884312256e7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2b98aaa79a9567e6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/seed_demo_data.ts:6"}, "properties": {"repobilityId": "c190b3517c5a3b5a", "scanner": "scanner-primary", "fingerprint": "2b98aaa79a9567e6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e63253aa34b003ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/upgrade_admin_plan.ts:7"}, "properties": {"repobilityId": "a23cb1082c66d28e", "scanner": "scanner-primary", "fingerprint": "e63253aa34b003ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3f0b5d0c7583cc7d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/delete_user.ts:8"}, "properties": {"repobilityId": "24dbd499e4d36cba", "scanner": "scanner-primary", "fingerprint": "3f0b5d0c7583cc7d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-34c161f816a7cf1c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/simulate_ux_messaging.ts:6"}, "properties": {"repobilityId": "2b12d6b3a0c4d064", "scanner": "scanner-primary", "fingerprint": "34c161f816a7cf1c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dffc88e23ddce743", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/check_users.ts:14"}, "properties": {"repobilityId": "1d47e8e55ceb6023", "scanner": "scanner-primary", "fingerprint": "dffc88e23ddce743", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c744c3c45f0982fb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/find_target_user.ts:19"}, "properties": {"repobilityId": "cc1d75d0c79af115", "scanner": "scanner-primary", "fingerprint": "c744c3c45f0982fb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-66bf115d3a190ad2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/master_validation.spec.ts:29"}, "properties": {"repobilityId": "265ae6134f1f5263", "scanner": "scanner-primary", "fingerprint": "66bf115d3a190ad2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0c9a40e23c70eb2b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/clear_cache.ts:4"}, "properties": {"repobilityId": "14c6763fc58e4886", "scanner": "scanner-primary", "fingerprint": "0c9a40e23c70eb2b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6282adff757b9709", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/check_user_email.ts:9"}, "properties": {"repobilityId": "8d18b910b1631588", "scanner": "scanner-primary", "fingerprint": "6282adff757b9709", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-46b8fb25d107bf85", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test_login_verification.ts:11"}, "properties": {"repobilityId": "84b6d33b5fecd5d6", "scanner": "scanner-primary", "fingerprint": "46b8fb25d107bf85", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e4aff48478a3b355", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/inspect_meta.ts:6"}, "properties": {"repobilityId": "9c1b6df09187d259", "scanner": "scanner-primary", "fingerprint": "e4aff48478a3b355", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-649f1def05b301f6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/check_meta.ts:11"}, "properties": {"repobilityId": "20efd25f5414ccf5", "scanner": "scanner-primary", "fingerprint": "649f1def05b301f6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8c7f92302df51314", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/clear_all_caches.ts:9"}, "properties": {"repobilityId": "bf253ff2fca2ce75", "scanner": "scanner-primary", "fingerprint": "8c7f92302df51314", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6d3f6c7e2f77cd54", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test_scenarios.js:4"}, "properties": {"repobilityId": "461dc8e48498a0ee", "scanner": "scanner-primary", "fingerprint": "6d3f6c7e2f77cd54", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f83aeb50d0601a0f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/display_logs.js:13"}, "properties": {"repobilityId": "9f176e6d3a9151b9", "scanner": "scanner-primary", "fingerprint": "f83aeb50d0601a0f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c4723fe7da0ab5e0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/check_google_config.ts:20"}, "properties": {"repobilityId": "580c6b45263c35dd", "scanner": "scanner-primary", "fingerprint": "c4723fe7da0ab5e0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ddf0be5325e04a14", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/print_logs.js:11"}, "properties": {"repobilityId": "e4f03a2b3052912f", "scanner": "scanner-primary", "fingerprint": "ddf0be5325e04a14", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c39979ae9c0b7ed", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test_auth_full.ts:10"}, "properties": {"repobilityId": "8f98563b22f5e2ba", "scanner": "scanner-primary", "fingerprint": "3c39979ae9c0b7ed", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5c69ab1f9f8f1953", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/check_all_integrations.ts:9"}, "properties": {"repobilityId": "f18029a042deaa0c", "scanner": "scanner-primary", "fingerprint": "5c69ab1f9f8f1953", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1af8cf2e776ca43a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/verify_logic.js:6"}, "properties": {"repobilityId": "447bfc4b2d49aef4", "scanner": "scanner-primary", "fingerprint": "1af8cf2e776ca43a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a95b173d16be13bf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/audit_metria.spec.ts:12"}, "properties": {"repobilityId": "44199ed08daa9360", "scanner": "scanner-primary", "fingerprint": "a95b173d16be13bf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d10d99658fe2624b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/sync_orders_heal.ts:6"}, "properties": {"repobilityId": "a2a6c4627c0f185f", "scanner": "scanner-primary", "fingerprint": "d10d99658fe2624b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-56efe9b1730dfd1c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/read_db.ts:4"}, "properties": {"repobilityId": "9b5ff9eff1ad7785", "scanner": "scanner-primary", "fingerprint": "56efe9b1730dfd1c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7e34c821499df836", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test_mp_direct.js:5"}, "properties": {"repobilityId": "b79fff7a13f06020", "scanner": "scanner-primary", "fingerprint": "7e34c821499df836", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8b37e1d5b292ee40", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/setup_wario_user.ts:11"}, "properties": {"repobilityId": "dfa78536b9472b7c", "scanner": "scanner-primary", "fingerprint": "8b37e1d5b292ee40", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5b3cf211746fd6e4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/generate_hash.ts:6"}, "properties": {"repobilityId": "af49bab92b98d997", "scanner": "scanner-primary", "fingerprint": "5b3cf211746fd6e4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3e36009222a0ecff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/view_logs.js:9"}, "properties": {"repobilityId": "37ec77949993b680", "scanner": "scanner-primary", "fingerprint": "3e36009222a0ecff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-07d72431ad7b52bb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/log_summary.js:9"}, "properties": {"repobilityId": "4663755d303b58c2", "scanner": "scanner-primary", "fingerprint": "07d72431ad7b52bb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cad113996a895fac", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/inspect_meta_v2.ts:7"}, "properties": {"repobilityId": "c6d7a9d20f696785", "scanner": "scanner-primary", "fingerprint": "cad113996a895fac", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-63e1b1a814d8afc7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/check_db.ts:7"}, "properties": {"repobilityId": "c1d88a15ecc7fdd3", "scanner": "scanner-primary", "fingerprint": "63e1b1a814d8afc7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8b488e49748816e0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/simulate-dropi.js:36"}, "properties": {"repobilityId": "f1b90bc87001b9a4", "scanner": "scanner-primary", "fingerprint": "8b488e49748816e0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-13ba94301c72406f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/full_cleanup_user.ts:7"}, "properties": {"repobilityId": "3cb6b2affee5e3c6", "scanner": "scanner-primary", "fingerprint": "13ba94301c72406f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a31a58b2975089c8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/debug_env.ts:2"}, "properties": {"repobilityId": "710d75db215f02c8", "scanner": "scanner-primary", "fingerprint": "a31a58b2975089c8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ad9cb82dd9135876", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/verify_db.ts:6"}, "properties": {"repobilityId": "c783ba4d3bf9822d", "scanner": "scanner-primary", "fingerprint": "ad9cb82dd9135876", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-666646e63a546019", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/fix_demo.ts:34"}, "properties": {"repobilityId": "8b16502f05b269cd", "scanner": "scanner-primary", "fingerprint": "666646e63a546019", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-edc9a174a5748770", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_db_expose.spec.ts:20"}, "properties": {"repobilityId": "97a91b17506cf88c", "scanner": "scanner-primary", "fingerprint": "edc9a174a5748770", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-15ffc28cf28c1f79", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/production_update_fix.spec.ts:11"}, "properties": {"repobilityId": "4ee91296f4de94ae", "scanner": "scanner-primary", "fingerprint": "15ffc28cf28c1f79", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bee78459c7fd73ee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_deploy_logs_check.spec.ts:19"}, "properties": {"repobilityId": "b7c4d020051e05f4", "scanner": "scanner-primary", "fingerprint": "bee78459c7fd73ee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2a9bcf1e4c96256f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_retry.spec.ts:10"}, "properties": {"repobilityId": "39de5027f9223934", "scanner": "scanner-primary", "fingerprint": "2a9bcf1e4c96256f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-576acfd09143ae52", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/production_setup_audit.spec.ts:18"}, "properties": {"repobilityId": "9cf53818c5e75a26", "scanner": "scanner-primary", "fingerprint": "576acfd09143ae52", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e21fb60e1938cb8f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_prod_sql.spec.ts:17"}, "properties": {"repobilityId": "6981e688e6c33594", "scanner": "scanner-primary", "fingerprint": "e21fb60e1938cb8f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ae521ffc5b3fa324", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_direct_fix.spec.ts:17"}, "properties": {"repobilityId": "f8138a96df860086", "scanner": "scanner-primary", "fingerprint": "ae521ffc5b3fa324", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c91e3320dffc9a62", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_audit.spec.ts:10"}, "properties": {"repobilityId": "ccf25adb774687af", "scanner": "scanner-primary", "fingerprint": "c91e3320dffc9a62", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fdb252e9944ca117", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_apply_fix.spec.ts:22"}, "properties": {"repobilityId": "a17d5a6399cfc211", "scanner": "scanner-primary", "fingerprint": "fdb252e9944ca117", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7e3722a013119460", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_diagnostic.spec.ts:18"}, "properties": {"repobilityId": "0e43e0f4aff03f54", "scanner": "scanner-primary", "fingerprint": "7e3722a013119460", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-99ac45462471c5bf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_domains.spec.ts:19"}, "properties": {"repobilityId": "b7e4ad4320025fee", "scanner": "scanner-primary", "fingerprint": "99ac45462471c5bf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0cdfb79abf5ff6ce", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_force_expose.spec.ts:17"}, "properties": {"repobilityId": "a4c3c346aa532b97", "scanner": "scanner-primary", "fingerprint": "0cdfb79abf5ff6ce", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4521cd5c4df5cc0e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_deep.spec.ts:11"}, "properties": {"repobilityId": "82399d2fa9322c02", "scanner": "scanner-primary", "fingerprint": "4521cd5c4df5cc0e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-743586eadad213b3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_db_inspect.spec.ts:19"}, "properties": {"repobilityId": "56447a5f85592709", "scanner": "scanner-primary", "fingerprint": "743586eadad213b3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c8bd91417ae04747", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_upgrade_plan.spec.ts:36"}, "properties": {"repobilityId": "ae3677a7551bf63d", "scanner": "scanner-primary", "fingerprint": "c8bd91417ae04747", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-945528f0e9b7f780", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_nav_debug.spec.ts:17"}, "properties": {"repobilityId": "892fda4e87b10f99", "scanner": "scanner-primary", "fingerprint": "945528f0e9b7f780", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6d20f863129463a2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_redeploy.spec.ts:17"}, "properties": {"repobilityId": "5be757c34ed00a4e", "scanner": "scanner-primary", "fingerprint": "6d20f863129463a2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-47cfebcf9368b5e0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_db_unmask_v2.spec.ts:22"}, "properties": {"repobilityId": "db47503a6b465753", "scanner": "scanner-primary", "fingerprint": "47cfebcf9368b5e0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6e5c3e667fb09a37", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_repair.spec.ts:17"}, "properties": {"repobilityId": "4b6a2c5cd42b06ae", "scanner": "scanner-primary", "fingerprint": "6e5c3e667fb09a37", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-39eca5cc63a585d4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_realtime_logs.spec.ts:20"}, "properties": {"repobilityId": "3cdbe04339c39c94", "scanner": "scanner-primary", "fingerprint": "39eca5cc63a585d4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b9c49911897a866f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_config.spec.ts:21"}, "properties": {"repobilityId": "a0f79905ab37a1d0", "scanner": "scanner-primary", "fingerprint": "b9c49911897a866f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-89d485b98394b06d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_logs_hunting.spec.ts:22"}, "properties": {"repobilityId": "2895f415a5732eaf", "scanner": "scanner-primary", "fingerprint": "89d485b98394b06d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4edcd30086c244fc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_advanced_check.spec.ts:20"}, "properties": {"repobilityId": "eb32888e052cd93c", "scanner": "scanner-primary", "fingerprint": "4edcd30086c244fc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b5b70c0145bc5bea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_port_repair.spec.ts:19"}, "properties": {"repobilityId": "ff132a831ce1055f", "scanner": "scanner-primary", "fingerprint": "b5b70c0145bc5bea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bf1f0c7a925f1ba4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_config_github.spec.ts:20"}, "properties": {"repobilityId": "bfebf30bf349f2e7", "scanner": "scanner-primary", "fingerprint": "bf1f0c7a925f1ba4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eeb5123bc7cf25bc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_env.spec.ts:26"}, "properties": {"repobilityId": "5102dbd004c84083", "scanner": "scanner-primary", "fingerprint": "eeb5123bc7cf25bc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-31e5b8129dc3e406", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_env_extract.spec.ts:24"}, "properties": {"repobilityId": "97ca13da1ccf6e36", "scanner": "scanner-primary", "fingerprint": "31e5b8129dc3e406", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7dc975cba6b5fd3c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_console_update.spec.ts:17"}, "properties": {"repobilityId": "1b92569b8fdd231c", "scanner": "scanner-primary", "fingerprint": "7dc975cba6b5fd3c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e7212b7359a610f4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_manual_deploy.spec.ts:17"}, "properties": {"repobilityId": "30b0ca1992702f9b", "scanner": "scanner-primary", "fingerprint": "e7212b7359a610f4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b6276b7d5bdc2dcf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_logs.spec.ts:17"}, "properties": {"repobilityId": "f0028e6f20432865", "scanner": "scanner-primary", "fingerprint": "b6276b7d5bdc2dcf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3142cafbab9eb765", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_infra_audit.spec.ts:21"}, "properties": {"repobilityId": "f3baaefb5caec844", "scanner": "scanner-primary", "fingerprint": "3142cafbab9eb765", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ce1f637b8716a346", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_check_version.spec.ts:17"}, "properties": {"repobilityId": "cb320e2ac7379628", "scanner": "scanner-primary", "fingerprint": "ce1f637b8716a346", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-43766554de012bee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_app_logs.spec.ts:17"}, "properties": {"repobilityId": "6c35320ca7164754", "scanner": "scanner-primary", "fingerprint": "43766554de012bee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8327899192d8a034", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_deployments.spec.ts:20"}, "properties": {"repobilityId": "7796e80e237a0b58", "scanner": "scanner-primary", "fingerprint": "8327899192d8a034", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f3d7d1221b2b3ea9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_prod_sql_precision.spec.ts:28"}, "properties": {"repobilityId": "3a1d5ddafd9432ce", "scanner": "scanner-primary", "fingerprint": "f3d7d1221b2b3ea9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dfab6583d2f0cc0d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/frontend_diagnostic.spec.ts:10"}, "properties": {"repobilityId": "fb4e2089e93fc567", "scanner": "scanner-primary", "fingerprint": "dfab6583d2f0cc0d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9805a60a96d30ebf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_mp_logs.spec.ts:20"}, "properties": {"repobilityId": "24bb3ec1c93ae025", "scanner": "scanner-primary", "fingerprint": "9805a60a96d30ebf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9e4586f6f3459db5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_logs.spec.ts:19"}, "properties": {"repobilityId": "d2441fe1bbdbafc0", "scanner": "scanner-primary", "fingerprint": "9e4586f6f3459db5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f5bd91d9efb6b638", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/extract_token.spec.ts:18"}, "properties": {"repobilityId": "19d7cf40fd412d9a", "scanner": "scanner-primary", "fingerprint": "f5bd91d9efb6b638", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8fac624f2ea150f9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_force_rebuild.spec.ts:20"}, "properties": {"repobilityId": "4757bb0316996763", "scanner": "scanner-primary", "fingerprint": "8fac624f2ea150f9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-163f60a3dca84456", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_github_source.spec.ts:19"}, "properties": {"repobilityId": "3fb4a84a9fd3124e", "scanner": "scanner-primary", "fingerprint": "163f60a3dca84456", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f5e08e268f57d18", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_dump.spec.ts:17"}, "properties": {"repobilityId": "02e3f27823c1ec92", "scanner": "scanner-primary", "fingerprint": "2f5e08e268f57d18", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2ad680e5e35e8b2a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_source_check.spec.ts:20"}, "properties": {"repobilityId": "f9d74b35d5043461", "scanner": "scanner-primary", "fingerprint": "2ad680e5e35e8b2a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-61ea84953caf4309", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/production_audit.spec.ts:9"}, "properties": {"repobilityId": "2c0fcd3b3b8c9e0d", "scanner": "scanner-primary", "fingerprint": "61ea84953caf4309", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-71fb286b0e94508a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_terminal_hunt.spec.ts:25"}, "properties": {"repobilityId": "d914ba0013882119", "scanner": "scanner-primary", "fingerprint": "71fb286b0e94508a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ad7b44af5d067286", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/frontend_trace.spec.ts:10"}, "properties": {"repobilityId": "bceaca16ff25d8e7", "scanner": "scanner-primary", "fingerprint": "ad7b44af5d067286", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-199d827a54bdae2c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_visual_audit.spec.ts:19"}, "properties": {"repobilityId": "a62c4a3dee7a68aa", "scanner": "scanner-primary", "fingerprint": "199d827a54bdae2c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-09c9ce4b8f4af4db", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_port_audit.spec.ts:20"}, "properties": {"repobilityId": "a80fde165585a20c", "scanner": "scanner-primary", "fingerprint": "09c9ce4b8f4af4db", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-148b974ef1018617", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_maintenance_check.spec.ts:20"}, "properties": {"repobilityId": "770be4910b3ec77e", "scanner": "scanner-primary", "fingerprint": "148b974ef1018617", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c11b2165e1f68970", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_direct_fix.spec.ts:22"}, "properties": {"repobilityId": "c2e8199d4dab50f2", "scanner": "scanner-primary", "fingerprint": "c11b2165e1f68970", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1d2c718f01f3fbc7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_discovery.spec.ts:21"}, "properties": {"repobilityId": "ffabbe9e5c9d0cd4", "scanner": "scanner-primary", "fingerprint": "1d2c718f01f3fbc7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0f2d197c69d52709", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/frontend_prod.spec.ts:10"}, "properties": {"repobilityId": "99ce7f9017a081fd", "scanner": "scanner-primary", "fingerprint": "0f2d197c69d52709", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7353025b3bb9babf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_db_unmask.spec.ts:19"}, "properties": {"repobilityId": "b75af3c1b837ba0a", "scanner": "scanner-primary", "fingerprint": "7353025b3bb9babf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c333a4919e8e49da", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_console_update_v2.spec.ts:17"}, "properties": {"repobilityId": "378dbbef12999995", "scanner": "scanner-primary", "fingerprint": "c333a4919e8e49da", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-caf427c1ddb26a7d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_db_check.spec.ts:16"}, "properties": {"repobilityId": "9985d7a4dc552b1e", "scanner": "scanner-primary", "fingerprint": "caf427c1ddb26a7d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-86c7c675f3200a40", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_html.spec.ts:20"}, "properties": {"repobilityId": "3c9024bbae5aaa0b", "scanner": "scanner-primary", "fingerprint": "86c7c675f3200a40", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d28350d20d113ecb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_db_credentials.spec.ts:19"}, "properties": {"repobilityId": "41a8eb4df31a7439", "scanner": "scanner-primary", "fingerprint": "d28350d20d113ecb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f7d5a0594a7e8da8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_repair.spec.ts:18"}, "properties": {"repobilityId": "cd6cd9fdd45f5415", "scanner": "scanner-primary", "fingerprint": "f7d5a0594a7e8da8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-acc472398e75e8d2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/metria_prod_validation.spec.ts:18"}, "properties": {"repobilityId": "c8a174a0a560b58f", "scanner": "scanner-primary", "fingerprint": "acc472398e75e8d2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c2076ee43d6cf79f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/get_prod_token.spec.ts:18"}, "properties": {"repobilityId": "e9355f0252728447", "scanner": "scanner-primary", "fingerprint": "c2076ee43d6cf79f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de7c14cd64d2fe88", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_projects.spec.ts:19"}, "properties": {"repobilityId": "a33f2e47745fd2b5", "scanner": "scanner-primary", "fingerprint": "de7c14cd64d2fe88", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f21b1e7425b7d01", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/phase3_production_audit.spec.ts:11"}, "properties": {"repobilityId": "36eeb79f2037aca9", "scanner": "scanner-primary", "fingerprint": "2f21b1e7425b7d01", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-332b56b1f7c2ea33", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/test/easypanel_direct.spec.ts:19"}, "properties": {"repobilityId": "8189e88d86e34b37", "scanner": "scanner-primary", "fingerprint": "332b56b1f7c2ea33", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c5a8cf46a5268272", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/scripts/cleanup-phone-suffixes.js:16"}, "properties": {"repobilityId": "3bd065c7cce0ab39", "scanner": "scanner-primary", "fingerprint": "c5a8cf46a5268272", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-19883daeb3a2d9ae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/prisma/seed.ts:7"}, "properties": {"repobilityId": "27dfaad4f2817ee6", "scanner": "scanner-primary", "fingerprint": "19883daeb3a2d9ae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7dbf9fc5fcf44649", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/test-webhooks.ts:10"}, "properties": {"repobilityId": "edbd2758611a404f", "scanner": "scanner-primary", "fingerprint": "7dbf9fc5fcf44649", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4cb3112a7f0815f5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/tmp-check-orders.ts:6"}, "properties": {"repobilityId": "433eab69c25fe511", "scanner": "scanner-primary", "fingerprint": "4cb3112a7f0815f5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ae18218d69f58ca6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/tmp-fix-workspaces.ts:6"}, "properties": {"repobilityId": "0ab62be45a778bc9", "scanner": "scanner-primary", "fingerprint": "ae18218d69f58ca6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-874f0f0860aa12c8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/tmp-check-skus.ts:11"}, "properties": {"repobilityId": "df8475c4eab7c15c", "scanner": "scanner-primary", "fingerprint": "874f0f0860aa12c8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-efd65705a667f2dd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/index.ts:2"}, "properties": {"repobilityId": "7333f0a3efc49d83", "scanner": "scanner-primary", "fingerprint": "efd65705a667f2dd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0ec5ec0452c53c42", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/tmp-check-dates.ts:10"}, "properties": {"repobilityId": "4608bed837b05aef", "scanner": "scanner-primary", "fingerprint": "0ec5ec0452c53c42", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f3015da2e8cfc0df", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/tmp-check-products.ts:6"}, "properties": {"repobilityId": "fcb91534aca87c82", "scanner": "scanner-primary", "fingerprint": "f3015da2e8cfc0df", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ec840039213ad079", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/tmp-list-products.ts:6"}, "properties": {"repobilityId": "bc3c1d1856c01a6b", "scanner": "scanner-primary", "fingerprint": "ec840039213ad079", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-531b6dc0381c9be5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/tmp-trigger-alert.ts:8"}, "properties": {"repobilityId": "d8fc37e5757e8dde", "scanner": "scanner-primary", "fingerprint": "531b6dc0381c9be5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d44668c69c237cbc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/tmp-workspace-check.ts:6"}, "properties": {"repobilityId": "20c77fd40f9a81a6", "scanner": "scanner-primary", "fingerprint": "d44668c69c237cbc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a7f1ab378ac66b7f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/tmp-check-channels.ts:7"}, "properties": {"repobilityId": "a8356a44fb2ff43a", "scanner": "scanner-primary", "fingerprint": "a7f1ab378ac66b7f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0f97541e6a7991a2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/middleware/planGate.ts:15"}, "properties": {"repobilityId": "27da78fa48ffe63e", "scanner": "scanner-primary", "fingerprint": "0f97541e6a7991a2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c9daa3d2c0a3b60", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/test/setup.ts:14"}, "properties": {"repobilityId": "3d33cfdb42fbe039", "scanner": "scanner-primary", "fingerprint": "3c9daa3d2c0a3b60", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-83946c763905e771", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/scripts/list_campaigns.ts:16"}, "properties": {"repobilityId": "1eac6992d0cc0b32", "scanner": "scanner-primary", "fingerprint": "83946c763905e771", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-73bdfa15286e1607", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/scripts/check_db_status.ts:4"}, "properties": {"repobilityId": "0871932c93e10004", "scanner": "scanner-primary", "fingerprint": "73bdfa15286e1607", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-385c1007eac82ee0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/scripts/clean_mocks.ts:4"}, "properties": {"repobilityId": "9790bd9b5d4d427f", "scanner": "scanner-primary", "fingerprint": "385c1007eac82ee0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f0296a59bfb95f16", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/scripts/setup-paypal-plans.ts:57"}, "properties": {"repobilityId": "f71abce9758ac18d", "scanner": "scanner-primary", "fingerprint": "f0296a59bfb95f16", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c109c1a44212987b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/scripts/list_products.ts:5"}, "properties": {"repobilityId": "d22b32ea457eec57", "scanner": "scanner-primary", "fingerprint": "c109c1a44212987b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-615d42e972043802", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/lib/db-check.ts:7"}, "properties": {"repobilityId": "cb8fea4c02e87493", "scanner": "scanner-primary", "fingerprint": "615d42e972043802", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-31e78e6d72536392", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/lib/redis.ts:19"}, "properties": {"repobilityId": "2e015dd655d860e0", "scanner": "scanner-primary", "fingerprint": "31e78e6d72536392", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2a50cc2804876f92", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/lib/whatsapp/WhatsAppManager.ts:31"}, "properties": {"repobilityId": "d6e77f476b3b9824", "scanner": "scanner-primary", "fingerprint": "2a50cc2804876f92", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-baf45e93f87b65b1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/routes/auth.ts:119"}, "properties": {"repobilityId": "bc82522777b6df4e", "scanner": "scanner-primary", "fingerprint": "baf45e93f87b65b1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-934010db71e0e4c1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/routes/composio.ts:78"}, "properties": {"repobilityId": "4c935cc101292ba7", "scanner": "scanner-primary", "fingerprint": "934010db71e0e4c1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-77389686911a0179", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/routes/tiktok.ts:14"}, "properties": {"repobilityId": "92335cf35f7982bb", "scanner": "scanner-primary", "fingerprint": "77389686911a0179", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9146d0dc0cf86bca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/routes/payments.ts:49"}, "properties": {"repobilityId": "a2d219bafd248083", "scanner": "scanner-primary", "fingerprint": "9146d0dc0cf86bca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a1331f8a8cb6b8a5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/routes/meta.ts:16"}, "properties": {"repobilityId": "93456d3f9719887d", "scanner": "scanner-primary", "fingerprint": "a1331f8a8cb6b8a5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2984399f6ef39e5f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/modules/ai-agent/followup.cron.ts:12"}, "properties": {"repobilityId": "8ebc1f52839c6f62", "scanner": "scanner-primary", "fingerprint": "2984399f6ef39e5f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cabf8a2a6291d033", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/modules/ai-agent/test-ai-flow.ts:9"}, "properties": {"repobilityId": "1749fcd0e80f9997", "scanner": "scanner-primary", "fingerprint": "cabf8a2a6291d033", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-59fb884aebae0267", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/modules/ai-agent/ai.service.ts:203"}, "properties": {"repobilityId": "996271636a400cc9", "scanner": "scanner-primary", "fingerprint": "59fb884aebae0267", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c50257a614979c32", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/modules/analytics/analytics.cron.ts:21"}, "properties": {"repobilityId": "7e0f4a6fab8b7129", "scanner": "scanner-primary", "fingerprint": "c50257a614979c32", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f51be502eaaaeaa9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/modules/meta-ai/knowledge.controller.ts:29"}, "properties": {"repobilityId": "f20e5ce65f9f3b5b", "scanner": "scanner-primary", "fingerprint": "f51be502eaaaeaa9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1104a3f19ac7da52", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 Backend/src/modules/crm/lifecycle.service.ts:27"}, "properties": {"repobilityId": "9b657fe6dbe2a369", "scanner": "scanner-primary", "fingerprint": "1104a3f19ac7da52", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e1fe53bdcacc6f17", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/components/layout/app-sidebar.tsx:181"}, "properties": {"repobilityId": "150ce4eb4ee4ac30", "scanner": "scanner-primary", "fingerprint": "e1fe53bdcacc6f17", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-589c4f011828a787", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/components/layout/admin-sidebar.tsx:113"}, "properties": {"repobilityId": "1cab68e8c28d36b8", "scanner": "scanner-primary", "fingerprint": "589c4f011828a787", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-790f6e2a79358480", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/components/dashboard/AndromedaOptimization.tsx:408"}, "properties": {"repobilityId": "24ea55c50ef55cbd", "scanner": "scanner-primary", "fingerprint": "790f6e2a79358480", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b81749bc795b6b61", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 metria-metrics/Frontend/src/components/messaging/WhatsAppQRDialog.tsx:29"}, "properties": {"repobilityId": "658e15b833efedc1", "scanner": "scanner-primary", "fingerprint": "b81749bc795b6b61", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-efe92b0201ecbb67", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/components/bots/AgentSetupWizard.tsx:898"}, "properties": {"repobilityId": "74d37cbdbe1c5192", "scanner": "scanner-primary", "fingerprint": "efe92b0201ecbb67", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a78fbb88818d2b0b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 metria-metrics/Frontend/src/components/pricing/mercadopago-brick.tsx:57"}, "properties": {"repobilityId": "3fe5780e00dc488b", "scanner": "scanner-primary", "fingerprint": "a78fbb88818d2b0b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-77ff039c48ab43e9", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 metria-metrics/Frontend/src/app/layout.tsx:53"}, "properties": {"repobilityId": "dbd43fb0f661861b", "scanner": "scanner-primary", "fingerprint": "77ff039c48ab43e9", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-28b3fd6d7da910c6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/app/dashboard/settings/PageClient.tsx:461"}, "properties": {"repobilityId": "883e4b7ed051e19a", "scanner": "scanner-primary", "fingerprint": "28b3fd6d7da910c6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-25975aa717e344b1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/app/dashboard/tiktok-ads/PageClient.tsx:392"}, "properties": {"repobilityId": "c6c8f3ba0b1b5872", "scanner": "scanner-primary", "fingerprint": "25975aa717e344b1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-deed2cb16f5c4e38", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/app/dashboard/crm/appointments/AppointmentsClient.tsx:158"}, "properties": {"repobilityId": "5a952f6e406916ac", "scanner": "scanner-primary", "fingerprint": "deed2cb16f5c4e38", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a764f029d721578d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/app/dashboard/sales/PageClient.tsx:303"}, "properties": {"repobilityId": "ce119941c795b935", "scanner": "scanner-primary", "fingerprint": "a764f029d721578d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0240cd67e05195ce", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/app/dashboard/inbox/components/ContactPanel.tsx:71"}, "properties": {"repobilityId": "6d4bceec695f713b", "scanner": "scanner-primary", "fingerprint": "0240cd67e05195ce", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1fe58c3628533a93", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/app/dashboard/inbox/components/ConversationList.tsx:104"}, "properties": {"repobilityId": "9bc1aaaae0b2a084", "scanner": "scanner-primary", "fingerprint": "1fe58c3628533a93", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1e9a2f17762eff90", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 metria-metrics/Frontend/src/app/admin/workspaces/page.tsx:319"}, "properties": {"repobilityId": "296382caecd2ddca", "scanner": "scanner-primary", "fingerprint": "1e9a2f17762eff90", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ab26710d57bc9c24", "level": "warning", "message": {"text": "Dockerfile runs as root: Backend/Dockerfile"}, "properties": {"repobilityId": "d5f1cee0405ad7e3", "scanner": "scanner-primary", "fingerprint": "ab26710d57bc9c24", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-073bd614cafa1630", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-slim"}, "properties": {"repobilityId": "16bf231a9c94d8e2", "scanner": "scanner-primary", "fingerprint": "073bd614cafa1630", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/Dockerfile"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-073bd614cafa1630", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-slim"}, "properties": {"repobilityId": "c48938c50d576024", "scanner": "scanner-primary", "fingerprint": "073bd614cafa1630", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/Dockerfile"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-aa1507cc0f0c0c62", "level": "error", "message": {"text": "Runtime dotenv file present in repo: Backend/.env"}, "properties": {"repobilityId": "aac93d87bdcf48d9", "scanner": "scanner-primary", "fingerprint": "aa1507cc0f0c0c62", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets", "config", "env-file", "runtime-env", "env_file_with_secret"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/.env"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4d7de62aed59139b", "level": "error", "message": {"text": "Possible secret in Backend/setup_wario_user.ts"}, "properties": {"repobilityId": "8132dc0aece3128d", "scanner": "scanner-primary", "fingerprint": "4d7de62aed59139b", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/setup_wario_user.ts"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-76651b6a4d8acb70", "level": "error", "message": {"text": "Possible secret in Backend/generate_hash.ts"}, "properties": {"repobilityId": "30e4a7db5c5717c6", "scanner": "scanner-primary", "fingerprint": "76651b6a4d8acb70", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/generate_hash.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-5fa5ffdb44652c83", "level": "error", "message": {"text": "Possible secret in Backend/test/metria_db_expose.spec.ts"}, "properties": {"repobilityId": "3002426d38d5af3d", "scanner": "scanner-primary", "fingerprint": "5fa5ffdb44652c83", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/metria_db_expose.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-365d19e0f2d3dc3d", "level": "error", "message": {"text": "Possible secret in Backend/test/production_update_fix.spec.ts"}, "properties": {"repobilityId": "1e9892d500198adc", "scanner": "scanner-primary", "fingerprint": "365d19e0f2d3dc3d", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/production_update_fix.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-d98360d482dfc536", "level": "error", "message": {"text": "Possible secret in Backend/test/easypanel_deploy_logs_check.spec.ts"}, "properties": {"repobilityId": "65661fb4ffef4399", "scanner": "scanner-primary", "fingerprint": "d98360d482dfc536", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/easypanel_deploy_logs_check.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-bdb4c12997254252", "level": "error", "message": {"text": "Possible secret in Backend/test/easypanel_retry.spec.ts"}, "properties": {"repobilityId": "5395f564915c16b4", "scanner": "scanner-primary", "fingerprint": "bdb4c12997254252", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/easypanel_retry.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-fe0b9832e453a02a", "level": "error", "message": {"text": "Possible secret in Backend/test/production_setup_audit.spec.ts"}, "properties": {"repobilityId": "a004866b3cad4645", "scanner": "scanner-primary", "fingerprint": "fe0b9832e453a02a", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/production_setup_audit.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-a139fd78968ee523", "level": "error", "message": {"text": "Possible secret in Backend/test/metria_prod_sql.spec.ts"}, "properties": {"repobilityId": "a25836b623b67eda", "scanner": "scanner-primary", "fingerprint": "a139fd78968ee523", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/metria_prod_sql.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-b2274fcda400f801", "level": "error", "message": {"text": "Possible secret in Backend/test/metria_direct_fix.spec.ts"}, "properties": {"repobilityId": "75fc7db2874283e5", "scanner": "scanner-primary", "fingerprint": "b2274fcda400f801", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/metria_direct_fix.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-0264cdad4c57b618", "level": "error", "message": {"text": "Possible secret in Backend/test/easypanel_audit.spec.ts"}, "properties": {"repobilityId": "bb41cde94e0481ec", "scanner": "scanner-primary", "fingerprint": "0264cdad4c57b618", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/easypanel_audit.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-4bb35d01d6c30056", "level": "error", "message": {"text": "Possible secret in Backend/test/metria_apply_fix.spec.ts"}, "properties": {"repobilityId": "9a0a1aafa463e162", "scanner": "scanner-primary", "fingerprint": "4bb35d01d6c30056", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/metria_apply_fix.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-117d12fe85728ea4", "level": "error", "message": {"text": "Possible secret in Backend/test/easypanel_diagnostic.spec.ts"}, "properties": {"repobilityId": "88380427e93ec5d4", "scanner": "scanner-primary", "fingerprint": "117d12fe85728ea4", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/easypanel_diagnostic.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-7ff670c53dbd00b5", "level": "error", "message": {"text": "Possible secret in Backend/test/metria_domains.spec.ts"}, "properties": {"repobilityId": "379e57ec87c0cdb9", "scanner": "scanner-primary", "fingerprint": "7ff670c53dbd00b5", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/metria_domains.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-f9edb2d099269872", "level": "error", "message": {"text": "Possible secret in Backend/test/easypanel_force_expose.spec.ts"}, "properties": {"repobilityId": "2c403b5898b0ec64", "scanner": "scanner-primary", "fingerprint": "f9edb2d099269872", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/easypanel_force_expose.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-692ef91bcd7e2099", "level": "error", "message": {"text": "Possible secret in Backend/test/easypanel_deep.spec.ts"}, "properties": {"repobilityId": "2c805f821f5a6682", "scanner": "scanner-primary", "fingerprint": "692ef91bcd7e2099", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/easypanel_deep.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-68c749f61a7f7042", "level": "error", "message": {"text": "Possible secret in Backend/test/metria_db_inspect.spec.ts"}, "properties": {"repobilityId": "ef01a6b40499261a", "scanner": "scanner-primary", "fingerprint": "68c749f61a7f7042", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/metria_db_inspect.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-49ad6c993365be2d", "level": "error", "message": {"text": "Possible secret in Backend/test/metria_upgrade_plan.spec.ts"}, "properties": {"repobilityId": "defb8fa326dfe287", "scanner": "scanner-primary", "fingerprint": "49ad6c993365be2d", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/metria_upgrade_plan.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-621a1935ab70264e", "level": "error", "message": {"text": "Possible secret in Backend/test/easypanel_nav_debug.spec.ts"}, "properties": {"repobilityId": "1a7c52ef5be5d961", "scanner": "scanner-primary", "fingerprint": "621a1935ab70264e", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/easypanel_nav_debug.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-a6b60f0659226281", "level": "error", "message": {"text": "Possible secret in Backend/test/easypanel_redeploy.spec.ts"}, "properties": {"repobilityId": "51e2f236f90efa9c", "scanner": "scanner-primary", "fingerprint": "a6b60f0659226281", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/easypanel_redeploy.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-591e917cd139b4f5", "level": "error", "message": {"text": "Possible secret in Backend/test/metria_db_unmask_v2.spec.ts"}, "properties": {"repobilityId": "3f6b033435ae4d83", "scanner": "scanner-primary", "fingerprint": "591e917cd139b4f5", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/metria_db_unmask_v2.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-e7aa0b464646a5ee", "level": "error", "message": {"text": "Possible secret in Backend/test/easypanel_repair.spec.ts"}, "properties": {"repobilityId": "2424a8947067a0a6", "scanner": "scanner-primary", "fingerprint": "e7aa0b464646a5ee", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/easypanel_repair.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-2f1cc6f91e0f3e53", "level": "error", "message": {"text": "Possible secret in Backend/test/metria_realtime_logs.spec.ts"}, "properties": {"repobilityId": "385a747e6e6db09d", "scanner": "scanner-primary", "fingerprint": "2f1cc6f91e0f3e53", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/metria_realtime_logs.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-bc454a78703ab83f", "level": "error", "message": {"text": "Possible secret in Backend/test/metria_config.spec.ts"}, "properties": {"repobilityId": "0c8833b123636a3d", "scanner": "scanner-primary", "fingerprint": "bc454a78703ab83f", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/metria_config.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-9c3da127d5acd3df", "level": "error", "message": {"text": "Possible secret in Backend/test/metria_logs_hunting.spec.ts"}, "properties": {"repobilityId": "3e8e456bb96f3f8b", "scanner": "scanner-primary", "fingerprint": "9c3da127d5acd3df", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/metria_logs_hunting.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-5a8cde1a53450ef7", "level": "error", "message": {"text": "Possible secret in Backend/test/easypanel_advanced_check.spec.ts"}, "properties": {"repobilityId": "287f975a7ca64c0b", "scanner": "scanner-primary", "fingerprint": "5a8cde1a53450ef7", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/easypanel_advanced_check.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-c550203517d4010e", "level": "error", "message": {"text": "Possible secret in Backend/test/metria_port_repair.spec.ts"}, "properties": {"repobilityId": "9d259c1fc6765e85", "scanner": "scanner-primary", "fingerprint": "c550203517d4010e", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/metria_port_repair.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-8cb775c58ab04760", "level": "error", "message": {"text": "Possible secret in Backend/test/easypanel_config_github.spec.ts"}, "properties": {"repobilityId": "2875920d8ccd27a5", "scanner": "scanner-primary", "fingerprint": "8cb775c58ab04760", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/easypanel_config_github.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-0fecece10610befb", "level": "error", "message": {"text": "Possible secret in Backend/test/metria_env.spec.ts"}, "properties": {"repobilityId": "c6c111356546c89c", "scanner": "scanner-primary", "fingerprint": "0fecece10610befb", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/metria_env.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-11a3352e91ce051a", "level": "error", "message": {"text": "Possible secret in Backend/test/metria_env_extract.spec.ts"}, "properties": {"repobilityId": "08498aaaa5426007", "scanner": "scanner-primary", "fingerprint": "11a3352e91ce051a", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/metria_env_extract.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-49e1d481afacf3ff", "level": "error", "message": {"text": "Possible secret in Backend/test/metria_console_update.spec.ts"}, "properties": {"repobilityId": "ab44cff9081a9d7a", "scanner": "scanner-primary", "fingerprint": "49e1d481afacf3ff", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/metria_console_update.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-40948089d4b25596", "level": "error", "message": {"text": "Possible secret in Backend/test/easypanel_manual_deploy.spec.ts"}, "properties": {"repobilityId": "aa0596fbd1c64b45", "scanner": "scanner-primary", "fingerprint": "40948089d4b25596", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/easypanel_manual_deploy.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-a10a4622299f74b3", "level": "error", "message": {"text": "Possible secret in Backend/test/metria_logs.spec.ts"}, "properties": {"repobilityId": "31d98f419a724bc8", "scanner": "scanner-primary", "fingerprint": "a10a4622299f74b3", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/metria_logs.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-1da954c6bddc8e96", "level": "error", "message": {"text": "Possible secret in Backend/test/metria_infra_audit.spec.ts"}, "properties": {"repobilityId": "49322dfa0d05378d", "scanner": "scanner-primary", "fingerprint": "1da954c6bddc8e96", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/metria_infra_audit.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-d8c5b7c046018c9c", "level": "error", "message": {"text": "Possible secret in Backend/test/easypanel_check_version.spec.ts"}, "properties": {"repobilityId": "2f3002c56b239b4e", "scanner": "scanner-primary", "fingerprint": "d8c5b7c046018c9c", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/easypanel_check_version.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-89b24600853b0ade", "level": "error", "message": {"text": "Possible secret in Backend/test/easypanel_app_logs.spec.ts"}, "properties": {"repobilityId": "8777828561305618", "scanner": "scanner-primary", "fingerprint": "89b24600853b0ade", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/easypanel_app_logs.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-6626945720d87ab7", "level": "error", "message": {"text": "Possible secret in Backend/test/easypanel_deployments.spec.ts"}, "properties": {"repobilityId": "69485d897cfc7b5b", "scanner": "scanner-primary", "fingerprint": "6626945720d87ab7", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/easypanel_deployments.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-62bef59906a9d6e8", "level": "error", "message": {"text": "Possible secret in Backend/test/metria_prod_sql_precision.spec.ts"}, "properties": {"repobilityId": "73849ef6d9e6d0e9", "scanner": "scanner-primary", "fingerprint": "62bef59906a9d6e8", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/metria_prod_sql_precision.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-3f97134da7855c24", "level": "error", "message": {"text": "Possible secret in Backend/test/frontend_diagnostic.spec.ts"}, "properties": {"repobilityId": "25d6c1836115abb5", "scanner": "scanner-primary", "fingerprint": "3f97134da7855c24", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/frontend_diagnostic.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-bffe45a5e758fae9", "level": "error", "message": {"text": "Possible secret in Backend/test/metria_mp_logs.spec.ts"}, "properties": {"repobilityId": "3df5d283e85c9026", "scanner": "scanner-primary", "fingerprint": "bffe45a5e758fae9", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/metria_mp_logs.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-a82ca1f74d3305ad", "level": "error", "message": {"text": "Possible secret in Backend/test/easypanel_logs.spec.ts"}, "properties": {"repobilityId": "5e8814810688ec90", "scanner": "scanner-primary", "fingerprint": "a82ca1f74d3305ad", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/easypanel_logs.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-a89e923e927a9a41", "level": "error", "message": {"text": "Possible secret in Backend/test/extract_token.spec.ts"}, "properties": {"repobilityId": "3d146f9d6b85189a", "scanner": "scanner-primary", "fingerprint": "a89e923e927a9a41", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/extract_token.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-f4a99c4adfb02b39", "level": "error", "message": {"text": "Possible secret in Backend/test/easypanel_force_rebuild.spec.ts"}, "properties": {"repobilityId": "d0629840e0463e4a", "scanner": "scanner-primary", "fingerprint": "f4a99c4adfb02b39", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/easypanel_force_rebuild.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-4f22c26ba5c9a841", "level": "error", "message": {"text": "Possible secret in Backend/test/easypanel_github_source.spec.ts"}, "properties": {"repobilityId": "e1273efea0b2c0eb", "scanner": "scanner-primary", "fingerprint": "4f22c26ba5c9a841", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/easypanel_github_source.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-ef56784abdbd57da", "level": "error", "message": {"text": "Possible secret in Backend/test/easypanel_dump.spec.ts"}, "properties": {"repobilityId": "ddca0b56de5eadd3", "scanner": "scanner-primary", "fingerprint": "ef56784abdbd57da", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/easypanel_dump.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-a09ebac2e9352d9b", "level": "error", "message": {"text": "Possible secret in Backend/test/easypanel_source_check.spec.ts"}, "properties": {"repobilityId": "125a35e0f15feab9", "scanner": "scanner-primary", "fingerprint": "a09ebac2e9352d9b", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/easypanel_source_check.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-18006a4d15d74228", "level": "error", "message": {"text": "Possible secret in Backend/test/easypanel_terminal_hunt.spec.ts"}, "properties": {"repobilityId": "03c38784fe4d3cd9", "scanner": "scanner-primary", "fingerprint": "18006a4d15d74228", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/easypanel_terminal_hunt.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-02b2b28c3254d430", "level": "error", "message": {"text": "Possible secret in Backend/test/frontend_trace.spec.ts"}, "properties": {"repobilityId": "37bb948b93ddeed5", "scanner": "scanner-primary", "fingerprint": "02b2b28c3254d430", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/frontend_trace.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-e39aed270dadc299", "level": "error", "message": {"text": "Possible secret in Backend/test/metria_visual_audit.spec.ts"}, "properties": {"repobilityId": "84ee1af51068acdd", "scanner": "scanner-primary", "fingerprint": "e39aed270dadc299", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/metria_visual_audit.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-fb3fbe5c44c0c187", "level": "error", "message": {"text": "Possible secret in Backend/test/metria_port_audit.spec.ts"}, "properties": {"repobilityId": "f96e3ccab1d3df4d", "scanner": "scanner-primary", "fingerprint": "fb3fbe5c44c0c187", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/metria_port_audit.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-9afacd72f0953a2f", "level": "error", "message": {"text": "Possible secret in Backend/test/easypanel_maintenance_check.spec.ts"}, "properties": {"repobilityId": "ff33b5476b01c83b", "scanner": "scanner-primary", "fingerprint": "9afacd72f0953a2f", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/easypanel_maintenance_check.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-27f0977066846507", "level": "error", "message": {"text": "Possible secret in Backend/test/easypanel_direct_fix.spec.ts"}, "properties": {"repobilityId": "2a896b7867b7ba0e", "scanner": "scanner-primary", "fingerprint": "27f0977066846507", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/easypanel_direct_fix.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-fa226efbd006b4b0", "level": "error", "message": {"text": "Possible secret in Backend/test/easypanel_discovery.spec.ts"}, "properties": {"repobilityId": "cc9f36f5ff8480e8", "scanner": "scanner-primary", "fingerprint": "fa226efbd006b4b0", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/easypanel_discovery.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-38a3c8348ba58e14", "level": "error", "message": {"text": "Possible secret in Backend/test/frontend_prod.spec.ts"}, "properties": {"repobilityId": "0101f399a88a89c2", "scanner": "scanner-primary", "fingerprint": "38a3c8348ba58e14", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/frontend_prod.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-030b9086c8ac0e9d", "level": "error", "message": {"text": "Possible secret in Backend/test/metria_db_unmask.spec.ts"}, "properties": {"repobilityId": "34d96bbbd1c6b762", "scanner": "scanner-primary", "fingerprint": "030b9086c8ac0e9d", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/metria_db_unmask.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-41b51f18921d4f60", "level": "error", "message": {"text": "Possible secret in Backend/test/metria_console_update_v2.spec.ts"}, "properties": {"repobilityId": "118c4c2db2da4212", "scanner": "scanner-primary", "fingerprint": "41b51f18921d4f60", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/metria_console_update_v2.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-9857b04e56935b05", "level": "error", "message": {"text": "Possible secret in Backend/test/metria_db_check.spec.ts"}, "properties": {"repobilityId": "4ea7aa3982252ce0", "scanner": "scanner-primary", "fingerprint": "9857b04e56935b05", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/metria_db_check.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-17a34e49cc55d656", "level": "error", "message": {"text": "Possible secret in Backend/test/easypanel_html.spec.ts"}, "properties": {"repobilityId": "529754c92a04b125", "scanner": "scanner-primary", "fingerprint": "17a34e49cc55d656", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/easypanel_html.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-3f1988e5b18ce4d4", "level": "error", "message": {"text": "Possible secret in Backend/test/metria_db_credentials.spec.ts"}, "properties": {"repobilityId": "b7afc67651c17960", "scanner": "scanner-primary", "fingerprint": "3f1988e5b18ce4d4", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/metria_db_credentials.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-e7e224ebb0108ac7", "level": "error", "message": {"text": "Possible secret in Backend/test/metria_repair.spec.ts"}, "properties": {"repobilityId": "86d230b9c10ef8c5", "scanner": "scanner-primary", "fingerprint": "e7e224ebb0108ac7", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/metria_repair.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-7e7b5854e6d296ef", "level": "error", "message": {"text": "Possible secret in Backend/test/metria_prod_validation.spec.ts"}, "properties": {"repobilityId": "17955946c5bbfcb6", "scanner": "scanner-primary", "fingerprint": "7e7b5854e6d296ef", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/metria_prod_validation.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-d28f640110dc7178", "level": "error", "message": {"text": "Possible secret in Backend/test/get_prod_token.spec.ts"}, "properties": {"repobilityId": "5f9338502626725e", "scanner": "scanner-primary", "fingerprint": "d28f640110dc7178", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/get_prod_token.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-264d9c25ea2bcf2d", "level": "error", "message": {"text": "Possible secret in Backend/test/easypanel_projects.spec.ts"}, "properties": {"repobilityId": "f2067cf35c66f305", "scanner": "scanner-primary", "fingerprint": "264d9c25ea2bcf2d", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/easypanel_projects.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-4d859fedf2608f53", "level": "error", "message": {"text": "Possible secret in Backend/test/phase3_production_audit.spec.ts"}, "properties": {"repobilityId": "6de695a0140a63b5", "scanner": "scanner-primary", "fingerprint": "4d859fedf2608f53", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/phase3_production_audit.spec.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-27959d1f70170c60", "level": "error", "message": {"text": "Possible secret in Backend/test/easypanel_direct.spec.ts"}, "properties": {"repobilityId": "559485ed506af64b", "scanner": "scanner-primary", "fingerprint": "27959d1f70170c60", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/test/easypanel_direct.spec.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-e509bd42869feaa8", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in Backend/src/app.ts:38"}, "properties": {"repobilityId": "bf5bcf64c148b34c", "scanner": "scanner-primary", "fingerprint": "e509bd42869feaa8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Backend/src/app.ts"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-d2d5e70cb46e6571", "level": "error", "message": {"text": "Possible secret in metria-metrics/Frontend/test/starter-bypass.spec.ts"}, "properties": {"repobilityId": "93c4af773b1f6443", "scanner": "scanner-primary", "fingerprint": "d2d5e70cb46e6571", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "metria-metrics/Frontend/test/starter-bypass.spec.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-8248189be7f31dde", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in metria-metrics/Frontend/src/components/layout/app-sidebar.tsx:100"}, "properties": {"repobilityId": "ab56548ee18382f4", "scanner": "scanner-primary", "fingerprint": "8248189be7f31dde", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "metria-metrics/Frontend/src/components/layout/app-sidebar.tsx"}, "region": {"startLine": 100}}}]}, {"ruleId": "scanner-324e02df26ddb620", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in metria-metrics/Frontend/src/components/pricing/mercadopago-brick.tsx:85"}, "properties": {"repobilityId": "c0dd465875e80084", "scanner": "scanner-primary", "fingerprint": "324e02df26ddb620", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "metria-metrics/Frontend/src/components/pricing/mercadopago-brick.tsx"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-5606800043949bf5", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in metria-metrics/Frontend/src/app/layout.tsx:53"}, "properties": {"repobilityId": "b43a00b52f2e62a6", "scanner": "scanner-primary", "fingerprint": "5606800043949bf5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "metria-metrics/Frontend/src/app/layout.tsx"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-4fb1f2e765da239d", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in metria-metrics/Frontend/src/app/force-password/page.tsx:49"}, "properties": {"repobilityId": "f9a7cedc82dc296c", "scanner": "scanner-primary", "fingerprint": "4fb1f2e765da239d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "metria-metrics/Frontend/src/app/force-password/page.tsx"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-21d619c5b3e40a3e", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in metria-metrics/Frontend/src/app/login/page.tsx:24"}, "properties": {"repobilityId": "e7fc58a83483204b", "scanner": "scanner-primary", "fingerprint": "21d619c5b3e40a3e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "metria-metrics/Frontend/src/app/login/page.tsx"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-508c1f99f961a85d", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in metria-metrics/Frontend/src/app/signup/page.tsx:23"}, "properties": {"repobilityId": "1cd5f00b99bc7e97", "scanner": "scanner-primary", "fingerprint": "508c1f99f961a85d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "metria-metrics/Frontend/src/app/signup/page.tsx"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-809676bc1c07aa09", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in metria-metrics/Frontend/src/app/admin/workspaces/page.tsx:88"}, "properties": {"repobilityId": "0391e30aad687a6a", "scanner": "scanner-primary", "fingerprint": "809676bc1c07aa09", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "metria-metrics/Frontend/src/app/admin/workspaces/page.tsx"}, "region": {"startLine": 88}}}]}, {"ruleId": "scanner-f89ec686bdfc65a7", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in metria-metrics/Frontend/src/app/onboarding/plans/page.tsx:70"}, "properties": {"repobilityId": "06789b6af9800c89", "scanner": "scanner-primary", "fingerprint": "f89ec686bdfc65a7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "metria-metrics/Frontend/src/app/onboarding/plans/page.tsx"}, "region": {"startLine": 70}}}]}, {"ruleId": "scanner-6e7ccd082a81f81c", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in metria-metrics/Frontend/src/store/useUserStore.ts:97"}, "properties": {"repobilityId": "b6079945d92492b8", "scanner": "scanner-primary", "fingerprint": "6e7ccd082a81f81c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "metria-metrics/Frontend/src/store/useUserStore.ts"}, "region": {"startLine": 97}}}]}, {"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-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "ad29b21743a72804", "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": "539070ec987d35f4", "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": "ea5cbe3c480be22d", "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": "186ebb5fb2dc7d16", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "712841bc4f3800e2", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "64936cb6ae2c289d", "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": "8442bd5680870e9b", "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": "c97f2a23a9d87ad9", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-e725d2ab884fbd49", "level": "note", "message": {"text": "Multiple root agent instruction files without precedence"}, "properties": {"repobilityId": "1953db6c89508d22", "scanner": "scanner-primary", "fingerprint": "e725d2ab884fbd49", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["agent-instructions", "governance"]}}, {"ruleId": "scanner-fca29ac3af6f2f11", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/sync_orders_heal.ts:34"}, "properties": {"repobilityId": "d451be37e84fa243", "scanner": "scanner-primary", "fingerprint": "fca29ac3af6f2f11", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5cd2ad09ffb2a0e1", "level": "note", "message": {"text": "Legacy-named symbol `unmasked_credentials_v2` in Backend/test/metria_db_unmask_v2.spec.ts:51"}, "properties": {"repobilityId": "a9207c2a2263863b", "scanner": "scanner-primary", "fingerprint": "5cd2ad09ffb2a0e1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0eee15e74c84a90e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/test/get_prod_token.spec.ts:22"}, "properties": {"repobilityId": "66e18c7988c75342", "scanner": "scanner-primary", "fingerprint": "0eee15e74c84a90e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1cbebda52c7cb6d3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/test-webhooks.ts:64"}, "properties": {"repobilityId": "495ed709e5969b4b", "scanner": "scanner-primary", "fingerprint": "1cbebda52c7cb6d3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c7042296d0cfdb11", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/scripts/setup-paypal-plans.ts:23"}, "properties": {"repobilityId": "8476683fdc65c1b5", "scanner": "scanner-primary", "fingerprint": "c7042296d0cfdb11", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-68c8836862bc387c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/lib/oauth/providers/shopify.ts:56"}, "properties": {"repobilityId": "5fda7953f47f8c87", "scanner": "scanner-primary", "fingerprint": "68c8836862bc387c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-103c6a268c51edbb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/lib/oauth/providers/meta.ts:49"}, "properties": {"repobilityId": "6734cf6dcdc3d9cb", "scanner": "scanner-primary", "fingerprint": "103c6a268c51edbb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-beede7afa7cbc2de", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/lib/oauth/providers/google.ts:39"}, "properties": {"repobilityId": "07047b1e8b743394", "scanner": "scanner-primary", "fingerprint": "beede7afa7cbc2de", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-04772b4a216960a1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/routes/shopify.ts:177"}, "properties": {"repobilityId": "e85492193bbab221", "scanner": "scanner-primary", "fingerprint": "04772b4a216960a1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f901fc9547de8ecb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/routes/tiktok.ts:79"}, "properties": {"repobilityId": "b9512025cc04b41d", "scanner": "scanner-primary", "fingerprint": "f901fc9547de8ecb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0c3f67353689f9ed", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/routes/payments.ts:17"}, "properties": {"repobilityId": "8982e2990f58f548", "scanner": "scanner-primary", "fingerprint": "0c3f67353689f9ed", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-da83a90d447cd2e3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/routes/meta.ts:230"}, "properties": {"repobilityId": "1f485dc2b1a99b43", "scanner": "scanner-primary", "fingerprint": "da83a90d447cd2e3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fab41cd899fa4da2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/routes/google.ts:46"}, "properties": {"repobilityId": "c72ba0306179081a", "scanner": "scanner-primary", "fingerprint": "fab41cd899fa4da2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5faf7c5a27f53983", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/modules/messaging/channels/messenger.service.ts:34"}, "properties": {"repobilityId": "dc0ea10a7d2a079d", "scanner": "scanner-primary", "fingerprint": "5faf7c5a27f53983", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e52de4fd907cf155", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/modules/messaging/channels/telegram.service.ts:72"}, "properties": {"repobilityId": "248487bd1e22606b", "scanner": "scanner-primary", "fingerprint": "e52de4fd907cf155", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-41e68eb6843c8605", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/modules/messaging/channels/instagram.service.ts:38"}, "properties": {"repobilityId": "cfacd9144b4e72ad", "scanner": "scanner-primary", "fingerprint": "41e68eb6843c8605", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-239790f398709ba7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 Backend/src/modules/messaging/channels/whatsapp.service.ts:38"}, "properties": {"repobilityId": "1ab906a8bdec9872", "scanner": "scanner-primary", "fingerprint": "239790f398709ba7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f808a4ef3e1071fb", "level": "note", "message": {"text": "14 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "ce6b2ec4be4ec75a", "scanner": "scanner-primary", "fingerprint": "f808a4ef3e1071fb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-79c386a7fce5f76f", "level": "error", "message": {"text": "Dangling fetch: POST https://api.mercadopago.com/preapproval (Backend/test_mp_direct.js:25)"}, "properties": {"repobilityId": "4b9be9b0f13906bb", "scanner": "scanner-primary", "fingerprint": "79c386a7fce5f76f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ff66da247c97990e", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:4000/api/auth/login (Backend/test_login_verification.ts:12)"}, "properties": {"repobilityId": "11694dc51d80a9bc", "scanner": "scanner-primary", "fingerprint": "ff66da247c97990e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-633ee5bdd752b44c", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:4000/api/auth/login (Backend/test_auth_full.ts:3)"}, "properties": {"repobilityId": "ce760173e50e662c", "scanner": "scanner-primary", "fingerprint": "633ee5bdd752b44c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0c1c73f073f2222d", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/users/me (Backend/test_auth_full.ts:12)"}, "properties": {"repobilityId": "f8b662a85ed0135c", "scanner": "scanner-primary", "fingerprint": "0c1c73f073f2222d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e1e1b839878986ca", "level": "error", "message": {"text": "Dangling fetch: GET https://bobyads-backend-m.3awmod.easypanel.host/api/messaging/conversations?status=OPEN (Backend/test/get_prod_token.spec.ts:22)"}, "properties": {"repobilityId": "2225cf57220d8260", "scanner": "scanner-primary", "fingerprint": "e1e1b839878986ca", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cd2d8bb6fa94881f", "level": "error", "message": {"text": "Dangling fetch: POST https://${shop}/admin/oauth/access_token (Backend/src/lib/oauth/providers/shopify.ts:56)"}, "properties": {"repobilityId": "56147a83058f7887", "scanner": "scanner-primary", "fingerprint": "cd2d8bb6fa94881f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1fbe878e175e2fa3", "level": "error", "message": {"text": "Dangling fetch: GET https://api.mercadopago.com/v1/customers/search?email=${email} (Backend/src/routes/payments.ts:66)"}, "properties": {"repobilityId": "1ea752b65240d211", "scanner": "scanner-primary", "fingerprint": "1fbe878e175e2fa3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-20f47683d3e00779", "level": "error", "message": {"text": "Dangling fetch: POST https://api.mercadopago.com/v1/customers (Backend/src/routes/payments.ts:74)"}, "properties": {"repobilityId": "95913ebe9afce594", "scanner": "scanner-primary", "fingerprint": "20f47683d3e00779", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-35b6aa93f5b2116f", "level": "error", "message": {"text": "Dangling fetch: GET https://api.mercadopago.com/v1/card_tokens/${token} (Backend/src/routes/payments.ts:90)"}, "properties": {"repobilityId": "009533f6c9b12ac9", "scanner": "scanner-primary", "fingerprint": "35b6aa93f5b2116f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-574a37e4722f8674", "level": "error", "message": {"text": "Dangling fetch: GET https://api.mercadopago.com/v1/payments/${data.id} (Backend/src/routes/payments.ts:348)"}, "properties": {"repobilityId": "efda39d009bbfcb7", "scanner": "scanner-primary", "fingerprint": "574a37e4722f8674", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5ef8c10cb50a96d4", "level": "error", "message": {"text": "Dangling fetch: GET https://api.mercadopago.com/preapproval/${data.id} (Backend/src/routes/payments.ts:392)"}, "properties": {"repobilityId": "45b969ca8873f054", "scanner": "scanner-primary", "fingerprint": "5ef8c10cb50a96d4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a40a278eb4835800", "level": "error", "message": {"text": "Dangling fetch: PUT https://api.mercadopago.com/preapproval/${subscriptionId} (Backend/src/routes/payments.ts:776)"}, "properties": {"repobilityId": "8791bc58b17a38a1", "scanner": "scanner-primary", "fingerprint": "a40a278eb4835800", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a16cf0669d7e4cd5", "level": "error", "message": {"text": "Dangling fetch: GET https://graph.facebook.com/v20.0/act_${formattedAdAccountId}/insights?level=ad&${timeRangeParams}&fields=ad_name,spend,actions,action_values&limit=4&access_token=${accessToken} (Backend/src/routes/meta.ts:230)"}, "properties": {"repobilityId": "ce62e2e4ee0d003c", "scanner": "scanner-primary", "fingerprint": "a16cf0669d7e4cd5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bd363ffda90a8e4b", "level": "error", "message": {"text": "Dangling fetch: POST https://oauth2.googleapis.com/token (Backend/src/routes/google.ts:46)"}, "properties": {"repobilityId": "aa2ca2f1423c75d1", "scanner": "scanner-primary", "fingerprint": "bd363ffda90a8e4b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-188ab7bc2aa47aea", "level": "error", "message": {"text": "Dangling fetch: POST https://googleads.googleapis.com/v19/customers/${customerId}/googleAds:search (Backend/src/routes/google.ts:93)"}, "properties": {"repobilityId": "55d8b226d0eec186", "scanner": "scanner-primary", "fingerprint": "188ab7bc2aa47aea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e555720a1581db97", "level": "error", "message": {"text": "Dangling fetch: GET https://${domain}/admin/api/2024-01/shop.json (Backend/src/controllers/settingsController.ts:100)"}, "properties": {"repobilityId": "42005b602a53d54c", "scanner": "scanner-primary", "fingerprint": "e555720a1581db97", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3b29363e5dc08a9f", "level": "error", "message": {"text": "Dangling fetch: GET https://business-api.tiktok.com/open_api/v1.3/advertiser/info/?${params} (Backend/src/controllers/settingsController.ts:123)"}, "properties": {"repobilityId": "5a1b37f69f385483", "scanner": "scanner-primary", "fingerprint": "3b29363e5dc08a9f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d28be76499c69b22", "level": "error", "message": {"text": "Dangling fetch: POST https://oauth2.googleapis.com/token (Backend/src/controllers/settingsController.ts:151)"}, "properties": {"repobilityId": "4b43325cad89012d", "scanner": "scanner-primary", "fingerprint": "d28be76499c69b22", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-20ceca86dbe1d9c9", "level": "note", "message": {"text": "Unused endpoint: USE /webhooks/shopify"}, "properties": {"repobilityId": "35441edc0d971886", "scanner": "scanner-primary", "fingerprint": "20ceca86dbe1d9c9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3971399f93853213", "level": "note", "message": {"text": "Unused endpoint: USE /api/webhooks/whatsapp"}, "properties": {"repobilityId": "fe0881e076cc91e1", "scanner": "scanner-primary", "fingerprint": "3971399f93853213", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-81d29c1254d852b1", "level": "note", "message": {"text": "Unused endpoint: USE /api/webhooks/instagram"}, "properties": {"repobilityId": "72472d3ea71c5925", "scanner": "scanner-primary", "fingerprint": "81d29c1254d852b1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6eb452fbfb454d20", "level": "note", "message": {"text": "Unused endpoint: USE /api/auth"}, "properties": {"repobilityId": "0c600fff85ac6ae7", "scanner": "scanner-primary", "fingerprint": "6eb452fbfb454d20", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-efb45fe0bb0f8393", "level": "note", "message": {"text": "Unused endpoint: USE /api/shopify"}, "properties": {"repobilityId": "0a39b0f42332c208", "scanner": "scanner-primary", "fingerprint": "efb45fe0bb0f8393", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b8be624dd9ede73a", "level": "note", "message": {"text": "Unused endpoint: USE /api/meta"}, "properties": {"repobilityId": "ba0e5f14d130e013", "scanner": "scanner-primary", "fingerprint": "b8be624dd9ede73a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-289fcc2835c849d6", "level": "note", "message": {"text": "Unused endpoint: USE /api/google"}, "properties": {"repobilityId": "f5e79f37a61ce142", "scanner": "scanner-primary", "fingerprint": "289fcc2835c849d6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d79b64f1b400a75a", "level": "note", "message": {"text": "Unused endpoint: USE /api/tiktok"}, "properties": {"repobilityId": "04b6f74daba5d2f0", "scanner": "scanner-primary", "fingerprint": "d79b64f1b400a75a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-89653660d9f39861", "level": "note", "message": {"text": "Unused endpoint: USE /api/dropi"}, "properties": {"repobilityId": "70b946dd4553f6a7", "scanner": "scanner-primary", "fingerprint": "89653660d9f39861", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f93a38e1d605cafc", "level": "note", "message": {"text": "Unused endpoint: USE /api/metrics"}, "properties": {"repobilityId": "d6aacf41e37c5bca", "scanner": "scanner-primary", "fingerprint": "f93a38e1d605cafc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b93c1ed754cfdc30", "level": "note", "message": {"text": "Unused endpoint: USE /api/oauth"}, "properties": {"repobilityId": "2465777e3f9d866d", "scanner": "scanner-primary", "fingerprint": "b93c1ed754cfdc30", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e1ae3aeb68b3c3c1", "level": "note", "message": {"text": "Unused endpoint: USE /api/ia"}, "properties": {"repobilityId": "045b362c9cbf1b70", "scanner": "scanner-primary", "fingerprint": "e1ae3aeb68b3c3c1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8ca4664c9cda1cd6", "level": "note", "message": {"text": "Unused endpoint: USE /api/settings"}, "properties": {"repobilityId": "cd94f820fb1e69fe", "scanner": "scanner-primary", "fingerprint": "8ca4664c9cda1cd6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4ff40cb10f7c8519", "level": "note", "message": {"text": "Unused endpoint: USE /api/users"}, "properties": {"repobilityId": "ed88ce2cd9ab5d94", "scanner": "scanner-primary", "fingerprint": "4ff40cb10f7c8519", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d93a530ce10d47d9", "level": "note", "message": {"text": "Unused endpoint: USE /api/admin"}, "properties": {"repobilityId": "845c694a72a8d577", "scanner": "scanner-primary", "fingerprint": "d93a530ce10d47d9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cefe3e16e4a7273d", "level": "note", "message": {"text": "Unused endpoint: USE /api/products"}, "properties": {"repobilityId": "1c34257d4ce1fac8", "scanner": "scanner-primary", "fingerprint": "cefe3e16e4a7273d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e4b2c2b7682a8346", "level": "note", "message": {"text": "Unused endpoint: USE /api/logs"}, "properties": {"repobilityId": "032a95f4b85cd6b3", "scanner": "scanner-primary", "fingerprint": "e4b2c2b7682a8346", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1c75c6f40d00cae7", "level": "note", "message": {"text": "Unused endpoint: USE /api/onboarding"}, "properties": {"repobilityId": "0145ba22f26b588a", "scanner": "scanner-primary", "fingerprint": "1c75c6f40d00cae7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f8242ba07247d2f8", "level": "note", "message": {"text": "Unused endpoint: USE /api/payments"}, "properties": {"repobilityId": "fc433b7b74af032f", "scanner": "scanner-primary", "fingerprint": "f8242ba07247d2f8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dde3adb27bf7eebe", "level": "note", "message": {"text": "Unused endpoint: USE /api"}, "properties": {"repobilityId": "5e42372b5e8ab811", "scanner": "scanner-primary", "fingerprint": "dde3adb27bf7eebe", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-01f4e0da5fd4a496", "level": "note", "message": {"text": "Unused endpoint: USE /api/composio"}, "properties": {"repobilityId": "2916b25785f4f2fc", "scanner": "scanner-primary", "fingerprint": "01f4e0da5fd4a496", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-618721b912bad1c2", "level": "note", "message": {"text": "Unused endpoint: POST /login"}, "properties": {"repobilityId": "574cf13c4bca5511", "scanner": "scanner-primary", "fingerprint": "618721b912bad1c2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5887f6beb60dee57", "level": "note", "message": {"text": "Unused endpoint: POST /google"}, "properties": {"repobilityId": "a392d911c0829aed", "scanner": "scanner-primary", "fingerprint": "5887f6beb60dee57", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-69aa6a6a0699b217", "level": "note", "message": {"text": "Unused endpoint: POST /force-change-password"}, "properties": {"repobilityId": "89196e2a85926591", "scanner": "scanner-primary", "fingerprint": "69aa6a6a0699b217", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-304b6f2b403d93f7", "level": "note", "message": {"text": "Unused endpoint: POST /register"}, "properties": {"repobilityId": "5870e8f7f2993dca", "scanner": "scanner-primary", "fingerprint": "304b6f2b403d93f7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "96076396300d8a60", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8664e7608b8880ea", "level": "note", "message": {"text": "Unused endpoint: POST /connect"}, "properties": {"repobilityId": "81ced613880e447d", "scanner": "scanner-primary", "fingerprint": "8664e7608b8880ea", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cdfb578618cf2542", "level": "note", "message": {"text": "Unused endpoint: GET /callback"}, "properties": {"repobilityId": "c0e7a945ce0cea97", "scanner": "scanner-primary", "fingerprint": "cdfb578618cf2542", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-612648bbd62b68ab", "level": "note", "message": {"text": "Unused endpoint: DELETE /disconnect"}, "properties": {"repobilityId": "856c7acc0a7c2ef9", "scanner": "scanner-primary", "fingerprint": "612648bbd62b68ab", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2b8c06301fe42c7f", "level": "note", "message": {"text": "Unused endpoint: POST /select-plan"}, "properties": {"repobilityId": "5c6c901a23576801", "scanner": "scanner-primary", "fingerprint": "2b8c06301fe42c7f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fd1dc91abf32142d", "level": "note", "message": {"text": "Unused endpoint: GET /me"}, "properties": {"repobilityId": "3f2daeece7e603ec", "scanner": "scanner-primary", "fingerprint": "fd1dc91abf32142d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3a6dc402c9f6cbc4", "level": "note", "message": {"text": "Unused endpoint: PUT /me"}, "properties": {"repobilityId": "1663157883fc95d4", "scanner": "scanner-primary", "fingerprint": "3a6dc402c9f6cbc4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a0c590d074465035", "level": "note", "message": {"text": "Unused endpoint: PUT /me/password"}, "properties": {"repobilityId": "912ea564279509e4", "scanner": "scanner-primary", "fingerprint": "a0c590d074465035", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4b0fb29c2a726422", "level": "note", "message": {"text": "Unused endpoint: GET /me/preferences"}, "properties": {"repobilityId": "29795b7bc725b9f1", "scanner": "scanner-primary", "fingerprint": "4b0fb29c2a726422", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a4f762733185e1cb", "level": "note", "message": {"text": "Unused endpoint: PUT /me/preferences"}, "properties": {"repobilityId": "34fe2984310306e8", "scanner": "scanner-primary", "fingerprint": "a4f762733185e1cb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3e173d872a6c674e", "level": "note", "message": {"text": "Unused endpoint: POST /webhooks/orders/create"}, "properties": {"repobilityId": "306eb530f2b1cd27", "scanner": "scanner-primary", "fingerprint": "3e173d872a6c674e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3fae78fafd02ab83", "level": "note", "message": {"text": "Unused endpoint: POST /webhooks/orders/updated"}, "properties": {"repobilityId": "945c7d81564745e5", "scanner": "scanner-primary", "fingerprint": "3fae78fafd02ab83", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0328e9bdbb61fa68", "level": "note", "message": {"text": "Unused endpoint: GET /orders"}, "properties": {"repobilityId": "5f1622dce47c900e", "scanner": "scanner-primary", "fingerprint": "0328e9bdbb61fa68", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fa413208496243a5", "level": "note", "message": {"text": "Unused endpoint: POST /sync"}, "properties": {"repobilityId": "d94a99f01a09f01c", "scanner": "scanner-primary", "fingerprint": "fa413208496243a5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a73aebc088a06d2d", "level": "note", "message": {"text": "Unused endpoint: GET /:platform"}, "properties": {"repobilityId": "35d11b25af40367b", "scanner": "scanner-primary", "fingerprint": "a73aebc088a06d2d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-841e4c4b67dfe44a", "level": "note", "message": {"text": "Unused endpoint: GET /:platform/callback"}, "properties": {"repobilityId": "9ae468699d6cc548", "scanner": "scanner-primary", "fingerprint": "841e4c4b67dfe44a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fce72c9e2ae9bfb0", "level": "note", "message": {"text": "Unused endpoint: GET /valentina-context"}, "properties": {"repobilityId": "d6166519ce24265e", "scanner": "scanner-primary", "fingerprint": "fce72c9e2ae9bfb0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f267cc6244ff132b", "level": "note", "message": {"text": "Unused endpoint: GET /campaigns"}, "properties": {"repobilityId": "fbccc8ec7405bdcc", "scanner": "scanner-primary", "fingerprint": "f267cc6244ff132b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-de69773c75bbd5a2", "level": "note", "message": {"text": "Unused endpoint: GET /daily-performance"}, "properties": {"repobilityId": "d3ba77e69008dc29", "scanner": "scanner-primary", "fingerprint": "de69773c75bbd5a2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ff9b0e3fb42adb0e", "level": "note", "message": {"text": "Unused endpoint: GET /creatives"}, "properties": {"repobilityId": "684641f4e58d0635", "scanner": "scanner-primary", "fingerprint": "ff9b0e3fb42adb0e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-69652b976bca614f", "level": "note", "message": {"text": "Unused endpoint: POST /process-mercadopago-subscription"}, "properties": {"repobilityId": "6d17a5e8493be184", "scanner": "scanner-primary", "fingerprint": "69652b976bca614f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9e8f766adc9ffe4c", "level": "note", "message": {"text": "Unused endpoint: POST /create-mp-preference"}, "properties": {"repobilityId": "04131b1751534a7a", "scanner": "scanner-primary", "fingerprint": "9e8f766adc9ffe4c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-323abe7af659d4d5", "level": "note", "message": {"text": "Unused endpoint: POST /webhook-mp"}, "properties": {"repobilityId": "6d5bcb779c148ecf", "scanner": "scanner-primary", "fingerprint": "323abe7af659d4d5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7a4533e26456580a", "level": "note", "message": {"text": "Unused endpoint: POST /create-subscription"}, "properties": {"repobilityId": "84603939a27c5eb5", "scanner": "scanner-primary", "fingerprint": "7a4533e26456580a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ce6c0c064e067960", "level": "note", "message": {"text": "Unused endpoint: POST /activate-paypal-subscription"}, "properties": {"repobilityId": "3bddc6ef2db328ba", "scanner": "scanner-primary", "fingerprint": "ce6c0c064e067960", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}