{"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-db7cd8ad392848bb", "name": "Stray `console.log` in TS/JS \u2014 debug-discounts.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 debug-discounts.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-82d4ee10dc77e71b", "name": "Stray `console.log` in TS/JS \u2014 inspect-shopify-json.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 inspect-shopify-json.ts: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-bb0c45fbf4c906aa", "name": "Stray `console.log` in TS/JS \u2014 check_reservations.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check_reservations.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-0fc58636e64857ca", "name": "Stray `console.log` in TS/JS \u2014 query_data_2.ts:1", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 query_data_2.ts:1"}, "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-81d80e9c9c7f5e4a", "name": "Stray `console.log` in TS/JS \u2014 check_shlz.js:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check_shlz.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-59c7bcb5963c5f42", "name": "Stray `console.log` in TS/JS \u2014 fix_caden.js:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 fix_caden.js: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-d5943b5e9eba32d8", "name": "Stray `console.log` in TS/JS \u2014 check-counts.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check-counts.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-5a679d3ba4c7ef9c", "name": "Stray `console.log` in TS/JS \u2014 test-wms-query.ts:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-wms-query.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-0cd22ec838ef0d61", "name": "Stray `console.log` in TS/JS \u2014 test-db-count.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-db-count.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-73586521e057d7dd", "name": "Stray `console.log` in TS/JS \u2014 vite-plugin-meta-images.ts:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 vite-plugin-meta-images.ts:76"}, "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-32852340d31cd5f2", "name": "Stray `console.log` in TS/JS \u2014 dump-settings.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dump-settings.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-c8bdf48889086ff2", "name": "Stray `console.log` in TS/JS \u2014 query_data.ts:1", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 query_data.ts:1"}, "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-d6ee0ed36bfef95c", "name": "Stray `console.log` in TS/JS \u2014 check-mappings.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check-mappings.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-c4e0c279a266ae91", "name": "`truncate` class without `title=` for hover reveal \u2014 ops-portal.jsx:183", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 ops-portal.jsx:183"}, "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-533ff979fa732e83", "name": "Stray `console.log` in TS/JS \u2014 test_drizzle.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test_drizzle.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-b4dc1ed90757c108", "name": "Stray `console.log` in TS/JS \u2014 test-queue.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-queue.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-9ab3e0eee5df20f8", "name": "Stray `console.log` in TS/JS \u2014 check-dups.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check-dups.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-d1cc9ac7a900cb54", "name": "Stray `console.log` in TS/JS \u2014 check3.ts:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check3.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-8c706bcc51a87ed1", "name": "Stray `console.log` in TS/JS \u2014 temp_migrate_catalog.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 temp_migrate_catalog.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-d0fbfc6392dfe274", "name": "Stray `console.log` in TS/JS \u2014 check-assets.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check-assets.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-fbf640b3d7e52e43", "name": "Stray `console.log` in TS/JS \u2014 migrate-oms2.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 migrate-oms2.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-9b993ad6c82fe933", "name": "Stray `console.log` in TS/JS \u2014 fix.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 fix.js:37"}, "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-a00db10e60108775", "name": "Stray `console.log` in TS/JS \u2014 apply_schemas.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apply_schemas.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-78da5342ed2502c8", "name": "Stray `console.log` in TS/JS \u2014 scratch.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scratch.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-1e385f303c3586cc", "name": "Stray `console.log` in TS/JS \u2014 force_schema.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 force_schema.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-55633fb6aff4d689", "name": "Stray `console.log` in TS/JS \u2014 check_ids.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check_ids.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-958459fa0ecd6d5a", "name": "Stray `console.log` in TS/JS \u2014 fix_po.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 fix_po.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-cf797bcc52e372c0", "name": "Stray `console.log` in TS/JS \u2014 apply-0072.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apply-0072.ts: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-8e604c24b02d3e69", "name": "Stray `console.log` in TS/JS \u2014 sync-selling-plans.ts:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sync-selling-plans.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-f4f1d999f371b068", "name": "Stray `console.log` in TS/JS \u2014 check_caden_dates.js:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check_caden_dates.js: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-be0e6cf43d656301", "name": "Stray `console.log` in TS/JS \u2014 query_check.ts:1", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 query_check.ts:1"}, "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-7c8915f6aaf0c2ca", "name": "Stray `console.log` in TS/JS \u2014 check-tokens.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check-tokens.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-b944022ef5b0f4e4", "name": "Stray `console.log` in TS/JS \u2014 check_all_full.ts:1", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check_all_full.ts:1"}, "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-ca701436e599f1d2", "name": "Stray `console.log` in TS/JS \u2014 temp_dump_schemas.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 temp_dump_schemas.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-6dff6aa7879a2e96", "name": "Stray `console.log` in TS/JS \u2014 test-shopify-bridge.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-shopify-bridge.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-a99de4e68caefcd4", "name": "Stray `console.log` in TS/JS \u2014 check_order.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check_order.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-31561c8e53c944bb", "name": "Stray `console.log` in TS/JS \u2014 temp_inspect_public.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 temp_inspect_public.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-3ec6639f6f3b2c71", "name": "Stray `console.log` in TS/JS \u2014 test-schemas.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-schemas.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-844b6aaaf35dcc58", "name": "Stray `console.log` in TS/JS \u2014 test_delete.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test_delete.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-7e6b15ed7b88445b", "name": "Stray `console.log` in TS/JS \u2014 check_member.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check_member.js: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-a73d3239e3b3628a", "name": "Stray `console.log` in TS/JS \u2014 test_schema.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test_schema.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-4620ae14ad7d53f3", "name": "Stray `console.log` in TS/JS \u2014 check.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check.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-711534e20d193b8b", "name": "Stray `console.log` in TS/JS \u2014 check-default.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check-default.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-87b818c4f1f94acf", "name": "Stray `console.log` in TS/JS \u2014 tmp-migrate.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tmp-migrate.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-443f1f9883cde238", "name": "Stray `console.log` in TS/JS \u2014 temp_check_55649.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 temp_check_55649.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-2fc53a33a4e3a16b", "name": "Stray `console.log` in TS/JS \u2014 tmp-cols.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tmp-cols.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-6ef5c13b39caf15d", "name": "Stray `console.log` in TS/JS \u2014 tmp3.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tmp3.ts: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-ea34b3c7c5333cb2", "name": "Stray `console.log` in TS/JS \u2014 compare_sp.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 compare_sp.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-d25748dcea167174", "name": "Stray `console.log` in TS/JS \u2014 create-plan.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 create-plan.ts: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-5b80efd64a629a30", "name": "Stray `console.log` in TS/JS \u2014 debug-plans2.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 debug-plans2.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-b99a2379ae714f2a", "name": "Stray `console.log` in TS/JS \u2014 tmp.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tmp.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-505ee0afb489ac7e", "name": "Stray `console.log` in TS/JS \u2014 push.ts:4", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 push.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-612ba737e1e786b6", "name": "Stray `console.log` in TS/JS \u2014 temp_check_catalog.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 temp_check_catalog.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-a79388b5d58d7767", "name": "Stray `console.log` in TS/JS \u2014 tmp2.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tmp2.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-fe7de20d6ab01484", "name": "Stray `console.log` in TS/JS \u2014 check-recent-assets.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check-recent-assets.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-814b11fb18c40f65", "name": "Stray `console.log` in TS/JS \u2014 mock-atp.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 mock-atp.js:23"}, "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-b34df5cdd84956dc", "name": "Stray `console.log` in TS/JS \u2014 test-fetch2.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-fetch2.ts:23"}, "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-c27e42410751b989", "name": "Stray `console.log` in TS/JS \u2014 check_events.js:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check_events.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-2a18161a4139a598", "name": "Stray `console.log` in TS/JS \u2014 find-mem.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 find-mem.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-093251b25e9edb91", "name": "Stray `console.log` in TS/JS \u2014 temp_drop_ghosts.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 temp_drop_ghosts.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-0eef15b6c54d9178", "name": "Stray `console.log` in TS/JS \u2014 test-wms-sync.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-wms-sync.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-b3fcdcc73613b447", "name": "Stray `console.log` in TS/JS \u2014 check_cats2.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check_cats2.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-cd5c416084fc7627", "name": "Stray `console.log` in TS/JS \u2014 tmp_get_tables.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tmp_get_tables.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-62b22c9c5ea0c5c9", "name": "Stray `console.log` in TS/JS \u2014 check_cats3.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check_cats3.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-5614f0b46c7ef127", "name": "Stray `console.log` in TS/JS \u2014 check-shopify-images.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check-shopify-images.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-b44b7ce4bc975d61", "name": "Stray `console.log` in TS/JS \u2014 migrate-cents.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 migrate-cents.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-de8b7a0608fb69a0", "name": "Stray `console.log` in TS/JS \u2014 debug_plans.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 debug_plans.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-5de44bfa847ad5eb", "name": "Stray `console.log` in TS/JS \u2014 check-all-shopify-conns.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check-all-shopify-conns.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-b0c09c34a4b3f94a", "name": "Stray `console.log` in TS/JS \u2014 check2.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check2.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-8efda5a1cf5118d9", "name": "Stray `console.log` in TS/JS \u2014 check_sp.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check_sp.js: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-1938d2263671cd3e", "name": "Stray `console.log` in TS/JS \u2014 temp_list_public.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 temp_list_public.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-90826b33a56e3b0c", "name": "Stray `console.log` in TS/JS \u2014 tmp4.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tmp4.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-9432b08c4e330594", "name": "Stray `console.log` in TS/JS \u2014 test_query.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test_query.ts:56"}, "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-4b73b65aeea62b09", "name": "Stray `console.log` in TS/JS \u2014 tmp_query.ts:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tmp_query.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-779f01bfb1227cfb", "name": "Stray `console.log` in TS/JS \u2014 dump_all_plans.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dump_all_plans.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-a426232897d714e5", "name": "Stray `console.log` in TS/JS \u2014 fix.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 fix.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-e9ab65e8b05ebd6c", "name": "Stray `console.log` in TS/JS \u2014 check_po.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check_po.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-11ec284fbc00eea6", "name": "Stray `console.log` in TS/JS \u2014 test-fetch.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-fetch.ts: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-d9028d769347a785", "name": "Stray `console.log` in TS/JS \u2014 check_all.ts:1", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check_all.ts:1"}, "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-a575da98a8cd8bd4", "name": "Stray `console.log` in TS/JS \u2014 check_data.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check_data.js: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-6885d1ae99228714", "name": "Stray `console.log` in TS/JS \u2014 fix-orders-storage.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 fix-orders-storage.ts:35"}, "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-9bafbd63ee9edef4", "name": "Stray `console.log` in TS/JS \u2014 debug-db.ts:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 debug-db.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-20ed62d9b7b0e8bc", "name": "Stray `console.log` in TS/JS \u2014 migrate-oms.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 migrate-oms.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-8e39893fe5bdafe3", "name": "Stray `console.log` in TS/JS \u2014 temp_find_dropship.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 temp_find_dropship.ts: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-1a57c754626ca7dc", "name": "Stray `console.log` in TS/JS \u2014 fix_caden_dates.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 fix_caden_dates.js: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-742db520f4f8a9df", "name": "Stray `console.log` in TS/JS \u2014 debug-db2.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 debug-db2.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-88a8426716b4d6af", "name": "Stray `console.log` in TS/JS \u2014 debug-columns.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 debug-columns.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-303ee301fd842f34", "name": "Stray `console.log` in TS/JS \u2014 check_cats.ts:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check_cats.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-2bebde29b06bf540", "name": "Stray `console.log` in TS/JS \u2014 read_dump.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 read_dump.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-5f97126bde112a49", "name": "Stray `console.log` in TS/JS \u2014 migrate-wms.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 migrate-wms.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-e28aaa855cb1ef6b", "name": "Stray `console.log` in TS/JS \u2014 check_plan_props.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check_plan_props.js: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-f65a3a7c547219ea", "name": "Stray `console.log` in TS/JS \u2014 scripts/import_ebay_to_echelon.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import_ebay_to_echelon.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-5252ed3d8b7c246f", "name": "Stray `console.log` in TS/JS \u2014 scripts/rescue_ebay_images.ts:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rescue_ebay_images.ts:55"}, "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-db40ea66b865ec13", "name": "Stray `console.log` in TS/JS \u2014 scripts/push-ebay-images-to-shopify.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/push-ebay-images-to-shopify.ts:46"}, "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-6dcf87ce139fe32f", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-search-path.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-search-path.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-00a2b3548662ae06", "name": "Stray `console.log` in TS/JS \u2014 scripts/restore-legacy-accounting.ts:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/restore-legacy-accounting.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-2030566ea5c46b14", "name": "Stray `console.log` in TS/JS \u2014 scripts/clean-digital.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clean-digital.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-43c270a8508c8ce5", "name": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-prod60.ts:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-prod60.ts:67"}, "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-6c864cd6c21b424a", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-replen-source-resolution.ts:557", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-replen-source-resolution.ts:557"}, "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-55303324e33e076d", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-shipment-status-values.ts:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-shipment-status-values.ts:62"}, "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-be26215c83fc4f2c", "name": "Stray `console.log` in TS/JS \u2014 scripts/run-wms-cutover.ts:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/run-wms-cutover.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-df7aab937bffe127", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-all-member-tiers.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-all-member-tiers.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-ca918c94f9a042a5", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-wms-source-id.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-wms-source-id.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-e5713e94acb8104f", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-wms-oms-fulfillment-order-id-from-gid.ts:154", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-wms-oms-fulfillment-order-id-from-gid.ts:154"}, "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-0e24063553b32b7b", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-catalog-schema.ts:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-catalog-schema.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-263a25ad72303cad", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-cogs-engine.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-cogs-engine.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-b7e733479c64ce64", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-wms-oms-link.ts:175", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-wms-oms-link.ts:175"}, "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-e11c089998be4df1", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-queue.ts:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-queue.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-b1693ae6664b4f87", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-wms-oms-fulfillment-order-id-from-external-order-number.ts:131", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-wms-oms-fulfillment-order-id-from-external-order-number.ts:131"}, "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-15f5a2532a0875b8", "name": "Stray `console.log` in TS/JS \u2014 scripts/sync_images_all.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sync_images_all.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-32dcf757af3ab452", "name": "Stray `console.log` in TS/JS \u2014 scripts/introspect-membership.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/introspect-membership.ts:44"}, "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-8bf28b90069e20db", "name": "Stray `console.log` in TS/JS \u2014 scripts/debug-ss-push.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/debug-ss-push.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-5e30501f91da74b2", "name": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-duplicate-wms-orders.ts:131", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-duplicate-wms-orders.ts:131"}, "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-4d6be4998133c1fa", "name": "Stray `console.log` in TS/JS \u2014 scripts/_check-data.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_check-data.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-cb9f97b49e752724", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-oms.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-oms.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-d0a77870f5b62517", "name": "Stray `console.log` in TS/JS \u2014 scripts/run-backfill.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/run-backfill.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-9df752a79196b8c7", "name": "Stray `console.log` in TS/JS \u2014 scripts/_check.ts:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_check.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-6531d7a8517ae8f1", "name": "Stray `console.log` in TS/JS \u2014 scripts/dump-schema.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dump-schema.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-aa2f0bba5b0d98ff", "name": "Stray `console.log` in TS/JS \u2014 scripts/parity-check-push.ts:700", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/parity-check-push.ts:700"}, "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-02c7a6d4f884b31c", "name": "Stray `console.log` in TS/JS \u2014 scripts/_find-missing.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_find-missing.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-2feacd53884fb6a7", "name": "Stray `console.log` in TS/JS \u2014 scripts/merge-membership-schema.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/merge-membership-schema.ts: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-dea54976db236a2a", "name": "Stray `console.log` in TS/JS \u2014 scripts/clear_reserved.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clear_reserved.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-1d192a2350f6f6b6", "name": "Stray `console.log` in TS/JS \u2014 scripts/dropship-dogfood-status.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dropship-dogfood-status.ts:48"}, "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-f01a55c15c52ae4f", "name": "Stray `console.log` in TS/JS \u2014 scripts/prune-legacy-accounting.ts:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/prune-legacy-accounting.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-8992c948a69aab09", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-membership.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-membership.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-2198a188d2999fd6", "name": "Stray `console.log` in TS/JS \u2014 scripts/_fix-columns.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_fix-columns.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-9d75a6d372bea3b2", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-ledger-variances.ts:109", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-ledger-variances.ts:109"}, "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-ebba8849530469cd", "name": "Stray `console.log` in TS/JS \u2014 scripts/sync-active-wms-sort-ranks-to-shipstation.ts:115", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sync-active-wms-sort-ranks-to-shipstation.ts:115"}, "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-b74f8ddf25a94d1d", "name": "Stray `console.log` in TS/JS \u2014 scripts/_ca-live-sync.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_ca-live-sync.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-a36de9cfe0eb5e7b", "name": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-over-reserved.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-over-reserved.ts:23"}, "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-ec080f2ceabdda95", "name": "Stray `console.log` in TS/JS \u2014 scripts/reconcile-ebay-listing-intent.ts:111", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reconcile-ebay-listing-intent.ts:111"}, "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-2ed730903a9f258f", "name": "Stray `console.log` in TS/JS \u2014 scripts/tmp-check-db.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tmp-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-2432388d5b744d44", "name": "Stray `console.log` in TS/JS \u2014 scripts/push-stuck-shipments.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/push-stuck-shipments.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-df1f346eb5b5d3f8", "name": "Stray `console.log` in TS/JS \u2014 scripts/recover-replen-health.ts:430", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recover-replen-health.ts:430"}, "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-3eb384eb0ee417dc", "name": "Stray `console.log` in TS/JS \u2014 scripts/create-daily-replen-qa-counts.ts:541", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-daily-replen-qa-counts.ts:541"}, "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-26ed7bf835928dba", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-forecast-input-gaps.ts:184", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-forecast-input-gaps.ts:184"}, "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-a1b5f698d37c5ff3", "name": "Stray `console.log` in TS/JS \u2014 scripts/run-dry-sync.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/run-dry-sync.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-0d2f0d065a504298", "name": "Stray `console.log` in TS/JS \u2014 scripts/_apply-missing-tables.ts:113", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_apply-missing-tables.ts:113"}, "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-941dab4f8a12fb97", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-oms-status.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-oms-status.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-08897286d7d0a72f", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-active-wms-sla-ranks.ts:241", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-active-wms-sla-ranks.ts:241"}, "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-008345c746b93b49", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-shopify-oms-line-fulfillment-status.ts:391", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-shopify-oms-line-fulfillment-status.ts:391"}, "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-70e0fbc24bdffb7a", "name": "Stray `console.log` in TS/JS \u2014 scripts/repair-pick-slotting.ts:234", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/repair-pick-slotting.ts:234"}, "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-e28759b8a536f35d", "name": "Stray `console.log` in TS/JS \u2014 scripts/recover-blocked-replen.ts:109", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recover-blocked-replen.ts:109"}, "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-d3915c76a9d3a194", "name": "Stray `console.log` in TS/JS \u2014 scripts/dedup-oms-orders-duplicate-external-order-number.ts:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dedup-oms-orders-duplicate-external-order-number.ts:63"}, "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-243592c52782a7b5", "name": "Stray `console.log` in TS/JS \u2014 scripts/_ebay-recon.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_ebay-recon.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-61fb0cd09bdef559", "name": "Stray `console.log` in TS/JS \u2014 scripts/reconcile-inventory-ledger.ts:118", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reconcile-inventory-ledger.ts:118"}, "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-eb91eaf6c26c03eb", "name": "Stray `console.log` in TS/JS \u2014 scripts/tmp-check-tables.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tmp-check-tables.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-08706bb4f6b08f6e", "name": "Stray `console.log` in TS/JS \u2014 scripts/full-table-audit.ts:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/full-table-audit.ts:71"}, "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-8ed78566aedccc13", "name": "Stray `console.log` in TS/JS \u2014 scripts/recover-allocation-exceptions.ts:832", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recover-allocation-exceptions.ts:832"}, "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-fa36c43df410b722", "name": "Stray `console.log` in TS/JS \u2014 scripts/monitor-pick-replen-health.ts:353", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/monitor-pick-replen-health.ts:353"}, "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-30451e3a731f418d", "name": "Stray `console.log` in TS/JS \u2014 scripts/run-live-sync-all.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/run-live-sync-all.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-0fd856612ab4f09f", "name": "Stray `console.log` in TS/JS \u2014 scripts/sync-ebay-images.ts:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sync-ebay-images.ts:73"}, "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-94effa00052bd943", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-duplicate-orders.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-duplicate-orders.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-ca1d86154ac04748", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-all-schemas.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-all-schemas.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-2a530c0e27d06784", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-multi-location.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-multi-location.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-c63da9b60dc9e3f6", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-priority-and-repush.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-priority-and-repush.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-36d1f24a17985be8", "name": "Stray `console.log` in TS/JS \u2014 scripts/drop-legacy-tables.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/drop-legacy-tables.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-94948725d9e1d051", "name": "Stray `console.log` in TS/JS \u2014 scripts/run-live-inventory-sync.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/run-live-inventory-sync.ts:47"}, "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-3c2f2cc0ffda94db", "name": "Stray `console.log` in TS/JS \u2014 scripts/_check-inv.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_check-inv.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-1ad80e6cc5c6afa5", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-schema-map.ts:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-schema-map.ts:41"}, "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-9b8f93433eb4675c", "name": "Stray `console.log` in TS/JS \u2014 scripts/patch-catalog-sql.js:69", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/patch-catalog-sql.js:69"}, "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-f495071b3d2e5412", "name": "Stray `console.log` in TS/JS \u2014 scripts/_ca-backfill.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_ca-backfill.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-1f7c7ce52bbf169c", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill/fix-dangling-order-items.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill/fix-dangling-order-items.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-bbced523a65412a8", "name": "Stray `console.log` in TS/JS \u2014 script/build.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 script/build.ts:38"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aaae67c4f4adda93", "name": "Stray `console.log` in TS/JS \u2014 server/index.ts:143", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/index.ts:143"}, "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-e8f6f5eb699f3260", "name": "Stray `console.log` in TS/JS \u2014 server/migrate.ts:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/migrate.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-49d193d03f5f87fb", "name": "Stray `console.log` in TS/JS \u2014 server/seed.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/seed.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-154d923ea34010b3", "name": "Stray `console.log` in TS/JS \u2014 server/websocket.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/websocket.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-df3764517d65afc6", "name": "Stray `console.log` in TS/JS \u2014 server/db.ts:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/db.ts:91"}, "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-8b1a64883eaadc57", "name": "Stray `console.log` in TS/JS \u2014 server/jobs/auto-draft.job.ts:263", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/jobs/auto-draft.job.ts:263"}, "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-8b3bf13aa90eaea4", "name": "Stray `console.log` in TS/JS \u2014 server/jobs/run-procurement-health-escalation.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/jobs/run-procurement-health-escalation.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-23817f3d193880a4", "name": "Stray `console.log` in TS/JS \u2014 server/jobs/run-auto-draft.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/jobs/run-auto-draft.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-49b81a8bead83559", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/fix_routes.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/fix_routes.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-b627e39f0fc2a3bb", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/fix_orphaned_picks.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/fix_orphaned_picks.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-440d22f3f96ed8d1", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/fix_all_routes.ts:117", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/fix_all_routes.ts:117"}, "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-fb79e44e5afef9ec", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/test_mark_shipped.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/test_mark_shipped.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-0ff69afe5efcd37a", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/check_picked.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/check_picked.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-c68604f349cbe927", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/auth-audit.ts:142", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/auth-audit.ts:142"}, "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-2eb9ba01380f43db", "name": "Stray `console.log` in TS/JS \u2014 server/infrastructure/auditLogger.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/infrastructure/auditLogger.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-d559ded3648afb58", "name": "Stray `console.log` in TS/JS \u2014 server/instrumentation/metrics.ts:96", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/instrumentation/metrics.ts:96"}, "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-8682fb432eb6677a", "name": "Stray `console.log` in TS/JS \u2014 server/modules/sync/sync-recovery.service.ts:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/sync/sync-recovery.service.ts:89"}, "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-a7fa939b19f644f8", "name": "Stray `console.log` in TS/JS \u2014 server/modules/dropship/application/dropship-marketplace-tracking-service.ts:270", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/dropship/application/dropship-marketplace-tracking-service.ts:270"}, "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-659a540f5389fdec", "name": "Stray `console.log` in TS/JS \u2014 server/modules/warehouse/locations.routes.ts:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/warehouse/locations.routes.ts:80"}, "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-e2bff71ae3d89dbf", "name": "Stray `console.log` in TS/JS \u2014 server/modules/warehouse/warehouse.routes.ts:773", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/warehouse/warehouse.routes.ts:773"}, "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-33e20f9cf73cb519", "name": "Stray `console.log` in TS/JS \u2014 server/modules/procurement/receiving.routes.ts:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/procurement/receiving.routes.ts:91"}, "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-20e4a84840980199", "name": "Stray `console.log` in TS/JS \u2014 server/modules/procurement/purchasing.service.ts:1221", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/procurement/purchasing.service.ts:1221"}, "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-33cbe5647f518151", "name": "Stray `console.log` in TS/JS \u2014 server/modules/integrations/shopify.ts:362", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/integrations/shopify.ts:362"}, "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-bb44e64ca4b62048", "name": "Stray `console.log` in TS/JS \u2014 server/modules/identity/application/identity.use-cases.ts:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/identity/application/identity.use-cases.ts:71"}, "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-b79e01d351b80626", "name": "Stray `console.log` in TS/JS \u2014 server/modules/identity/infrastructure/identity.repository.ts:151", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/identity/infrastructure/identity.repository.ts:151"}, "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-760a660e38f8f483", "name": "Stray `console.log` in TS/JS \u2014 server/modules/channels/scheduled-sync.service.ts:84", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/channels/scheduled-sync.service.ts:84"}, "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-f4e12167559a9b20", "name": "Stray `console.log` in TS/JS \u2014 server/modules/channels/echelon-sync-orchestrator.service.ts:225", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/channels/echelon-sync-orchestrator.service.ts:225"}, "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-0feb3e1b89e84819", "name": "Stray `console.log` in TS/JS \u2014 server/modules/channels/channels.routes.ts:777", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/channels/channels.routes.ts:777"}, "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-801f7cd764bac1da", "name": "Stray `console.log` in TS/JS \u2014 server/modules/channels/channel-adapter.interface.ts:350", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/channels/channel-adapter.interface.ts:350"}, "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-8c3b91339f20a097", "name": "Stray `console.log` in TS/JS \u2014 server/modules/channels/sync.service.ts:111", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/channels/sync.service.ts:111"}, "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-0f7f5608358e8dac", "name": "Stray `console.log` in TS/JS \u2014 server/modules/channels/catalog-backfill.service.ts:216", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/channels/catalog-backfill.service.ts:216"}, "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-beb2e555d871acc1", "name": "Stray `console.log` in TS/JS \u2014 server/modules/channels/reservation.service.ts:498", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/channels/reservation.service.ts:498"}, "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-e55204439ff4886c", "name": "Stray `console.log` in TS/JS \u2014 server/modules/channels/source-lock-init.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/channels/source-lock-init.ts:56"}, "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-a294d17025607a08", "name": "Stray `console.log` in TS/JS \u2014 server/modules/channels/adapters/ebay.adapter.ts:515", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/channels/adapters/ebay.adapter.ts:515"}, "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-62434f44b8767ca6", "name": "Stray `console.log` in TS/JS \u2014 server/modules/channels/adapters/shopify.adapter.ts:592", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/channels/adapters/shopify.adapter.ts:592"}, "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-6704ce0619f1d351", "name": "Stray `console.log` in TS/JS \u2014 server/modules/channels/adapters/ebay/ebay-auth.service.ts:178", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/channels/adapters/ebay/ebay-auth.service.ts:178"}, "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-923209d0962db711", "name": "Stray `console.log` in TS/JS \u2014 server/modules/channels/adapters/ebay/ebay-api.client.ts:336", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/channels/adapters/ebay/ebay-api.client.ts:336"}, "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-d20fc317efd7d6c5", "name": "Stray `console.log` in TS/JS \u2014 server/modules/subscriptions/subscription.scheduler.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/subscriptions/subscription.scheduler.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-10396bfc4ba7de1d", "name": "Stray `console.log` in TS/JS \u2014 server/modules/subscriptions/subscription.webhooks.ts:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/subscriptions/subscription.webhooks.ts:81"}, "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-c739cc69dea05967", "name": "Stray `console.log` in TS/JS \u2014 server/modules/subscriptions/subscription.routes.ts:225", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/subscriptions/subscription.routes.ts:225"}, "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-cfaeae23e27b994c", "name": "Stray `console.log` in TS/JS \u2014 server/modules/subscriptions/application/selling-plan.use-cases.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/subscriptions/application/selling-plan.use-cases.ts:44"}, "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-4d468c98617979f7", "name": "Stray `console.log` in TS/JS \u2014 server/modules/subscriptions/application/subscription.use-cases.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/subscriptions/application/subscription.use-cases.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-209fb2b007f9b88a", "name": "Stray `console.log` in TS/JS \u2014 server/modules/orders/orders.storage.ts:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/orders/orders.storage.ts:75"}, "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-b9a1447b06084b87", "name": "Stray `console.log` in TS/JS \u2014 server/modules/orders/shopify-order-reconciliation.ts:319", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/orders/shopify-order-reconciliation.ts:319"}, "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-fa72fb5c4c1ed2fb", "name": "Stray `console.log` in TS/JS \u2014 server/modules/orders/combining.service.ts:307", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/orders/combining.service.ts:307"}, "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-53c68e503e2c29dc", "name": "Stray `console.log` in TS/JS \u2014 server/modules/orders/picking.use-cases.ts:929", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/orders/picking.use-cases.ts:929"}, "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-17d34f8b8584e0eb", "name": "Stray `console.log` in TS/JS \u2014 server/modules/orders/fulfillment.service.ts:550", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/orders/fulfillment.service.ts:550"}, "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-1e78ae4f05d0e784", "name": "Stray `console.log` in TS/JS \u2014 server/modules/orders/shipment-rollup.ts:975", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/orders/shipment-rollup.ts:975"}, "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-30a0b44fe90c7892", "name": "Stray `console.log` in TS/JS \u2014 server/modules/catalog/image-sync.service.ts:87", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/catalog/image-sync.service.ts:87"}, "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-36ebdec29ee2eb47", "name": "Stray `console.log` in TS/JS \u2014 server/modules/catalog/catalog.routes.ts:607", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/catalog/catalog.routes.ts:607"}, "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-0df02793110711a2", "name": "TODO/FIXME marker in shipping code \u2014 server/modules/catalog/product-import.service.ts:219", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 server/modules/catalog/product-import.service.ts:219"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6ac2d76e8af8c77e", "name": "Stray `console.log` in TS/JS \u2014 server/modules/catalog/product-import.service.ts:131", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/catalog/product-import.service.ts:131"}, "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-f071add9a1f9a679", "name": "TODO/FIXME marker in shipping code \u2014 server/modules/oms/webhook-retry.worker.ts:2054", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 server/modules/oms/webhook-retry.worker.ts:2054"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a3be390c0371d1ae", "name": "Stray `console.log` in TS/JS \u2014 server/modules/oms/webhook-retry.worker.ts:150", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/webhook-retry.worker.ts:150"}, "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-be098c9867afc63b", "name": "Stray `console.log` in TS/JS \u2014 server/modules/oms/oms.service.ts:271", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/oms.service.ts:271"}, "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-06f5455fcea71cae", "name": "Stray `console.log` in TS/JS \u2014 server/modules/oms/ebay-order-ingestion.ts:213", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/ebay-order-ingestion.ts:213"}, "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-8102e10e96707b5e", "name": "Stray `console.log` in TS/JS \u2014 server/modules/oms/shopify-bridge.ts:252", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/shopify-bridge.ts:252"}, "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-22b8870b0e30735a", "name": "Stray `console.log` in TS/JS \u2014 server/modules/oms/shipstation-sweeper.ts:154", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/shipstation-sweeper.ts:154"}, "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-870f04d0eeabcf04", "name": "Stray `console.log` in TS/JS \u2014 server/modules/oms/wms-sync.service.ts:136", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/wms-sync.service.ts:136"}, "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-e3f8f6e562649ade", "name": "TODO/FIXME marker in shipping code \u2014 server/modules/oms/fulfillment-push.service.ts:1240", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 server/modules/oms/fulfillment-push.service.ts:1240"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b57d75eccbac0c7b", "name": "Stray `console.log` in TS/JS \u2014 server/modules/oms/fulfillment-push.service.ts:489", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/fulfillment-push.service.ts:489"}, "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-f6747773e528e52c", "name": "Stray `console.log` in TS/JS \u2014 server/modules/oms/shipstation.service.ts:1598", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/shipstation.service.ts:1598"}, "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-01203927266deb3b", "name": "Stray `console.log` in TS/JS \u2014 server/modules/oms/fulfillment-sweeper.scheduler.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/fulfillment-sweeper.scheduler.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-f2af975fe104ac61", "name": "Stray `console.log` in TS/JS \u2014 server/modules/oms/member-tier-enrichment.ts:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/member-tier-enrichment.ts:55"}, "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-3f31e8f073ff68e1", "name": "Stray `console.log` in TS/JS \u2014 server/modules/oms/oms-ops-alert.service.ts:161", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/oms-ops-alert.service.ts:161"}, "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-0ee9a92b1ae4e0f5", "name": "Stray `console.log` in TS/JS \u2014 server/modules/oms/oms-flow-reconciliation.service.ts:1207", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/oms-flow-reconciliation.service.ts:1207"}, "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-306f12d1da76c7ba", "name": "Stray `console.log` in TS/JS \u2014 server/modules/oms/oms-webhooks.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/oms-webhooks.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-53fd079c1cbd7b5e", "name": "Stray `console.log` in TS/JS \u2014 server/modules/oms/mc-push.ts:94", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/mc-push.ts:94"}, "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-562a2d03c0ee491b", "name": "Stray `console.log` in TS/JS \u2014 server/modules/oms/channel-fulfillment.service.ts:100", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/channel-fulfillment.service.ts:100"}, "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-0bec4f0891e21292", "name": "Stray `console.log` in TS/JS \u2014 server/modules/oms/reconcilers/ebay.reconciler.ts:160", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/reconcilers/ebay.reconciler.ts:160"}, "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-44fb25512c911b14", "name": "Stray `console.log` in TS/JS \u2014 server/modules/inventory/inventory.routes.ts:371", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/inventory/inventory.routes.ts:371"}, "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-809e6b80a01cd10f", "name": "Stray `console.log` in TS/JS \u2014 server/modules/inventory/application/cycle-count.use-cases.ts:324", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/inventory/application/cycle-count.use-cases.ts:324"}, "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-5304fbc7f993edb2", "name": "Stray `console.log` in TS/JS \u2014 server/modules/inventory/application/replenishment.use-cases.ts:579", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/inventory/application/replenishment.use-cases.ts:579"}, "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-53eddee463d9a2b0", "name": "Stray `console.log` in TS/JS \u2014 server/modules/notifications/notifications.service.ts:115", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/notifications/notifications.service.ts:115"}, "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-2f2804f3ae1bb357", "name": "Stray `console.log` in TS/JS \u2014 server/routes/shopify.routes.ts:437", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/shopify.routes.ts:437"}, "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-f33fc1d9f1feaa7b", "name": "Stray `console.log` in TS/JS \u2014 server/routes/pick-priority.routes.ts:332", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/pick-priority.routes.ts:332"}, "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-e24eae2412f1b627", "name": "Stray `console.log` in TS/JS \u2014 server/routes/ebay-oauth.routes.ts:118", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/ebay-oauth.routes.ts:118"}, "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-c7a2043d05feb14a", "name": "Stray `console.log` in TS/JS \u2014 server/routes/ebay/ebay-listings.routes.ts:411", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/ebay/ebay-listings.routes.ts:411"}, "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-6fe4e51a019a2897", "name": "Stray `console.log` in TS/JS \u2014 server/routes/ebay/ebay-sync-helpers.ts:477", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/ebay/ebay-sync-helpers.ts:477"}, "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-5f7474986b7031ba", "name": "Stray `console.log` in TS/JS \u2014 server/routes/ebay/ebay-utils.ts:119", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/ebay/ebay-utils.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-749b34f6aee8b91d", "name": "Stray `console.log` in TS/JS \u2014 client/src/hooks/use-notifications.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/hooks/use-notifications.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-fc42e0820dcf3b5b", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/layout/AppShell.tsx:403", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/layout/AppShell.tsx:403"}, "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-2a142735f8b5bf5f", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/operations/PickReplenHealthSection.tsx:438", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/operations/PickReplenHealthSection.tsx:438"}, "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-2c27a146aea6a816", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/operations/BinHistorySheet.tsx:155", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/operations/BinHistorySheet.tsx:155"}, "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-1ad0fec30bea8e9a", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/operations/ActionQueueSection.tsx:219", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/operations/ActionQueueSection.tsx:219"}, "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-ab743b7aeaba5d26", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/operations/BinInventorySection.tsx:292", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/operations/BinInventorySection.tsx:292"}, "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-a52e01eac968a48c", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/operations/RecentActivitySection.tsx:184", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/operations/RecentActivitySection.tsx:184"}, "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-aae60f578f0cdbe2", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ebay/SyncProgressModal.tsx:279", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ebay/SyncProgressModal.tsx:279"}, "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-8a9d254b8095be20", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ebay/ProductTypeManager.tsx:297", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ebay/ProductTypeManager.tsx:297"}, "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-e4592cad2a546b0f", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ebay/EbayCategoryPicker.tsx:277", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ebay/EbayCategoryPicker.tsx:277"}, "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-4d28504c2a76fff8", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ebay/PushProgressModal.tsx:348", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ebay/PushProgressModal.tsx:348"}, "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-8c41bbdc93c2bb5c", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ebay/EbayListingRules.tsx:550", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ebay/EbayListingRules.tsx:550"}, "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-1cfa071a74c7fc0d", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/shipment/AddInvoiceFromCostsModal.tsx:399", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/shipment/AddInvoiceFromCostsModal.tsx:399"}, "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-8d5074a1be2639c7", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/components/ui/chart.tsx:79", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/components/ui/chart.tsx:79"}, "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-6786ef3d13791581", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Suppliers.tsx:979", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Suppliers.tsx:979"}, "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-f5e7519bd1e0c0f7", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/SyncLogPage.tsx:304", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/SyncLogPage.tsx:304"}, "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-1a8b756e53df84f3", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/OmsOrders.tsx:519", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/OmsOrders.tsx:519"}, "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-22f098ebde633d74", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/PurchasingDashboard.tsx:981", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/PurchasingDashboard.tsx:981"}, "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-defdc29e97938c79", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Products.tsx:449", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Products.tsx:449"}, "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-87e5dbe4b0a9e6d4", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/SlottingSetup.tsx:757", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/SlottingSetup.tsx:757"}, "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-b2965bcf96fb918e", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/WarehouseLocations.tsx:1559", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/WarehouseLocations.tsx:1559"}, "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-0d8820f4fc6bdd18", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Subscriptions.tsx:936", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Subscriptions.tsx:936"}, "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-2db3cb8c50339eac", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/PurchaseOrders.tsx:909", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/PurchaseOrders.tsx:909"}, "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-e9f04323a7264760", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Transfers.tsx:477", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Transfers.tsx:477"}, "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-5f5bfc8a023c8994", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Dropship.tsx:4234", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Dropship.tsx:4234"}, "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-8cab6caf8a78201e", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Receiving.tsx:180", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Receiving.tsx:180"}, "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-e3bfcf628c2cc03c", "name": "Stray `console.log` in TS/JS \u2014 client/src/pages/Receiving.tsx:932", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/pages/Receiving.tsx:932"}, "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-fb6eda03ae10eb3f", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/CycleCounts.tsx:1072", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/CycleCounts.tsx:1072"}, "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-b4618d0d5c4a9960", "name": "Stray `console.log` in TS/JS \u2014 client/src/pages/CycleCounts.tsx:828", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/pages/CycleCounts.tsx:828"}, "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-6e765061489e6cff", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Inventory.tsx:1523", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Inventory.tsx:1523"}, "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-89a5e30142b4bc2f", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/InboundShipmentDetail.tsx:1104", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/InboundShipmentDetail.tsx:1104"}, "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-1c69348be41cab42", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/InventoryHistory.tsx:363", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/InventoryHistory.tsx:363"}, "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-a5572109552bf6a7", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Roles.tsx:285", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Roles.tsx:285"}, "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-63f261737b038a17", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Reserves.tsx:444", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Reserves.tsx:444"}, "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-a3e6b5da3119513f", "name": "TODO/FIXME marker in shipping code \u2014 client/src/pages/Reserves.tsx:415", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 client/src/pages/Reserves.tsx:415"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1d60c255ef1788ad", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Returns.tsx:350", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Returns.tsx:350"}, "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-8894eb75bfc4eb12", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/VendorDetail.tsx:129", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/VendorDetail.tsx:129"}, "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-82b1ae54609d5e6d", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Channels.tsx:747", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Channels.tsx:747"}, "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-f08dc68ef4076660", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/FlowMonitor.tsx:476", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/FlowMonitor.tsx:476"}, "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-759cfbbd91e27266", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Replenishment.tsx:1948", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Replenishment.tsx:1948"}, "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-7981171a8e3af173", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/ProductLines.tsx:436", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/ProductLines.tsx:436"}, "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-b49f07bc10267401", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/APPayments.tsx:392", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/APPayments.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-33c272053bf779f0", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/ChannelAllocation.tsx:500", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/ChannelAllocation.tsx:500"}, "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-aa3386b39613b04f", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/APInvoiceDetail.tsx:624", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/APInvoiceDetail.tsx:624"}, "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-0a3009e79a41dacb", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/CostDashboard.tsx:415", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/CostDashboard.tsx:415"}, "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-a9a7343a6d346d6f", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/ProductDetail.tsx:1717", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/ProductDetail.tsx:1717"}, "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-fb2997b3941bce2b", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Picking.tsx:478", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Picking.tsx:478"}, "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-01acaf57b9ddacc4", "name": "Stray `console.log` in TS/JS \u2014 client/src/pages/Picking.tsx:698", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/pages/Picking.tsx:698"}, "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-8047c12834301e86", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Variants.tsx:707", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Variants.tsx:707"}, "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-e99fe53b8dd3205c", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/PurchaseOrderEdit.tsx:1427", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/PurchaseOrderEdit.tsx:1427"}, "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-fa9a3b81096fb55c", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/PurchasingView.tsx:1044", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/PurchasingView.tsx:1044"}, "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-8d99fd402d2a900f", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Orders.tsx:646", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Orders.tsx:646"}, "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-c789fe3dfa7c5ecd", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/PurchaseOrderDetail.tsx:2356", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/PurchaseOrderDetail.tsx:2356"}, "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-73f0e637a42586ef", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/PickingLogs.tsx:339", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/PickingLogs.tsx:339"}, "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-4626582e267cfa9c", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/dropship/DropshipPortalOrders.tsx:551", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/dropship/DropshipPortalOrders.tsx:551"}, "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-09ff4460737dea50", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/dropship/DropshipPortalSettings.tsx:471", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/dropship/DropshipPortalSettings.tsx:471"}, "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-cc841f1e69a1ea41", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/dropship/DropshipPortalDashboard.tsx:344", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/dropship/DropshipPortalDashboard.tsx:344"}, "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-ec02fe36689bdd7d", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/features/po-edit/AddToCatalogDialog.tsx:143", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/features/po-edit/AddToCatalogDialog.tsx:143"}, "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-f619aa062812623b", "name": "Stray `console.log` in TS/JS \u2014 test/setup-integration.ts:301", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/setup-integration.ts:301"}, "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-ff6561438d4d4233", "name": "Stray `console.log` in TS/JS \u2014 migrations/run-migrations.ts:83", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 migrations/run-migrations.ts:83"}, "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-d623b355a1ee7851", "name": "Insecure pattern 'node_child_process' in auto_push.cjs:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in auto_push.cjs:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4e54b51c6633f634", "name": "Insecure pattern 'node_child_process' in push.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in push.ts:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a34a90f083702cd0", "name": "Insecure pattern 'node_child_process' in temp_generate.js:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in temp_generate.js:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6ba600724b9dd875", "name": "Insecure pattern 'node_child_process' in scripts/__tests__/dropship-dogfood-status.test.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/__tests__/dropship-dogfood-status.test.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ecf9813a9027a9ba", "name": "Possible secret in server/modules/dropship/__tests__/unit/dropship-ops-surface-service.test.ts", "shortDescription": {"text": "Possible secret in server/modules/dropship/__tests__/unit/dropship-ops-surface-service.test.ts"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-46e7cfdc226a7702", "name": "Possible secret in server/modules/dropship/__tests__/unit/dropship-shopify-webhook-security.test.ts", "shortDescription": {"text": "Possible secret in server/modules/dropship/__tests__/unit/dropship-shopify-webhook-security.test.ts"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-a76d32069efb1d7b", "name": "Possible secret in server/modules/dropship/__tests__/unit/dropship-marketplace-oauth-providers.test.ts", "shortDescription": {"text": "Possible secret in server/modules/dropship/__tests__/unit/dropship-marketplace-oauth-providers.test.ts"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-25e378dc2cd28493", "name": "Insecure pattern 'dangerous_innerhtml' in client/src/components/ui/chart.tsx:79", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in client/src/components/ui/chart.tsx:79"}, "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-113863bf58ff0df8", "name": "Very large file: ops-portal.jsx (1470 lines)", "shortDescription": {"text": "Very large file: ops-portal.jsx (1470 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5f84e23b5f00851a", "name": "Very large file: server/index.ts (1519 lines)", "shortDescription": {"text": "Very large file: server/index.ts (1519 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b661ba21f66ac9a1", "name": "Very large file: server/modules/dropship/application/dropship-ops-surface-service.ts (1564 lines)", "shortDescription": {"text": "Very large file: server/modules/dropship/application/dropship-ops-surface-service.ts (1564 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e6f79f1d0758697b", "name": "Very large file: server/modules/dropship/infrastructure/dropship-return.repository.ts (1574 lines)", "shortDescription": {"text": "Very large file: server/modules/dropship/infrastructure/dropship-return.repository.ts (1574 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-70865975f213ce30", "name": "Very large file: server/modules/dropship/infrastructure/dropship-ops-surface.repository.ts (1890 lines)", "shortDescription": {"text": "Very large file: server/modules/dropship/infrastructure/dropship-ops-surface.repository.ts (1890 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7101c3b2ac5bf6ae", "name": "Very large file: server/modules/dropship/infrastructure/dropship-wallet.repository.ts (1794 lines)", "shortDescription": {"text": "Very large file: server/modules/dropship/infrastructure/dropship-wallet.repository.ts (1794 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d852b62e4198b724", "name": "Very large file: server/modules/procurement/ap-ledger.service.ts (2073 lines)", "shortDescription": {"text": "Very large file: server/modules/procurement/ap-ledger.service.ts (2073 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-252985edf1609610", "name": "Very large file: server/modules/procurement/purchasing.service.ts (3494 lines)", "shortDescription": {"text": "Very large file: server/modules/procurement/purchasing.service.ts (3494 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-50408fd259b38a89", "name": "Very large file: server/modules/procurement/procurement.storage.ts (2266 lines)", "shortDescription": {"text": "Very large file: server/modules/procurement/procurement.storage.ts (2266 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b8f4bee57c101252", "name": "Very large file: server/modules/procurement/purchasing-recommendation.engine.ts (1871 lines)", "shortDescription": {"text": "Very large file: server/modules/procurement/purchasing-recommendation.engine.ts (1871 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-98fca62b19dd9205", "name": "Very large file: server/modules/procurement/shipment-tracking.service.ts (1718 lines)", "shortDescription": {"text": "Very large file: server/modules/procurement/shipment-tracking.service.ts (1718 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8f58a4db0dffd3be", "name": "Very large file: server/modules/procurement/purchasing-recommendation.routes.ts (1582 lines)", "shortDescription": {"text": "Very large file: server/modules/procurement/purchasing-recommendation.routes.ts (1582 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4e1c873d599365fb", "name": "Very large file: server/modules/procurement/__tests__/unit/purchasing-recommendation.routes.test.ts (2151 lines)", "shortDescription": {"text": "Very large file: server/modules/procurement/__tests__/unit/purchasing-recommendation.routes.test.ts (2151 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a65f18a02e59b095", "name": "Very large file: server/modules/channels/echelon-sync-orchestrator.service.ts (1595 lines)", "shortDescription": {"text": "Very large file: server/modules/channels/echelon-sync-orchestrator.service.ts (1595 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1f1326dfad839dfa", "name": "Very large file: server/modules/channels/channels.routes.ts (2561 lines)", "shortDescription": {"text": "Very large file: server/modules/channels/channels.routes.ts (2561 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5cdd56d8d1d0bf05", "name": "Very large file: server/modules/orders/orders.storage.ts (1624 lines)", "shortDescription": {"text": "Very large file: server/modules/orders/orders.storage.ts (1624 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e2d06983822a7fac", "name": "Very large file: server/modules/orders/picking.use-cases.ts (2386 lines)", "shortDescription": {"text": "Very large file: server/modules/orders/picking.use-cases.ts (2386 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4226c8efd0539f0e", "name": "Very large file: server/modules/orders/operations-dashboard.service.ts (1620 lines)", "shortDescription": {"text": "Very large file: server/modules/orders/operations-dashboard.service.ts (1620 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-92dc22ddf5e6c589", "name": "Very large file: server/modules/orders/__tests__/unit/shipment-rollup.test.ts (1739 lines)", "shortDescription": {"text": "Very large file: server/modules/orders/__tests__/unit/shipment-rollup.test.ts (1739 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-99efcce8d0c117cf", "name": "Very large file: server/modules/catalog/catalog.routes.ts (2400 lines)", "shortDescription": {"text": "Very large file: server/modules/catalog/catalog.routes.ts (2400 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0f7e92294aa906d8", "name": "Very large file: server/modules/oms/webhook-retry.worker.ts (2070 lines)", "shortDescription": {"text": "Very large file: server/modules/oms/webhook-retry.worker.ts (2070 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e846a29a43a958ed", "name": "Very large file: server/modules/oms/wms-sync.service.ts (1927 lines)", "shortDescription": {"text": "Very large file: server/modules/oms/wms-sync.service.ts (1927 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4f4bcea554caf54e", "name": "Very large file: server/modules/oms/fulfillment-push.service.ts (2500 lines)", "shortDescription": {"text": "Very large file: server/modules/oms/fulfillment-push.service.ts (2500 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e0c102b2247993e5", "name": "Very large file: server/modules/oms/shipstation.service.ts (3699 lines)", "shortDescription": {"text": "Very large file: server/modules/oms/shipstation.service.ts (3699 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-738faee73486896f", "name": "Very large file: server/modules/oms/oms-webhooks.ts (2250 lines)", "shortDescription": {"text": "Very large file: server/modules/oms/oms-webhooks.ts (2250 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2db4885b50bc0ad7", "name": "Very large file: server/modules/oms/__tests__/unit/ship-notify-retry.test.ts (1953 lines)", "shortDescription": {"text": "Very large file: server/modules/oms/__tests__/unit/ship-notify-retry.test.ts (1953 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-77f7b9547ea435c5", "name": "Very large file: server/modules/oms/__tests__/unit/push-shopify-fulfillment.test.ts (2349 lines)", "shortDescription": {"text": "Very large file: server/modules/oms/__tests__/unit/push-shopify-fulfillment.test.ts (2349 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-34d51e4e93c237f9", "name": "Very large file: server/modules/inventory/inventory.routes.ts (2786 lines)", "shortDescription": {"text": "Very large file: server/modules/inventory/inventory.routes.ts (2786 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4cf62c6641e791cc", "name": "Very large file: server/modules/inventory/application/cycle-count.use-cases.ts (1852 lines)", "shortDescription": {"text": "Very large file: server/modules/inventory/application/cycle-count.use-cases.ts (1852 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-df0128a1d0cc6f7b", "name": "Very large file: server/modules/inventory/application/replenishment.use-cases.ts (3653 lines)", "shortDescription": {"text": "Very large file: server/modules/inventory/application/replenishment.use-cases.ts (3653 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-87c1ab0df3dad255", "name": "Very large file: server/routes/shopify.routes.ts (1643 lines)", "shortDescription": {"text": "Very large file: server/routes/shopify.routes.ts (1643 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4af2fdaf9a2550dc", "name": "Very large file: server/routes/ebay/ebay-listings.routes.ts (1913 lines)", "shortDescription": {"text": "Very large file: server/routes/ebay/ebay-listings.routes.ts (1913 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c7b8045227bf9313", "name": "Very large file: client/src/pages/Suppliers.tsx (1979 lines)", "shortDescription": {"text": "Very large file: client/src/pages/Suppliers.tsx (1979 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c53b730dfd8e3be1", "name": "Very large file: client/src/pages/PurchasingDashboard.tsx (1802 lines)", "shortDescription": {"text": "Very large file: client/src/pages/PurchasingDashboard.tsx (1802 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-181d6b3d61a488eb", "name": "Very large file: client/src/pages/WarehouseLocations.tsx (1657 lines)", "shortDescription": {"text": "Very large file: client/src/pages/WarehouseLocations.tsx (1657 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5c51b4cd0f5e15e2", "name": "Very large file: client/src/pages/PurchaseOrders.tsx (1361 lines)", "shortDescription": {"text": "Very large file: client/src/pages/PurchaseOrders.tsx (1361 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5b0aa38e0918b6a9", "name": "Very large file: client/src/pages/Transfers.tsx (1144 lines)", "shortDescription": {"text": "Very large file: client/src/pages/Transfers.tsx (1144 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4dc5f5e6a88ecad1", "name": "Very large file: client/src/pages/Dropship.tsx (7393 lines)", "shortDescription": {"text": "Very large file: client/src/pages/Dropship.tsx (7393 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e0c219c6b31fefc7", "name": "Very large file: client/src/pages/Receiving.tsx (2618 lines)", "shortDescription": {"text": "Very large file: client/src/pages/Receiving.tsx (2618 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72e751a8e325e3db", "name": "Very large file: client/src/pages/CycleCounts.tsx (3529 lines)", "shortDescription": {"text": "Very large file: client/src/pages/CycleCounts.tsx (3529 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5bfbb71bc6f8538b", "name": "Very large file: client/src/pages/Inventory.tsx (2675 lines)", "shortDescription": {"text": "Very large file: client/src/pages/Inventory.tsx (2675 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1f36ef79ee1f8e3a", "name": "Very large file: client/src/pages/InboundShipmentDetail.tsx (2917 lines)", "shortDescription": {"text": "Very large file: client/src/pages/InboundShipmentDetail.tsx (2917 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0febdfa4c3e2b9ba", "name": "Very large file: client/src/pages/EbayChannelPage.tsx (2513 lines)", "shortDescription": {"text": "Very large file: client/src/pages/EbayChannelPage.tsx (2513 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-abe929a25e8c2382", "name": "Very large file: client/src/pages/Replenishment.tsx (3519 lines)", "shortDescription": {"text": "Very large file: client/src/pages/Replenishment.tsx (3519 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3d57a0c8811a8d68", "name": "Very large file: client/src/pages/ProductLines.tsx (1800 lines)", "shortDescription": {"text": "Very large file: client/src/pages/ProductLines.tsx (1800 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8f008c04e20f70f1", "name": "Very large file: client/src/pages/ChannelAllocation.tsx (1249 lines)", "shortDescription": {"text": "Very large file: client/src/pages/ChannelAllocation.tsx (1249 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aebf0b9e1367c090", "name": "Very large file: client/src/pages/CostDashboard.tsx (1284 lines)", "shortDescription": {"text": "Very large file: client/src/pages/CostDashboard.tsx (1284 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0e5d77897c886eba", "name": "Very large file: client/src/pages/ProductDetail.tsx (3648 lines)", "shortDescription": {"text": "Very large file: client/src/pages/ProductDetail.tsx (3648 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5b6e89e0230008b6", "name": "Very large file: client/src/pages/Picking.tsx (5016 lines)", "shortDescription": {"text": "Very large file: client/src/pages/Picking.tsx (5016 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-afaca951815e8e5c", "name": "Very large file: client/src/pages/Variants.tsx (1553 lines)", "shortDescription": {"text": "Very large file: client/src/pages/Variants.tsx (1553 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-87aaa4456fc37856", "name": "Very large file: client/src/pages/PurchaseOrderEdit.tsx (2379 lines)", "shortDescription": {"text": "Very large file: client/src/pages/PurchaseOrderEdit.tsx (2379 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ec0d2c9d418ebe45", "name": "Very large file: client/src/pages/PurchasingView.tsx (1536 lines)", "shortDescription": {"text": "Very large file: client/src/pages/PurchasingView.tsx (1536 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f4e6700e7a3dec4a", "name": "Very large file: client/src/pages/Orders.tsx (1899 lines)", "shortDescription": {"text": "Very large file: client/src/pages/Orders.tsx (1899 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-03ac72eecf524ccd", "name": "Very large file: client/src/pages/PurchaseOrderDetail.tsx (4297 lines)", "shortDescription": {"text": "Very large file: client/src/pages/PurchaseOrderDetail.tsx (4297 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4571b72b5633c9d7", "name": "Very large file: client/src/pages/Dashboard.tsx (1287 lines)", "shortDescription": {"text": "Very large file: client/src/pages/Dashboard.tsx (1287 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bfb445d3191d6df0", "name": "Very large file: client/src/lib/dropship-ops-surface.ts (3938 lines)", "shortDescription": {"text": "Very large file: client/src/lib/dropship-ops-surface.ts (3938 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-45ed3561c7d71180", "name": "Very large file: client/src/lib/__tests__/dropship-ops-surface.test.ts (1794 lines)", "shortDescription": {"text": "Very large file: client/src/lib/__tests__/dropship-ops-surface.test.ts (1794 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1e13e9eea4c66de6", "name": "Very large file: shared/schema/procurement.schema.ts (1329 lines)", "shortDescription": {"text": "Very large file: shared/schema/procurement.schema.ts (1329 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a906658698b6e7b5", "name": "Very large file: shared/schema/dropship.schema.ts (1460 lines)", "shortDescription": {"text": "Very large file: shared/schema/dropship.schema.ts (1460 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-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-faccb9061e9b52a0", "name": "No README detected", "shortDescription": {"text": "No README detected"}, "fullDescription": {"text": "No README file was found. Generated repos without README context are hard to operate, validate, or safely hand off."}, "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 1577 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 565 placeholder/mock markers across 86 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, operator-readme. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "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, operator-readme. 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-13d39d029dec3809", "name": "`fetch()` without try/.catch or AbortSignal \u2014 dump-settings.ts:5", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 dump-settings.ts:5"}, "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-267f33a2d4c317c2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 check_shopify_contract.js:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 check_shopify_contract.js:28"}, "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-6d066570082985f1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 check-shopify-images.ts:24", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 check-shopify-images.ts:24"}, "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-062e4f00bc68262c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/import_ebay_to_echelon.ts:38", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/import_ebay_to_echelon.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-1dda7be9eb84eb28", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/rescue_ebay_images.ts:22", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/rescue_ebay_images.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-3ca175697adf4bd4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/push-ebay-images-to-shopify.ts:34", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/push-ebay-images-to-shopify.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-1ad44f3ea79deac5", "name": "Commented-code block (6 lines) in scripts/backfill-wms-oms-fulfillment-order-id-from-gid.ts:107", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/backfill-wms-oms-fulfillment-order-id-from-gid.ts:107"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7d856668506c63dd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sync_images_all.ts:19", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sync_images_all.ts:19"}, "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-1003ce934c82b540", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/cleanup-duplicate-wms-orders.ts:472", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/cleanup-duplicate-wms-orders.ts:472"}, "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-14327a8f26613826", "name": "Commented-code block (5 lines) in scripts/parity-check-push.ts:336", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/parity-check-push.ts:336"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b20e229a633d04bb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/list-shipstation-stores.mjs:15", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/list-shipstation-stores.mjs:15"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b7a932a70b2e06ee", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/backfill-shopify-oms-line-fulfillment-status.ts:205", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/backfill-shopify-oms-line-fulfillment-status.ts:205"}, "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-c655f0f4e4fe2967", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sync-ebay-images.ts:32", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sync-ebay-images.ts:32"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1b800c0b12213450", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/list-shipstation-warehouses.mjs:15", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/list-shipstation-warehouses.mjs:15"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e1b0c201593b4bdd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/_ca-backfill.ts:30", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/_ca-backfill.ts:30"}, "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-5da914f8ed716a60", "name": "Commented-code block (8 lines) in scripts/__tests__/backfill-wms-oms-link.test.ts:6", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/__tests__/backfill-wms-oms-link.test.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ad3e320154325441", "name": "Commented-code block (5 lines) in scripts/__tests__/backfill-wms-oms-fulfillment-order-id-from-gid.test.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/__tests__/backfill-wms-oms-fulfillment-order-id-from-gid.test.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6145ab233046aa9b", "name": "Commented-code block (6 lines) in scripts/__tests__/backfill-wms-oms-fulfillment-order-id-from-external-order-number.tes", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/__tests__/backfill-wms-oms-fulfillment-order-id-from-external-order-number.test.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b99a7bfc67887f50", "name": "Commented-code block (5 lines) in server/index.ts:1139", "shortDescription": {"text": "Commented-code block (5 lines) in server/index.ts:1139"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a88b3df502ca81f5", "name": "Commented-code block (7 lines) in server/db.ts:53", "shortDescription": {"text": "Commented-code block (7 lines) in server/db.ts:53"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e5810f68ad6d812a", "name": "Commented-code block (5 lines) in server/modules/wms/create-shipment.ts:301", "shortDescription": {"text": "Commented-code block (5 lines) in server/modules/wms/create-shipment.ts:301"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-23a2193f3d4dee99", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/dropship/infrastructure/dropship-marketplace-oauth.provider", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/dropship/infrastructure/dropship-marketplace-oauth.providers.ts:93"}, "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-b7b5ee2a8a76a4ab", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/dropship/__tests__/unit/dropship-vendor-catalog.routes.test", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/dropship/__tests__/unit/dropship-vendor-catalog.routes.test.ts:150"}, "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-9d309f1d1acd11fb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/dropship/__tests__/unit/dropship-shopify-order-webhook.rout", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/dropship/__tests__/unit/dropship-shopify-order-webhook.routes.test.ts:169"}, "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-bf35f99d7f5bf3d0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/dropship/__tests__/unit/dropship-admin-worker-ops.routes.te", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/dropship/__tests__/unit/dropship-admin-worker-ops.routes.test.ts:121"}, "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-59bdf923dc8e75c9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/dropship/__tests__/unit/dropship-admin-order-ops.routes.tes", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/dropship/__tests__/unit/dropship-admin-order-ops.routes.test.ts:145"}, "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-668be9b98cfd45d6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/dropship/__tests__/unit/dropship-shopify-uninstall-webhook.", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/dropship/__tests__/unit/dropship-shopify-uninstall-webhook.routes.test.ts:87"}, "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-a5c2e10addb5ed7d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/dropship/__tests__/unit/dropship-ops-surface.routes.test.ts", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/dropship/__tests__/unit/dropship-ops-surface.routes.test.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-aa2b3b0a05c02bd5", "name": "Commented-code block (7 lines) in server/modules/warehouse/warehouse.routes.ts:400", "shortDescription": {"text": "Commented-code block (7 lines) in server/modules/warehouse/warehouse.routes.ts:400"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1457cda3653de769", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/warehouse/__tests__/unit/sla-cutoff.routes.test.ts:49", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/warehouse/__tests__/unit/sla-cutoff.routes.test.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-320244053df26655", "name": "Commented-code block (6 lines) in server/modules/procurement/purchasing.service.ts:211", "shortDescription": {"text": "Commented-code block (6 lines) in server/modules/procurement/purchasing.service.ts:211"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3282c3ba5b8bfb36", "name": "Commented-code block (5 lines) in server/modules/procurement/procurement.storage.ts:1276", "shortDescription": {"text": "Commented-code block (5 lines) in server/modules/procurement/procurement.storage.ts:1276"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-38638dd61cb76c3b", "name": "Commented-code block (6 lines) in server/modules/procurement/receiving.service.ts:71", "shortDescription": {"text": "Commented-code block (6 lines) in server/modules/procurement/receiving.service.ts:71"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e3baa9e15dffdcfa", "name": "Legacy-named symbol `recent_order_velocity_v1` in server/modules/procurement/purchasing-demand-forecast.engine.ts:10", "shortDescription": {"text": "Legacy-named symbol `recent_order_velocity_v1` in server/modules/procurement/purchasing-demand-forecast.engine.ts:10"}, "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-9e7c6600495dad34", "name": "Commented-code block (8 lines) in server/modules/procurement/purchase-order.routes.ts:211", "shortDescription": {"text": "Commented-code block (8 lines) in server/modules/procurement/purchase-order.routes.ts:211"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1f9b100b466ce4cc", "name": "Commented-code block (5 lines) in server/modules/procurement/__tests__/unit/ap-ledger-record-payment.test.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in server/modules/procurement/__tests__/unit/ap-ledger-record-payment.test.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5a6f9de1b5363ef8", "name": "Commented-code block (7 lines) in server/modules/procurement/__tests__/unit/bulk-upsert-catalog.service.test.ts:7", "shortDescription": {"text": "Commented-code block (7 lines) in server/modules/procurement/__tests__/unit/bulk-upsert-catalog.service.test.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-addc389417e39f0a", "name": "Commented-code block (8 lines) in server/modules/procurement/__tests__/unit/po-phase2-api.test.ts:6", "shortDescription": {"text": "Commented-code block (8 lines) in server/modules/procurement/__tests__/unit/po-phase2-api.test.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-54e093bda0bf2e02", "name": "Legacy-named symbol `recent_order_velocity_v1` in server/modules/procurement/__tests__/unit/purchasing-recommendation.ru", "shortDescription": {"text": "Legacy-named symbol `recent_order_velocity_v1` in server/modules/procurement/__tests__/unit/purchasing-recommendation.run-detail.test.ts:80"}, "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-80673ef849b7300d", "name": "Commented-code block (7 lines) in server/modules/procurement/__tests__/unit/line-types.service.test.ts:7", "shortDescription": {"text": "Commented-code block (7 lines) in server/modules/procurement/__tests__/unit/line-types.service.test.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-96c9601e417338d8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/procurement/__tests__/unit/inbound-shipment.routes.test.ts:", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/procurement/__tests__/unit/inbound-shipment.routes.test.ts:127"}, "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-08da9d61d3e90fff", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/procurement/__tests__/unit/procurement-health.routes.test.t", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/procurement/__tests__/unit/procurement-health.routes.test.ts:71"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-82c3c9e1f5c61f78", "name": "Commented-code block (9 lines) in server/modules/procurement/__tests__/unit/totals-based-cost.service.test.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in server/modules/procurement/__tests__/unit/totals-based-cost.service.test.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a58de3f66685412d", "name": "Legacy-named symbol `recent_order_velocity_v1` in server/modules/procurement/__tests__/unit/purchasing-demand-forecast.e", "shortDescription": {"text": "Legacy-named symbol `recent_order_velocity_v1` in server/modules/procurement/__tests__/unit/purchasing-demand-forecast.engine.test.ts:22"}, "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-5f543cc330e48dbb", "name": "Commented-code block (9 lines) in server/modules/procurement/__tests__/unit/shipment-invoices-phase2.test.ts:6", "shortDescription": {"text": "Commented-code block (9 lines) in server/modules/procurement/__tests__/unit/shipment-invoices-phase2.test.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d620f18594f58c49", "name": "Legacy-named symbol `recent_order_velocity_v1` in server/modules/procurement/__tests__/unit/purchasing-recommendation.en", "shortDescription": {"text": "Legacy-named symbol `recent_order_velocity_v1` in server/modules/procurement/__tests__/unit/purchasing-recommendation.engine.test.ts:138"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-376cd1d5c0ad6b0a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/procurement/__tests__/unit/purchasing-admin.routes.test.ts:", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/procurement/__tests__/unit/purchasing-admin.routes.test.ts:83"}, "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-e56321208f184a24", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/procurement/__tests__/unit/ap-ledger.routes.test.ts:88", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/procurement/__tests__/unit/ap-ledger.routes.test.ts:88"}, "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-13931d1afb956297", "name": "Commented-code block (16 lines) in server/modules/procurement/__tests__/unit/dual-track.service.test.ts:18", "shortDescription": {"text": "Commented-code block (16 lines) in server/modules/procurement/__tests__/unit/dual-track.service.test.ts:18"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0c7c9a9230fbfc77", "name": "Commented-code block (10 lines) in server/modules/procurement/__tests__/unit/po-create-send.service.test.ts:7", "shortDescription": {"text": "Commented-code block (10 lines) in server/modules/procurement/__tests__/unit/po-create-send.service.test.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-938d02e44572283d", "name": "Commented-code block (5 lines) in server/modules/procurement/__tests__/unit/typed-line-allocator.test.ts:7", "shortDescription": {"text": "Commented-code block (5 lines) in server/modules/procurement/__tests__/unit/typed-line-allocator.test.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-50c8e5b9a3f55b2f", "name": "Commented-code block (15 lines) in server/modules/procurement/__tests__/unit/receiving-mills.test.ts:11", "shortDescription": {"text": "Commented-code block (15 lines) in server/modules/procurement/__tests__/unit/receiving-mills.test.ts:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-59fa52f0dc47d28e", "name": "Commented-code block (11 lines) in server/modules/procurement/__tests__/unit/po-close-3way-match.test.ts:7", "shortDescription": {"text": "Commented-code block (11 lines) in server/modules/procurement/__tests__/unit/po-close-3way-match.test.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9fae7ff0b433efc6", "name": "Commented-code block (5 lines) in server/modules/procurement/__tests__/unit/receipt-discard.service.test.ts:7", "shortDescription": {"text": "Commented-code block (5 lines) in server/modules/procurement/__tests__/unit/receipt-discard.service.test.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-581ea229b1991e33", "name": "Commented-code block (7 lines) in server/modules/procurement/__tests__/unit/mills-precision.service.test.ts:7", "shortDescription": {"text": "Commented-code block (7 lines) in server/modules/procurement/__tests__/unit/mills-precision.service.test.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-21b189c041c70abc", "name": "Commented-code block (11 lines) in server/modules/procurement/__tests__/unit/po-exceptions.service.test.ts:6", "shortDescription": {"text": "Commented-code block (11 lines) in server/modules/procurement/__tests__/unit/po-exceptions.service.test.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e565bb10aa2c3c6f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/procurement/__tests__/unit/po-mark-transitions.routes.test.", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/procurement/__tests__/unit/po-mark-transitions.routes.test.ts:114"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4dc3fbfc196becaf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/procurement/__tests__/unit/procurement-report.routes.test.t", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/procurement/__tests__/unit/procurement-report.routes.test.ts:51"}, "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-3015ac091252b562", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/procurement/__tests__/unit/receiving.routes.test.ts:63", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/procurement/__tests__/unit/receiving.routes.test.ts:63"}, "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-d9c8109eb2d2a861", "name": "Legacy-named symbol `recent_order_velocity_v1` in server/modules/procurement/__tests__/unit/purchasing-recommendation.ro", "shortDescription": {"text": "Legacy-named symbol `recent_order_velocity_v1` in server/modules/procurement/__tests__/unit/purchasing-recommendation.routes.test.ts:1494"}, "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-b563240a5cc34868", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/procurement/__tests__/unit/purchasing-recommendation.routes", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/procurement/__tests__/unit/purchasing-recommendation.routes.test.ts:100"}, "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-feeb84f12d59d431", "name": "Commented-code block (6 lines) in server/modules/procurement/__tests__/unit/po-create-send.routes.test.ts:8", "shortDescription": {"text": "Commented-code block (6 lines) in server/modules/procurement/__tests__/unit/po-create-send.routes.test.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5da1c5f6724296d8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/integrations/shopify.ts:83", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/integrations/shopify.ts:83"}, "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-716a89d9d08712f2", "name": "Commented-code block (5 lines) in server/modules/channels/channels.routes.ts:215", "shortDescription": {"text": "Commented-code block (5 lines) in server/modules/channels/channels.routes.ts:215"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6bb754246d57bf8b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/channels/channels.routes.ts:681", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/channels/channels.routes.ts:681"}, "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-147d90a12e16ed64", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/channels/sync.service.ts:789", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/channels/sync.service.ts:789"}, "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-bcd4abf240737ba5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/channels/catalog-backfill.service.ts:1155", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/channels/catalog-backfill.service.ts:1155"}, "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-7415e1c180b763ca", "name": "Commented-code block (5 lines) in server/modules/channels/product-push.service.ts:555", "shortDescription": {"text": "Commented-code block (5 lines) in server/modules/channels/product-push.service.ts:555"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1547cfd833a3a769", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/channels/product-push.service.ts:450", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/channels/product-push.service.ts:450"}, "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-b9b2da4d742aae60", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/channels/adapters/shopify.adapter.ts:595", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/channels/adapters/shopify.adapter.ts:595"}, "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-316ff0225b77e1f1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/channels/adapters/ebay/ebay-auth.service.ts:151", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/channels/adapters/ebay/ebay-auth.service.ts:151"}, "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-879f7214c619005e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/subscriptions/infrastructure/shopify.adapter.ts:11", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/subscriptions/infrastructure/shopify.adapter.ts:11"}, "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-bebf049be5119ad0", "name": "Commented-code block (6 lines) in server/modules/shipping/adapters/shipstation.adapter.ts:212", "shortDescription": {"text": "Commented-code block (6 lines) in server/modules/shipping/adapters/shipstation.adapter.ts:212"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e62a04ee0b63bb23", "name": "Commented-code block (5 lines) in server/modules/orders/sort-rank.ts:86", "shortDescription": {"text": "Commented-code block (5 lines) in server/modules/orders/sort-rank.ts:86"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-48b3534d7fb3497f", "name": "Commented-code block (9 lines) in server/modules/orders/orders.storage.ts:869", "shortDescription": {"text": "Commented-code block (9 lines) in server/modules/orders/orders.storage.ts:869"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d1c1c5f5157ec4bb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/orders/shopify-order-reconciliation.ts:148", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/orders/shopify-order-reconciliation.ts:148"}, "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-74163320c899998f", "name": "Commented-code block (7 lines) in server/modules/orders/combining.service.ts:153", "shortDescription": {"text": "Commented-code block (7 lines) in server/modules/orders/combining.service.ts:153"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8c72fd0a5379866a", "name": "Commented-code block (7 lines) in server/modules/orders/fulfillment.service.ts:321", "shortDescription": {"text": "Commented-code block (7 lines) in server/modules/orders/fulfillment.service.ts:321"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-986166b50c360af7", "name": "Commented-code block (8 lines) in server/modules/orders/sla-monitor.service.ts:79", "shortDescription": {"text": "Commented-code block (8 lines) in server/modules/orders/sla-monitor.service.ts:79"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e65840b66563deaf", "name": "Commented-code block (7 lines) in server/modules/orders/shipment-rollup.ts:250", "shortDescription": {"text": "Commented-code block (7 lines) in server/modules/orders/shipment-rollup.ts:250"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bdc764bf0b3418f7", "name": "Commented-code block (7 lines) in server/modules/orders/__tests__/inventory-fixes.test.ts:303", "shortDescription": {"text": "Commented-code block (7 lines) in server/modules/orders/__tests__/inventory-fixes.test.ts:303"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-15843c93bd3e9600", "name": "Commented-code block (5 lines) in server/modules/orders/__tests__/unit/sla-cutoff.test.ts:39", "shortDescription": {"text": "Commented-code block (5 lines) in server/modules/orders/__tests__/unit/sla-cutoff.test.ts:39"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5d6d26697f09a721", "name": "Commented-code block (5 lines) in server/modules/orders/__tests__/unit/shipment-rollup.test.ts:55", "shortDescription": {"text": "Commented-code block (5 lines) in server/modules/orders/__tests__/unit/shipment-rollup.test.ts:55"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3342acc201821615", "name": "Commented-code block (7 lines) in server/modules/orders/__tests__/unit/phase1-regression.test.ts:76", "shortDescription": {"text": "Commented-code block (7 lines) in server/modules/orders/__tests__/unit/phase1-regression.test.ts:76"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b62b3e11bffd0e06", "name": "Commented-code block (5 lines) in server/modules/catalog/catalog.storage.ts:457", "shortDescription": {"text": "Commented-code block (5 lines) in server/modules/catalog/catalog.storage.ts:457"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-547c751c16d4a880", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/catalog/image-sync.service.ts:234", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/catalog/image-sync.service.ts:234"}, "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-177e3a20a113a858", "name": "Commented-code block (6 lines) in server/modules/catalog/catalog.routes.ts:1644", "shortDescription": {"text": "Commented-code block (6 lines) in server/modules/catalog/catalog.routes.ts:1644"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-89e0cda7ba9270e7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/catalog/catalog.routes.ts:116", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/catalog/catalog.routes.ts:116"}, "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-4dc1c5e0b5cb019b", "name": "Commented-code block (9 lines) in server/modules/oms/webhook-retry.worker.ts:482", "shortDescription": {"text": "Commented-code block (9 lines) in server/modules/oms/webhook-retry.worker.ts:482"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-878c3de521b98a1e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/oms/webhook-retry.worker.ts:1968", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/oms/webhook-retry.worker.ts:1968"}, "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-5d913d643dc10f5b", "name": "Commented-code block (5 lines) in server/modules/oms/oms.service.ts:52", "shortDescription": {"text": "Commented-code block (5 lines) in server/modules/oms/oms.service.ts:52"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-11c0b89d9d523938", "name": "Commented-code block (7 lines) in server/modules/oms/shopify-bridge.ts:188", "shortDescription": {"text": "Commented-code block (7 lines) in server/modules/oms/shopify-bridge.ts:188"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2140eedf5837bf81", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/oms/shipstation-sweeper.ts:161", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/oms/shipstation-sweeper.ts:161"}, "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-58a21a427f799535", "name": "Commented-code block (10 lines) in server/modules/oms/wms-sync.service.ts:188", "shortDescription": {"text": "Commented-code block (10 lines) in server/modules/oms/wms-sync.service.ts:188"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e60e43a843758c9d", "name": "Commented-code block (6 lines) in server/modules/oms/fulfillment-push.service.ts:204", "shortDescription": {"text": "Commented-code block (6 lines) in server/modules/oms/fulfillment-push.service.ts:204"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fb85c1e632f1a913", "name": "Legacy-named symbol `processShipNotifyLegacy` in server/modules/oms/shipstation.service.ts:2416", "shortDescription": {"text": "Legacy-named symbol `processShipNotifyLegacy` in server/modules/oms/shipstation.service.ts:2416"}, "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-8ad308ea18540d07", "name": "Commented-code block (6 lines) in server/modules/oms/shipstation.service.ts:213", "shortDescription": {"text": "Commented-code block (6 lines) in server/modules/oms/shipstation.service.ts:213"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-68a4f5cfbdfaf562", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/oms/shipstation.service.ts:863", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/oms/shipstation.service.ts:863"}, "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-6c297d09b00ba490", "name": "Commented-code block (5 lines) in server/modules/oms/oms-webhooks.ts:133", "shortDescription": {"text": "Commented-code block (5 lines) in server/modules/oms/oms-webhooks.ts:133"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-85d3910c76b38552", "name": "Commented-code block (5 lines) in server/modules/oms/flow-trace.service.ts:177", "shortDescription": {"text": "Commented-code block (5 lines) in server/modules/oms/flow-trace.service.ts:177"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d68289b1d60b80b7", "name": "Commented-code block (5 lines) in server/modules/oms/__tests__/unit/shopify-webhook-retry.test.ts:236", "shortDescription": {"text": "Commented-code block (5 lines) in server/modules/oms/__tests__/unit/shopify-webhook-retry.test.ts:236"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-af3268dd03bee6a3", "name": "Commented-code block (5 lines) in server/modules/oms/__tests__/unit/push-shipment.test.ts:289", "shortDescription": {"text": "Commented-code block (5 lines) in server/modules/oms/__tests__/unit/push-shipment.test.ts:289"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5d14d953755434cd", "name": "Commented-code block (9 lines) in server/modules/oms/__tests__/unit/wms-sync-bridge-trigger.test.ts:16", "shortDescription": {"text": "Commented-code block (9 lines) in server/modules/oms/__tests__/unit/wms-sync-bridge-trigger.test.ts:16"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1584d27d7b84a16c", "name": "Legacy-named symbol `processShipNotifyLegacy` in server/modules/oms/__tests__/unit/ship-notify-v2.test.ts:49", "shortDescription": {"text": "Legacy-named symbol `processShipNotifyLegacy` in server/modules/oms/__tests__/unit/ship-notify-v2.test.ts:49"}, "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-a84c6f396fff863a", "name": "Commented-code block (14 lines) in server/modules/oms/__tests__/unit/ship-notify-v2.test.ts:168", "shortDescription": {"text": "Commented-code block (14 lines) in server/modules/oms/__tests__/unit/ship-notify-v2.test.ts:168"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-636085b47c67a373", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/oms/__tests__/unit/ship-notify-v2.test.ts:169", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/oms/__tests__/unit/ship-notify-v2.test.ts:169"}, "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-c838e7172d20ee4c", "name": "Commented-code block (9 lines) in server/modules/oms/__tests__/unit/shipstation-reconcile-guard.test.ts:10", "shortDescription": {"text": "Commented-code block (9 lines) in server/modules/oms/__tests__/unit/shipstation-reconcile-guard.test.ts:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-43fb7010e057264a", "name": "Commented-code block (6 lines) in server/modules/oms/__tests__/unit/refunds-create-cascade.test.ts:441", "shortDescription": {"text": "Commented-code block (6 lines) in server/modules/oms/__tests__/unit/refunds-create-cascade.test.ts:441"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-44a419d66ee4c65d", "name": "Commented-code block (7 lines) in server/modules/oms/__tests__/unit/flow-trace.service.test.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in server/modules/oms/__tests__/unit/flow-trace.service.test.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4be166cc6eb7d77e", "name": "Commented-code block (8 lines) in server/modules/oms/__tests__/unit/fulfillments-update-webhook.test.ts:146", "shortDescription": {"text": "Commented-code block (8 lines) in server/modules/oms/__tests__/unit/fulfillments-update-webhook.test.ts:146"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0038fb1fa07e803a", "name": "Commented-code block (5 lines) in server/modules/oms/__tests__/unit/ship-notify-orderkey.test.ts:159", "shortDescription": {"text": "Commented-code block (5 lines) in server/modules/oms/__tests__/unit/ship-notify-orderkey.test.ts:159"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b11eb9744827e74c", "name": "Commented-code block (8 lines) in server/modules/oms/__tests__/unit/update-shopify-fulfillment-tracking.test.ts:554", "shortDescription": {"text": "Commented-code block (8 lines) in server/modules/oms/__tests__/unit/update-shopify-fulfillment-tracking.test.ts:554"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4004e6f6eca8214f", "name": "Commented-code block (5 lines) in server/modules/oms/__tests__/unit/push-shopify-fulfillment.test.ts:1630", "shortDescription": {"text": "Commented-code block (5 lines) in server/modules/oms/__tests__/unit/push-shopify-fulfillment.test.ts:1630"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2639a77e1966cee4", "name": "Commented-code block (6 lines) in server/modules/oms/__tests__/unit/fulfillments-create-webhook.test.ts:47", "shortDescription": {"text": "Commented-code block (6 lines) in server/modules/oms/__tests__/unit/fulfillments-create-webhook.test.ts:47"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4bfad13419529808", "name": "Commented-code block (6 lines) in server/modules/inventory/cogs.service.ts:239", "shortDescription": {"text": "Commented-code block (6 lines) in server/modules/inventory/cogs.service.ts:239"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-58aa7572258ac13a", "name": "Commented-code block (5 lines) in server/modules/inventory/application/replenishment.use-cases.ts:3590", "shortDescription": {"text": "Commented-code block (5 lines) in server/modules/inventory/application/replenishment.use-cases.ts:3590"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a4f6df43de87aed4", "name": "Commented-code block (6 lines) in server/modules/inventory/application/inventory.use-cases.ts:399", "shortDescription": {"text": "Commented-code block (6 lines) in server/modules/inventory/application/inventory.use-cases.ts:399"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2245c0503773a6ad", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/inventory/application/inventory.use-cases.ts:1079", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/inventory/application/inventory.use-cases.ts:1079"}, "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-3d2c5628a806cb5a", "name": "Commented-code block (5 lines) in server/modules/inventory/infrastructure/inventory.repository.ts:326", "shortDescription": {"text": "Commented-code block (5 lines) in server/modules/inventory/infrastructure/inventory.repository.ts:326"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d2aa1b1dec0e182f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/inventory/__tests__/unit/replenishment.routes.test.ts:60", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/inventory/__tests__/unit/replenishment.routes.test.ts:60"}, "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-21904d5848197dab", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/notifications/__tests__/unit/notifications.routes.test.ts:5", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/notifications/__tests__/unit/notifications.routes.test.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-b77a0deb0369a0b8", "name": "Commented-code block (7 lines) in server/routes/oms.routes.ts:311", "shortDescription": {"text": "Commented-code block (7 lines) in server/routes/oms.routes.ts:311"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4f1be5f850b0457a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/ebay-settings.routes.ts:140", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/ebay-settings.routes.ts:140"}, "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-30a702216848f290", "name": "Commented-code block (8 lines) in server/routes/shopify.routes.ts:21", "shortDescription": {"text": "Commented-code block (8 lines) in server/routes/shopify.routes.ts:21"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-82bd4a479709b6c0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/shopify.routes.ts:677", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/shopify.routes.ts:677"}, "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-6cb5b686dbbea45a", "name": "Commented-code block (6 lines) in server/routes/pick-priority.routes.ts:6", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/pick-priority.routes.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a169b50b35d65422", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/ebay-listing-rules.routes.ts:478", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/ebay-listing-rules.routes.ts:478"}, "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-72f737a0e7718eaa", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/ebay/ebay-config.routes.ts:60", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/ebay/ebay-config.routes.ts:60"}, "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-5cd9ba1fd353d5ea", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/ebay/ebay-taxonomy.routes.ts:47", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/ebay/ebay-taxonomy.routes.ts:47"}, "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-d9d030108bd791e7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/hooks/use-notifications.ts:40", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/hooks/use-notifications.ts:40"}, "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-40d27ab50eb9f1c9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/layout/AppShell.tsx:561", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/layout/AppShell.tsx:561"}, "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-fcf54bd2f8d4e393", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/operations/PickReplenHealthSection.tsx:278", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/operations/PickReplenHealthSection.tsx:278"}, "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-043a7a05026147c2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/operations/BinHistorySheet.tsx:70", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/operations/BinHistorySheet.tsx:70"}, "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-bbd446c4ccc73c0d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/operations/ActionQueueSection.tsx:100", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/operations/ActionQueueSection.tsx:100"}, "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-b6b25c0d47a1f9c8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/operations/BinInventorySection.tsx:143", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/operations/BinInventorySection.tsx:143"}, "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-8a49c2b20b7e405f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/operations/InlineCaseBreakDialog.tsx:83", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/operations/InlineCaseBreakDialog.tsx:83"}, "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-2be60b7ace7349e6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/operations/RecentActivitySection.tsx:86", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/operations/RecentActivitySection.tsx:86"}, "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-c4775f59212d3745", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/operations/SkuLocatorSection.tsx:53", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/operations/SkuLocatorSection.tsx:53"}, "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-3487db4c7d9a453e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/operations/InlineAdjustDialog.tsx:70", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/operations/InlineAdjustDialog.tsx:70"}, "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-2de3a8610a8fff23", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/operations/InlineTransferDialog.tsx:92", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/operations/InlineTransferDialog.tsx:92"}, "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-2b845813e717b7d0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/ebay/ProductTypeManager.tsx:86", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/ebay/ProductTypeManager.tsx:86"}, "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-bcd3c58522f7cefa", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/ebay/AspectEditor.tsx:90", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/ebay/AspectEditor.tsx:90"}, "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-3b79f93c5bae4d60", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/shipment/AddInvoiceFromCostsModal.tsx:151", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/shipment/AddInvoiceFromCostsModal.tsx:151"}, "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-c5e0366d18dfe34f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/purchasing/ExclusionRulesModal.tsx:138", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/purchasing/ExclusionRulesModal.tsx:138"}, "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-07119958cf661af4", "name": "Commented-code block (5 lines) in client/src/pages/Suppliers.tsx:735", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/Suppliers.tsx:735"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-aadab37434ad644d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Suppliers.tsx:322", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Suppliers.tsx:322"}, "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-a5da234dfc4c16a9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/OmsOrders.tsx:230", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/OmsOrders.tsx: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-769f88d933384bf3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/PurchasingDashboard.tsx:662", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/PurchasingDashboard.tsx:662"}, "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-2c6ecadaf81bce92", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Products.tsx:102", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Products.tsx:102"}, "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-9a58af8a721e9f84", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/SlottingSetup.tsx:222", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/SlottingSetup.tsx:222"}, "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-fdcae8d44e05f216", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/WarehouseLocations.tsx:211", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/WarehouseLocations.tsx:211"}, "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-dab33b67abb98547", "name": "Commented-code block (5 lines) in client/src/pages/PurchaseOrders.tsx:254", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/PurchaseOrders.tsx:254"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8d3740a24d26369b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/PurchaseOrders.tsx:237", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/PurchaseOrders.tsx:237"}, "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-ce544ce458b4d5e1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/ShopifyChannelPage.tsx:71", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/ShopifyChannelPage.tsx:71"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c1ca5d6f7b190e46", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Transfers.tsx:164", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Transfers.tsx:164"}, "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-786b9fbe590a7d02", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Receiving.tsx:343", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Receiving.tsx:343"}, "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-d10ae29b859fc655", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/CycleCounts.tsx:242", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/CycleCounts.tsx:242"}, "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-360a47436d2c9753", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Inventory.tsx:234", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Inventory.tsx:234"}, "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-e2b76c34ed03041a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/InboundShipmentDetail.tsx:962", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/InboundShipmentDetail.tsx:962"}, "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-46055c87461de800", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Users.tsx:47", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Users.tsx:47"}, "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-f53924fc8cf98573", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/PickingMetrics.tsx:92", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/PickingMetrics.tsx:92"}, "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-786e07ac7498e365", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/InventoryHistory.tsx:140", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/InventoryHistory.tsx:140"}, "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-bfdf820cc47baa1b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Roles.tsx:49", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Roles.tsx: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-cff224b6dfdb49a9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/InboundShipments.tsx:161", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/InboundShipments.tsx:161"}, "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-250a2bd3f44a8516", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Reserves.tsx:65", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Reserves.tsx:65"}, "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-1a33b90c5fce9364", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/ProcurementSettings.tsx:133", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/ProcurementSettings.tsx:133"}, "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-cafcf2429d127e0f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/APInvoices.tsx:112", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/APInvoices.tsx:112"}, "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-2f5eb3b5527da7ac", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/VendorDetail.tsx:76", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/VendorDetail.tsx:76"}, "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-fbda4b13028ab4aa", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Channels.tsx:151", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Channels.tsx:151"}, "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-9b707662979f6bbf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Replenishment.tsx:406", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Replenishment.tsx:406"}, "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-7dcc328093e80a6a", "name": "Commented-code block (5 lines) in client/src/pages/ProductLines.tsx:1281", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/ProductLines.tsx:1281"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b18a4966eff116b2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/ProductLines.tsx:1241", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/ProductLines.tsx:1241"}, "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-26f2e1cd346a6617", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Warehouses.tsx:154", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Warehouses.tsx:154"}, "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-cd2d50545a65e501", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/APPayments.tsx:134", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/APPayments.tsx:134"}, "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-da01eed336108769", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/ChannelAllocation.tsx:119", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/ChannelAllocation.tsx:119"}, "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-a02ce8be65807a43", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/OperationsView.tsx:61", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/OperationsView.tsx:61"}, "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-9f49741bf9858981", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/PickingSettings.tsx:50", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/PickingSettings.tsx:50"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f8e748901c9337a7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/APInvoiceDetail.tsx:227", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/APInvoiceDetail.tsx:227"}, "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-c4bbb53b0e06a83c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/CostDashboard.tsx:322", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/CostDashboard.tsx:322"}, "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-e0c73c443e453b2e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Settings.tsx:55", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Settings.tsx:55"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-73ac0dafbea7d1bc", "name": "Commented-code block (5 lines) in client/src/pages/ProductDetail.tsx:364", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/ProductDetail.tsx:364"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ae61a4202e300c6a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/ProductDetail.tsx:807", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/ProductDetail.tsx:807"}, "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-5a367a4200302955", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Picking.tsx:88", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Picking.tsx:88"}, "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-d381bc5265bf333a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/OrderHistory.tsx:109", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/OrderHistory.tsx:109"}, "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-aa3be48451fd0af0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Variants.tsx:140", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Variants.tsx:140"}, "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-945580c610a1f56d", "name": "Commented-code block (8 lines) in client/src/pages/PurchaseOrderEdit.tsx:7", "shortDescription": {"text": "Commented-code block (8 lines) in client/src/pages/PurchaseOrderEdit.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9c48c826ccec7f27", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/PurchaseOrderEdit.tsx:628", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/PurchaseOrderEdit.tsx:628"}, "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-9963b269b819e696", "name": "Legacy-named symbol `recent_order_velocity_v1` in client/src/pages/PurchasingView.tsx:85", "shortDescription": {"text": "Legacy-named symbol `recent_order_velocity_v1` in client/src/pages/PurchasingView.tsx:85"}, "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-e9710270d21fc11b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/PurchasingView.tsx:529", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/PurchasingView.tsx:529"}, "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-5c31495b01df0aff", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Orders.tsx:288", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Orders.tsx:288"}, "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-c8faf1d578ae8a34", "name": "Commented-code block (9 lines) in client/src/pages/PurchaseOrderDetail.tsx:404", "shortDescription": {"text": "Commented-code block (9 lines) in client/src/pages/PurchaseOrderDetail.tsx:404"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a6f440c7303dd093", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/PurchaseOrderDetail.tsx:964", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/PurchaseOrderDetail.tsx:964"}, "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-d393ad01d4805a3c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/DemandPlanner.tsx:424", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/DemandPlanner.tsx:424"}, "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-afffff3a1f5e7b0d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/VendorList.tsx:65", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/VendorList.tsx:65"}, "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-4bc85022e8660f2f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Dashboard.tsx:539", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Dashboard.tsx:539"}, "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-d203d47ce9582dac", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/PickingLogs.tsx:140", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/PickingLogs.tsx:140"}, "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-f38e3f699033bfa5", "name": "Commented-code block (5 lines) in client/src/pages/product-lines/__tests__/selection.test.ts:159", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/product-lines/__tests__/selection.test.ts:159"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5d3d967be9547b08", "name": "Commented-code block (7 lines) in client/src/features/po-edit/AddToCatalogDialog.tsx:3", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/features/po-edit/AddToCatalogDialog.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-36ab72bbfcd7f5f0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/dropship-auth.tsx:307", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/dropship-auth.tsx:307"}, "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-02822116652a2444", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/queryClient.ts:15", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/queryClient.ts:15"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d0447f6232786e33", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/dropship-ops-surface.ts:2135", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/dropship-ops-surface.ts:2135"}, "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-23be87370710df68", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/api.ts:8", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/api.ts:8"}, "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-f9a05c34d8cd5772", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/vendor-auth.tsx:50", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/vendor-auth.tsx:50"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-665855be88d38b80", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/vendor-api.ts:26", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/vendor-api.ts:26"}, "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-d76b476404125a8a", "name": "Commented-code block (7 lines) in shared/utils/money.ts:5", "shortDescription": {"text": "Commented-code block (7 lines) in shared/utils/money.ts:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-77897e01bef5eaee", "name": "Commented-code block (7 lines) in shared/enums/order-status.ts:164", "shortDescription": {"text": "Commented-code block (7 lines) in shared/enums/order-status.ts:164"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-32df49328a9b49a3", "name": "Commented-code block (5 lines) in shared/schema/channels.schema.ts:38", "shortDescription": {"text": "Commented-code block (5 lines) in shared/schema/channels.schema.ts:38"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-22ad48616b1ec6d2", "name": "Commented-code block (7 lines) in shared/schema/orders.schema.ts:409", "shortDescription": {"text": "Commented-code block (7 lines) in shared/schema/orders.schema.ts:409"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d6374d0e64c0545b", "name": "Commented-code block (5 lines) in shared/schema/procurement.schema.ts:9", "shortDescription": {"text": "Commented-code block (5 lines) in shared/schema/procurement.schema.ts:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2755483367fe70e1", "name": "Commented-code block (6 lines) in shared/schema/oms.schema.ts:69", "shortDescription": {"text": "Commented-code block (6 lines) in shared/schema/oms.schema.ts:69"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c504fd4f0a6cf681", "name": "Commented-code block (5 lines) in shared/schema/inventory.schema.ts:272", "shortDescription": {"text": "Commented-code block (5 lines) in shared/schema/inventory.schema.ts:272"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e6135ad67e415d47", "name": "Legacy-named symbol `dropship_vendors_phase0_legacy` in shared/__tests__/dropship-v2-schema.test.ts:107", "shortDescription": {"text": "Legacy-named symbol `dropship_vendors_phase0_legacy` in shared/__tests__/dropship-v2-schema.test.ts:107"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c13a0b71a242564d", "name": "Frontend route `/vendor/register` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/vendor/register` has no Link/navigate to it \u2014 client/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c60f997afcd1e3f2", "name": "Frontend route `/vendor/products` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/vendor/products` has no Link/navigate to it \u2014 client/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7de5a26a7e6001fa", "name": "Frontend route `/vendor/orders` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/vendor/orders` has no Link/navigate to it \u2014 client/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-00260fb9c2e03d71", "name": "Frontend route `/vendor/wallet` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/vendor/wallet` has no Link/navigate to it \u2014 client/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-765d86a8c64ac43c", "name": "Frontend route `/vendor/settings` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/vendor/settings` has no Link/navigate to it \u2014 client/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b561047ef6beb66f", "name": "Frontend route `/vendor` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/vendor` has no Link/navigate to it \u2014 client/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1f7a00e637b7ceca", "name": "Frontend route `/bin-assignments` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/bin-assignments` has no Link/navigate to it \u2014 client/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aa4d90598c4f7036", "name": "Frontend route `/dropship` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/dropship` has no Link/navigate to it \u2014 client/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dbb1077bdc2c3154", "name": "Frontend route `/vendors/:id` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/vendors/:id` has no Link/navigate to it \u2014 client/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f40a6e0d9f281545", "name": "Frontend route `/picking/logs` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/picking/logs` has no Link/navigate to it \u2014 client/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-39e28fd419cd0830", "name": "Frontend route `/picking/metrics` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/picking/metrics` has no Link/navigate to it \u2014 client/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-45318103071cf688", "name": "Frontend route `/picking/settings` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/picking/settings` has no Link/navigate to it \u2014 client/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1127bcfb6f497bc2", "name": "Frontend route `/warehouse/settings/:id` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/warehouse/settings/:id` has no Link/navigate to it \u2014 client/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7f3b5d251ec7b710", "name": "Frontend route `/products/:id` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/products/:id` has no Link/navigate to it \u2014 client/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ee17ab634a61388a", "name": "Frontend route `/enterprise` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/enterprise` has no Link/navigate to it \u2014 client/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-35ec0771567a3999", "name": "Frontend route `/purchase-orders/:id/edit` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/purchase-orders/:id/edit` has no Link/navigate to it \u2014 client/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c7a78bcc74797b5d", "name": "Frontend route `/shipments/:id` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/shipments/:id` has no Link/navigate to it \u2014 client/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8609df83bfc238aa", "name": "Frontend route `/ap-invoices/:id` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/ap-invoices/:id` has no Link/navigate to it \u2014 client/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4c28d42539a057ed", "name": "Frontend route `/purchasing/catalog` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/purchasing/catalog` has no Link/navigate to it \u2014 client/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea474e8902bc8e03", "name": "Frontend route `/purchasing/:id` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/purchasing/:id` has no Link/navigate to it \u2014 client/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea2ad288dff24087", "name": "Frontend route `/products` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/products` has no Link/navigate to it \u2014 client/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ca95effd5a5efab4", "name": "Frontend route `/variants` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/variants` has no Link/navigate to it \u2014 client/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b5fe80b4206fe25d", "name": "Frontend route `/warehouses` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/warehouses` has no Link/navigate to it \u2014 client/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e572c6f2458177ce", "name": "Dangling fetch: GET https://cardshellz-echelon-f21ea7da3008.herokuapp.com/api/picking/queue/single (fetch-queue.cjs:3)", "shortDescription": {"text": "Dangling fetch: GET https://cardshellz-echelon-f21ea7da3008.herokuapp.com/api/picking/queue/single (fetch-queue.cjs:3)"}, "fullDescription": {"text": "`fetch-queue.cjs:3` calls `GET https://cardshellz-echelon-f21ea7da3008.herokuapp.com/api/picking/queue/single` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/cardshellz-echelon-f21ea7da3008.herokuapp.com/api/picking/queue/single`\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-efb800c27ed252e0", "name": "Dangling fetch: GET https://cardshellz-echelon-f21ea7da3008.herokuapp.com/api/picking/queue/single (fetch-queue-text.cjs", "shortDescription": {"text": "Dangling fetch: GET https://cardshellz-echelon-f21ea7da3008.herokuapp.com/api/picking/queue/single (fetch-queue-text.cjs:3)"}, "fullDescription": {"text": "`fetch-queue-text.cjs:3` calls `GET https://cardshellz-echelon-f21ea7da3008.herokuapp.com/api/picking/queue/single` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/cardshellz-echelon-f21ea7da3008.herokuapp.com/api/picking/queue/single`\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-e4a1b4808299ff94", "name": "Dangling fetch: GET https://ssapi.shipstation.com/stores (scripts/list-shipstation-stores.mjs:15)", "shortDescription": {"text": "Dangling fetch: GET https://ssapi.shipstation.com/stores (scripts/list-shipstation-stores.mjs:15)"}, "fullDescription": {"text": "`scripts/list-shipstation-stores.mjs:15` calls `GET https://ssapi.shipstation.com/stores` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/ssapi.shipstation.com/stores`\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-9ed03b778d998aa7", "name": "Dangling fetch: GET https://ssapi.shipstation.com/warehouses (scripts/list-shipstation-warehouses.mjs:15)", "shortDescription": {"text": "Dangling fetch: GET https://ssapi.shipstation.com/warehouses (scripts/list-shipstation-warehouses.mjs:15)"}, "fullDescription": {"text": "`scripts/list-shipstation-warehouses.mjs:15` calls `GET https://ssapi.shipstation.com/warehouses` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/ssapi.shipstation.com/warehouses`\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-7a17de473ad5fc45", "name": "Dangling fetch: GET https://shellz-club-app-c299723495c9.herokuapp.com/api/storefront/member-pricing?variant_ids=4686976", "shortDescription": {"text": "Dangling fetch: GET https://shellz-club-app-c299723495c9.herokuapp.com/api/storefront/member-pricing?variant_ids=46869766963423 (dump-settings.ts:5)"}, "fullDescription": {"text": "`dump-settings.ts:5` calls `GET https://shellz-club-app-c299723495c9.herokuapp.com/api/storefront/member-pricing?variant_ids=46869766963423` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/shellz-club-app-c299723495c9.herokuapp.com/api/storefront/member-pricing`\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-088d0db6e2fc6230", "name": "Dangling fetch: GET https://${conn.shopDomain}/admin/api/2024-01/products.json?limit=250&fields=id,title,images,variants", "shortDescription": {"text": "Dangling fetch: GET https://${conn.shopDomain}/admin/api/2024-01/products.json?limit=250&fields=id,title,images,variants (check-shopify-images.ts:24)"}, "fullDescription": {"text": "`check-shopify-images.ts:24` calls `GET https://${conn.shopDomain}/admin/api/2024-01/products.json?limit=250&fields=id,title,images,variants` 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/products.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-ff77fea50c3ebbf8", "name": "Dangling fetch: GET https://api.ebay.com/buy/browse/v1/item/v1|${item_id}|0 (scripts/import_ebay_to_echelon.ts:38)", "shortDescription": {"text": "Dangling fetch: GET https://api.ebay.com/buy/browse/v1/item/v1|${item_id}|0 (scripts/import_ebay_to_echelon.ts:38)"}, "fullDescription": {"text": "`scripts/import_ebay_to_echelon.ts:38` calls `GET https://api.ebay.com/buy/browse/v1/item/v1|${item_id}|0` 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.ebay.com/buy/browse/v1/item/v1|/<p>|0`\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-5abf3808274b6c4a", "name": "Dangling fetch: GET https://api.ebay.com/buy/browse/v1/item/v1|${item_id} (scripts/import_ebay_to_echelon.ts:61)", "shortDescription": {"text": "Dangling fetch: GET https://api.ebay.com/buy/browse/v1/item/v1|${item_id} (scripts/import_ebay_to_echelon.ts:61)"}, "fullDescription": {"text": "`scripts/import_ebay_to_echelon.ts:61` calls `GET https://api.ebay.com/buy/browse/v1/item/v1|${item_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.ebay.com/buy/browse/v1/item/v1|/<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-803fdd01433000ae", "name": "Dangling fetch: GET https://api.ebay.com/buy/browse/v1/item/get_item_by_legacy_id?legacy_item_id=${itemId} (scripts/resc", "shortDescription": {"text": "Dangling fetch: GET https://api.ebay.com/buy/browse/v1/item/get_item_by_legacy_id?legacy_item_id=${itemId} (scripts/rescue_ebay_images.ts:149)"}, "fullDescription": {"text": "`scripts/rescue_ebay_images.ts:149` calls `GET https://api.ebay.com/buy/browse/v1/item/get_item_by_legacy_id?legacy_item_id=${itemId}` 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.ebay.com/buy/browse/v1/item/get_item_by_legacy_id`\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-04673d4e87bed09e", "name": "Dangling fetch: GET https://api.ebay.com/buy/browse/v1/item/get_items_by_item_group?item_group_id=${itemId} (scripts/res", "shortDescription": {"text": "Dangling fetch: GET https://api.ebay.com/buy/browse/v1/item/get_items_by_item_group?item_group_id=${itemId} (scripts/rescue_ebay_images.ts:177)"}, "fullDescription": {"text": "`scripts/rescue_ebay_images.ts:177` calls `GET https://api.ebay.com/buy/browse/v1/item/get_items_by_item_group?item_group_id=${itemId}` 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.ebay.com/buy/browse/v1/item/get_items_by_item_group`\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-89bc4feebbdc9012", "name": "Dangling fetch: POST https://${shStore}/admin/api/2024-01/products/${shopifyProductId}/images.json (scripts/rescue_ebay_", "shortDescription": {"text": "Dangling fetch: POST https://${shStore}/admin/api/2024-01/products/${shopifyProductId}/images.json (scripts/rescue_ebay_images.ts:226)"}, "fullDescription": {"text": "`scripts/rescue_ebay_images.ts:226` calls `POST https://${shStore}/admin/api/2024-01/products/${shopifyProductId}/images.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/products/<p>/images.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-ab25d27892091b58", "name": "Dangling fetch: GET https://${shConn.shopDomain}/admin/api/2024-01/products/${shId}.json?fields=images (scripts/sync_ima", "shortDescription": {"text": "Dangling fetch: GET https://${shConn.shopDomain}/admin/api/2024-01/products/${shId}.json?fields=images (scripts/sync_images_all.ts:107)"}, "fullDescription": {"text": "`scripts/sync_images_all.ts:107` calls `GET https://${shConn.shopDomain}/admin/api/2024-01/products/${shId}.json?fields=images` 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/products/<p>.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-41e4ee03fbec689d", "name": "Dangling fetch: POST https://${shConn.shopDomain}/admin/api/2024-01/products/${shId}/images.json (scripts/sync_images_al", "shortDescription": {"text": "Dangling fetch: POST https://${shConn.shopDomain}/admin/api/2024-01/products/${shId}/images.json (scripts/sync_images_all.ts:121)"}, "fullDescription": {"text": "`scripts/sync_images_all.ts:121` calls `POST https://${shConn.shopDomain}/admin/api/2024-01/products/${shId}/images.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/products/<p>/images.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-50f95cf878c0dda0", "name": "Dangling fetch: GET https://api.ebay.com/buy/browse/v1/item/get_item_by_legacy_id?legacy_item_id=${itemId} (scripts/sync", "shortDescription": {"text": "Dangling fetch: GET https://api.ebay.com/buy/browse/v1/item/get_item_by_legacy_id?legacy_item_id=${itemId} (scripts/sync_images_all.ts:160)"}, "fullDescription": {"text": "`scripts/sync_images_all.ts:160` calls `GET https://api.ebay.com/buy/browse/v1/item/get_item_by_legacy_id?legacy_item_id=${itemId}` 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.ebay.com/buy/browse/v1/item/get_item_by_legacy_id`\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-d1fbaa77677a0f73", "name": "Dangling fetch: GET https://api.ebay.com/buy/browse/v1/item/get_items_by_item_group?item_group_id=${itemId} (scripts/syn", "shortDescription": {"text": "Dangling fetch: GET https://api.ebay.com/buy/browse/v1/item/get_items_by_item_group?item_group_id=${itemId} (scripts/sync_images_all.ts:174)"}, "fullDescription": {"text": "`scripts/sync_images_all.ts:174` calls `GET https://api.ebay.com/buy/browse/v1/item/get_items_by_item_group?item_group_id=${itemId}` 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.ebay.com/buy/browse/v1/item/get_items_by_item_group`\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-a5f855d7ab841e1e", "name": "Dangling fetch: POST https://${shConn.shopDomain}/admin/api/2024-01/products/${shId}/images.json (scripts/sync_images_al", "shortDescription": {"text": "Dangling fetch: POST https://${shConn.shopDomain}/admin/api/2024-01/products/${shId}/images.json (scripts/sync_images_all.ts:196)"}, "fullDescription": {"text": "`scripts/sync_images_all.ts:196` calls `POST https://${shConn.shopDomain}/admin/api/2024-01/products/${shId}/images.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/products/<p>/images.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-cb46ba66fd615656", "name": "Dangling fetch: GET https://ssapi.shipstation.com${pathName} (scripts/cleanup-duplicate-wms-orders.ts:472)", "shortDescription": {"text": "Dangling fetch: GET https://ssapi.shipstation.com${pathName} (scripts/cleanup-duplicate-wms-orders.ts:472)"}, "fullDescription": {"text": "`scripts/cleanup-duplicate-wms-orders.ts:472` calls `GET https://ssapi.shipstation.com${pathName}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/ssapi.shipstation.com/<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-0bf1fcdf361f3ce2", "name": "Dangling fetch: GET https://api.ebay.com/sell/account/v1/fulfillment_policy?marketplace_id=EBAY_US (scripts/_ebay-recon.", "shortDescription": {"text": "Dangling fetch: GET https://api.ebay.com/sell/account/v1/fulfillment_policy?marketplace_id=EBAY_US (scripts/_ebay-recon.ts:27)"}, "fullDescription": {"text": "`scripts/_ebay-recon.ts:27` calls `GET https://api.ebay.com/sell/account/v1/fulfillment_policy?marketplace_id=EBAY_US` 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.ebay.com/sell/account/v1/fulfillment_policy`\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-abd8ed246f3ca422", "name": "Dangling fetch: GET https://api.ebay.com/sell/account/v1/payment_policy?marketplace_id=EBAY_US (scripts/_ebay-recon.ts:4", "shortDescription": {"text": "Dangling fetch: GET https://api.ebay.com/sell/account/v1/payment_policy?marketplace_id=EBAY_US (scripts/_ebay-recon.ts:41)"}, "fullDescription": {"text": "`scripts/_ebay-recon.ts:41` calls `GET https://api.ebay.com/sell/account/v1/payment_policy?marketplace_id=EBAY_US` 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.ebay.com/sell/account/v1/payment_policy`\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-b6cfdbf3d06fd1fd", "name": "Dangling fetch: GET https://api.ebay.com/sell/account/v1/return_policy?marketplace_id=EBAY_US (scripts/_ebay-recon.ts:55", "shortDescription": {"text": "Dangling fetch: GET https://api.ebay.com/sell/account/v1/return_policy?marketplace_id=EBAY_US (scripts/_ebay-recon.ts:55)"}, "fullDescription": {"text": "`scripts/_ebay-recon.ts:55` calls `GET https://api.ebay.com/sell/account/v1/return_policy?marketplace_id=EBAY_US` 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.ebay.com/sell/account/v1/return_policy`\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-f05e2cdfb6afd682", "name": "Dangling fetch: GET https://api.ebay.com/sell/inventory/v1/location?limit=25 (scripts/_ebay-recon.ts:69)", "shortDescription": {"text": "Dangling fetch: GET https://api.ebay.com/sell/inventory/v1/location?limit=25 (scripts/_ebay-recon.ts:69)"}, "fullDescription": {"text": "`scripts/_ebay-recon.ts:69` calls `GET https://api.ebay.com/sell/inventory/v1/location?limit=25` 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.ebay.com/sell/inventory/v1/location`\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-cde0b453e0e9ecc9", "name": "Dangling fetch: GET https://api.ebay.com/sell/inventory/v1/inventory_item?limit=5 (scripts/_ebay-recon.ts:87)", "shortDescription": {"text": "Dangling fetch: GET https://api.ebay.com/sell/inventory/v1/inventory_item?limit=5 (scripts/_ebay-recon.ts:87)"}, "fullDescription": {"text": "`scripts/_ebay-recon.ts:87` calls `GET https://api.ebay.com/sell/inventory/v1/inventory_item?limit=5` 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.ebay.com/sell/inventory/v1/inventory_item`\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-906ec2c309363500", "name": "Dangling fetch: GET https://api.ebay.com/sell/inventory/v1/offer?limit=5&marketplace_id=EBAY_US (scripts/_ebay-recon.ts:", "shortDescription": {"text": "Dangling fetch: GET https://api.ebay.com/sell/inventory/v1/offer?limit=5&marketplace_id=EBAY_US (scripts/_ebay-recon.ts:100)"}, "fullDescription": {"text": "`scripts/_ebay-recon.ts:100` calls `GET https://api.ebay.com/sell/inventory/v1/offer?limit=5&marketplace_id=EBAY_US` 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.ebay.com/sell/inventory/v1/offer`\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-b2c6511bbc023e6d", "name": "Dangling fetch: GET https://api.ebay.com/sell/fulfillment/v1/order?limit=3&orderBy=creationdate%20desc (scripts/_ebay-re", "shortDescription": {"text": "Dangling fetch: GET https://api.ebay.com/sell/fulfillment/v1/order?limit=3&orderBy=creationdate%20desc (scripts/_ebay-recon.ts:114)"}, "fullDescription": {"text": "`scripts/_ebay-recon.ts:114` calls `GET https://api.ebay.com/sell/fulfillment/v1/order?limit=3&orderBy=creationdate%20desc` 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.ebay.com/sell/fulfillment/v1/order`\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-1ddbeae10b1a5818", "name": "Dangling fetch: GET https://api.ebay.com/commerce/taxonomy/v1/category_tree/0/get_category_suggestions?q=toploader+tradi", "shortDescription": {"text": "Dangling fetch: GET https://api.ebay.com/commerce/taxonomy/v1/category_tree/0/get_category_suggestions?q=toploader+trading+card (scripts/_ebay-recon.ts:127)"}, "fullDescription": {"text": "`scripts/_ebay-recon.ts:127` calls `GET https://api.ebay.com/commerce/taxonomy/v1/category_tree/0/get_category_suggestions?q=toploader+trading+card` 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.ebay.com/commerce/taxonomy/v1/category_tree/<p>/get_category_suggestions`\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-ce448d56c3476545", "name": "Dangling fetch: GET https://${domain}/admin/api/2024-01/products.json?limit=250 (scripts/_ca-backfill.ts:30)", "shortDescription": {"text": "Dangling fetch: GET https://${domain}/admin/api/2024-01/products.json?limit=250 (scripts/_ca-backfill.ts:30)"}, "fullDescription": {"text": "`scripts/_ca-backfill.ts:30` calls `GET https://${domain}/admin/api/2024-01/products.json?limit=250` 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/products.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-daee4c9c21a21aed", "name": "Dangling fetch: POST https://${shopDomain}/admin/oauth/access_token (server/modules/dropship/infrastructure/dropship-mar", "shortDescription": {"text": "Dangling fetch: POST https://${shopDomain}/admin/oauth/access_token (server/modules/dropship/infrastructure/dropship-marketplace-oauth.providers.ts:207)"}, "fullDescription": {"text": "`server/modules/dropship/infrastructure/dropship-marketplace-oauth.providers.ts:207` calls `POST https://${shopDomain}/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-bd9ab9144a348264", "name": "Dangling fetch: GET https://${store}.myshopify.com/admin/api/2024-01/shop.json (server/modules/channels/channels.routes.", "shortDescription": {"text": "Dangling fetch: GET https://${store}.myshopify.com/admin/api/2024-01/shop.json (server/modules/channels/channels.routes.ts:681)"}, "fullDescription": {"text": "`server/modules/channels/channels.routes.ts:681` calls `GET https://${store}.myshopify.com/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>.myshopify.com/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-4baf8d383656d4a6", "name": "Dangling fetch: GET https://${store}.myshopify.com/admin/api/2024-01/locations.json (server/modules/channels/channels.ro", "shortDescription": {"text": "Dangling fetch: GET https://${store}.myshopify.com/admin/api/2024-01/locations.json (server/modules/channels/channels.routes.ts:715)"}, "fullDescription": {"text": "`server/modules/channels/channels.routes.ts:715` calls `GET https://${store}.myshopify.com/admin/api/2024-01/locations.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>.myshopify.com/admin/api/2024-01/locations.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-b018646fb0fa45b2", "name": "Dangling fetch: GET https://${store}.myshopify.com/admin/api/2024-01/locations.json (server/modules/channels/channels.ro", "shortDescription": {"text": "Dangling fetch: GET https://${store}.myshopify.com/admin/api/2024-01/locations.json (server/modules/channels/channels.routes.ts:815)"}, "fullDescription": {"text": "`server/modules/channels/channels.routes.ts:815` calls `GET https://${store}.myshopify.com/admin/api/2024-01/locations.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>.myshopify.com/admin/api/2024-01/locations.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-5f3ee7efcb057df0", "name": "Dangling fetch: GET https://${domain}/admin/api/2024-01/products/${product.shopifyProductId}.json (server/modules/catalo", "shortDescription": {"text": "Dangling fetch: GET https://${domain}/admin/api/2024-01/products/${product.shopifyProductId}.json (server/modules/catalog/image-sync.service.ts:234)"}, "fullDescription": {"text": "`server/modules/catalog/image-sync.service.ts:234` calls `GET https://${domain}/admin/api/2024-01/products/${product.shopifyProductId}.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/products/<p>.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-f3cdb5292ec7ef98", "name": "Dangling fetch: PUT https://${domain}/admin/api/2024-01/products/${product.shopifyProductId}.json (server/modules/catalo", "shortDescription": {"text": "Dangling fetch: PUT https://${domain}/admin/api/2024-01/products/${product.shopifyProductId}.json (server/modules/catalog/image-sync.service.ts:390)"}, "fullDescription": {"text": "`server/modules/catalog/image-sync.service.ts:390` calls `PUT https://${domain}/admin/api/2024-01/products/${product.shopifyProductId}.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/products/<p>.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-fbc26d16c0d4f0a1", "name": "Dangling fetch: POST https://api.ebay.com/ws/api.dll (server/modules/catalog/image-sync.service.ts:500)", "shortDescription": {"text": "Dangling fetch: POST https://api.ebay.com/ws/api.dll (server/modules/catalog/image-sync.service.ts:500)"}, "fullDescription": {"text": "`server/modules/catalog/image-sync.service.ts:500` calls `POST https://api.ebay.com/ws/api.dll` 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.ebay.com/ws/api.dll`\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-07fd93b2d742f640", "name": "Dangling fetch: GET https://${credentials.shopDomain}/admin/api/${credentials.apiVersion}${path} (server/modules/catalog", "shortDescription": {"text": "Dangling fetch: GET https://${credentials.shopDomain}/admin/api/${credentials.apiVersion}${path} (server/modules/catalog/catalog.routes.ts:116)"}, "fullDescription": {"text": "`server/modules/catalog/catalog.routes.ts:116` calls `GET https://${credentials.shopDomain}/admin/api/${credentials.apiVersion}${path}` 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/<p>/<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-1f156763db3925d2", "name": "Dangling fetch: GET https://${credentials.shopDomain}/admin/api/${credentials.apiVersion}${path} (server/modules/catalog", "shortDescription": {"text": "Dangling fetch: GET https://${credentials.shopDomain}/admin/api/${credentials.apiVersion}${path} (server/modules/catalog/catalog.routes.ts:179)"}, "fullDescription": {"text": "`server/modules/catalog/catalog.routes.ts:179` calls `GET https://${credentials.shopDomain}/admin/api/${credentials.apiVersion}${path}` 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/<p>/<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-114c3d6ec1e888da", "name": "Dangling fetch: POST https://${shop}/admin/oauth/access_token (server/routes/shopify.routes.ts:677)", "shortDescription": {"text": "Dangling fetch: POST https://${shop}/admin/oauth/access_token (server/routes/shopify.routes.ts:677)"}, "fullDescription": {"text": "`server/routes/shopify.routes.ts:677` 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-e8a906b292ac26df", "name": "Dangling fetch: POST https://api.ebay.com/ws/api.dll (server/routes/ebay-listing-rules.routes.ts:478)", "shortDescription": {"text": "Dangling fetch: POST https://api.ebay.com/ws/api.dll (server/routes/ebay-listing-rules.routes.ts:478)"}, "fullDescription": {"text": "`server/routes/ebay-listing-rules.routes.ts:478` calls `POST https://api.ebay.com/ws/api.dll` 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.ebay.com/ws/api.dll`\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-38e1991721e0f4f5", "name": "Dangling fetch: POST https://api.ebay.com/ws/api.dll (server/routes/ebay/ebay-config.routes.ts:305)", "shortDescription": {"text": "Dangling fetch: POST https://api.ebay.com/ws/api.dll (server/routes/ebay/ebay-config.routes.ts:305)"}, "fullDescription": {"text": "`server/routes/ebay/ebay-config.routes.ts:305` calls `POST https://api.ebay.com/ws/api.dll` 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.ebay.com/ws/api.dll`\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-dd790abb6c3d0a7b", "name": "Dangling fetch: GET /api/admin/vendors/${vendorId} (client/src/pages/VendorDetail.tsx:76)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/vendors/${vendorId} (client/src/pages/VendorDetail.tsx:76)"}, "fullDescription": {"text": "`client/src/pages/VendorDetail.tsx:76` calls `GET /api/admin/vendors/${vendorId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/vendors/<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-13bbcb1bb0f2567e", "name": "Dangling fetch: PUT /api/admin/vendors/${vendorId} (client/src/pages/VendorDetail.tsx:85)", "shortDescription": {"text": "Dangling fetch: PUT /api/admin/vendors/${vendorId} (client/src/pages/VendorDetail.tsx:85)"}, "fullDescription": {"text": "`client/src/pages/VendorDetail.tsx:85` calls `PUT /api/admin/vendors/${vendorId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/vendors/<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-02e3e8701c0e4f58", "name": "Dangling fetch: POST /api/vendor-invoices/${invoiceId}/${endpoint} (client/src/pages/APInvoiceDetail.tsx:227)", "shortDescription": {"text": "Dangling fetch: POST /api/vendor-invoices/${invoiceId}/${endpoint} (client/src/pages/APInvoiceDetail.tsx:227)"}, "fullDescription": {"text": "`client/src/pages/APInvoiceDetail.tsx:227` calls `POST /api/vendor-invoices/${invoiceId}/${endpoint}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/vendor-invoices/<p>/<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-6e386c25b326af9e", "name": "Dangling fetch: PUT /api/products/${product?.productId} (client/src/pages/ProductDetail.tsx:922)", "shortDescription": {"text": "Dangling fetch: PUT /api/products/${product?.productId} (client/src/pages/ProductDetail.tsx:922)"}, "fullDescription": {"text": "`client/src/pages/ProductDetail.tsx:922` calls `PUT /api/products/${product?.productId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/products/${product`\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-da25a9b20f0cb79e", "name": "Dangling fetch: DELETE /api/products/${product?.productId} (client/src/pages/ProductDetail.tsx:965)", "shortDescription": {"text": "Dangling fetch: DELETE /api/products/${product?.productId} (client/src/pages/ProductDetail.tsx:965)"}, "fullDescription": {"text": "`client/src/pages/ProductDetail.tsx:965` calls `DELETE /api/products/${product?.productId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/products/${product`\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-2119f916a806e5b9", "name": "Dangling fetch: PUT /api/products/${product?.productId} (client/src/pages/ProductDetail.tsx:983)", "shortDescription": {"text": "Dangling fetch: PUT /api/products/${product?.productId} (client/src/pages/ProductDetail.tsx:983)"}, "fullDescription": {"text": "`client/src/pages/ProductDetail.tsx:983` calls `PUT /api/products/${product?.productId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/products/${product`\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-55677e39b913e0e1", "name": "Dangling fetch: POST /api/products/${product?.productId}/archive (client/src/pages/ProductDetail.tsx:1050)", "shortDescription": {"text": "Dangling fetch: POST /api/products/${product?.productId}/archive (client/src/pages/ProductDetail.tsx:1050)"}, "fullDescription": {"text": "`client/src/pages/ProductDetail.tsx:1050` calls `POST /api/products/${product?.productId}/archive` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/products/${product`\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-0012eb2cc53370f6", "name": "Dangling fetch: POST /api/products/${product?.productId}/assets (client/src/pages/ProductDetail.tsx:1083)", "shortDescription": {"text": "Dangling fetch: POST /api/products/${product?.productId}/assets (client/src/pages/ProductDetail.tsx:1083)"}, "fullDescription": {"text": "`client/src/pages/ProductDetail.tsx:1083` calls `POST /api/products/${product?.productId}/assets` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/products/${product`\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-07dfcec8285ca970", "name": "Dangling fetch: PUT /api/products/${product?.productId}/assets/reorder (client/src/pages/ProductDetail.tsx:1153)", "shortDescription": {"text": "Dangling fetch: PUT /api/products/${product?.productId}/assets/reorder (client/src/pages/ProductDetail.tsx:1153)"}, "fullDescription": {"text": "`client/src/pages/ProductDetail.tsx:1153` calls `PUT /api/products/${product?.productId}/assets/reorder` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/products/${product`\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-8f0e5f71e11d6793", "name": "Dangling fetch: GET /api/products/${product?.productId}/allocation (client/src/pages/ProductDetail.tsx:1223)", "shortDescription": {"text": "Dangling fetch: GET /api/products/${product?.productId}/allocation (client/src/pages/ProductDetail.tsx:1223)"}, "fullDescription": {"text": "`client/src/pages/ProductDetail.tsx:1223` calls `GET /api/products/${product?.productId}/allocation` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/products/${product`\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-a751ef729f60cbee", "name": "Dangling fetch: POST /api/channel-sync/product/${product?.productId} (client/src/pages/ProductDetail.tsx:1232)", "shortDescription": {"text": "Dangling fetch: POST /api/channel-sync/product/${product?.productId} (client/src/pages/ProductDetail.tsx:1232)"}, "fullDescription": {"text": "`client/src/pages/ProductDetail.tsx:1232` calls `POST /api/channel-sync/product/${product?.productId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/channel-sync/product/${product`\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-aae8dc550eefa927", "name": "Dangling fetch: POST /api/images/pull/${source} (client/src/pages/ProductDetail.tsx:1252)", "shortDescription": {"text": "Dangling fetch: POST /api/images/pull/${source} (client/src/pages/ProductDetail.tsx:1252)"}, "fullDescription": {"text": "`client/src/pages/ProductDetail.tsx:1252` calls `POST /api/images/pull/${source}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/images/pull/<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-8ba0e72e99546ed9", "name": "Dangling fetch: POST /api/channel-push/product/${product?.productId}/channel/36 (client/src/pages/ProductDetail.tsx:1274", "shortDescription": {"text": "Dangling fetch: POST /api/channel-push/product/${product?.productId}/channel/36 (client/src/pages/ProductDetail.tsx:1274)"}, "fullDescription": {"text": "`client/src/pages/ProductDetail.tsx:1274` calls `POST /api/channel-push/product/${product?.productId}/channel/36` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/channel-push/product/${product`\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-99ec1ed5d6dc175a", "name": "Dangling fetch: POST /api/products/${product?.productId}/variants (client/src/pages/ProductDetail.tsx:1427)", "shortDescription": {"text": "Dangling fetch: POST /api/products/${product?.productId}/variants (client/src/pages/ProductDetail.tsx:1427)"}, "fullDescription": {"text": "`client/src/pages/ProductDetail.tsx:1427` calls `POST /api/products/${product?.productId}/variants` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/products/${product`\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-1a5bdd052f13d47f", "name": "Dangling fetch: PUT /api/admin/variants/${variantId}/dropship-eligible (client/src/pages/ProductDetail.tsx:1455)", "shortDescription": {"text": "Dangling fetch: PUT /api/admin/variants/${variantId}/dropship-eligible (client/src/pages/ProductDetail.tsx:1455)"}, "fullDescription": {"text": "`client/src/pages/ProductDetail.tsx:1455` calls `PUT /api/admin/variants/${variantId}/dropship-eligible` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/variants/<p>/dropship-eligible`\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-32d29c422dda81cd", "name": "Dangling fetch: POST /api/product-variants/${archiveVariant?.id}/archive (client/src/pages/ProductDetail.tsx:1635)", "shortDescription": {"text": "Dangling fetch: POST /api/product-variants/${archiveVariant?.id}/archive (client/src/pages/ProductDetail.tsx:1635)"}, "fullDescription": {"text": "`client/src/pages/ProductDetail.tsx:1635` calls `POST /api/product-variants/${archiveVariant?.id}/archive` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/product-variants/${archivevariant`\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-eb5ddb3031724e35", "name": "Dangling fetch: PUT /api/admin/variants/${variantId}/dropship-eligible (client/src/pages/Variants.tsx:191)", "shortDescription": {"text": "Dangling fetch: PUT /api/admin/variants/${variantId}/dropship-eligible (client/src/pages/Variants.tsx:191)"}, "fullDescription": {"text": "`client/src/pages/Variants.tsx:191` calls `PUT /api/admin/variants/${variantId}/dropship-eligible` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/variants/<p>/dropship-eligible`\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-9376e28752b23862", "name": "Dangling fetch: POST /api/admin/variants/bulk-dropship-eligible (client/src/pages/Variants.tsx:300)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/variants/bulk-dropship-eligible (client/src/pages/Variants.tsx:300)"}, "fullDescription": {"text": "`client/src/pages/Variants.tsx:300` calls `POST /api/admin/variants/bulk-dropship-eligible` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/variants/bulk-dropship-eligible`\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-9677fc075f16fc3d", "name": "Dangling fetch: GET /api/purchase-orders/${poId}/${endpoint} (client/src/pages/PurchaseOrderDetail.tsx:1082)", "shortDescription": {"text": "Dangling fetch: GET /api/purchase-orders/${poId}/${endpoint} (client/src/pages/PurchaseOrderDetail.tsx:1082)"}, "fullDescription": {"text": "`client/src/pages/PurchaseOrderDetail.tsx:1082` calls `GET /api/purchase-orders/${poId}/${endpoint}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/purchase-orders/<p>/<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-88dfec525d222eb9", "name": "Dangling fetch: POST /api/purchase-orders/${poId}/${endpoint} (client/src/pages/PurchaseOrderDetail.tsx:1422)", "shortDescription": {"text": "Dangling fetch: POST /api/purchase-orders/${poId}/${endpoint} (client/src/pages/PurchaseOrderDetail.tsx:1422)"}, "fullDescription": {"text": "`client/src/pages/PurchaseOrderDetail.tsx:1422` calls `POST /api/purchase-orders/${poId}/${endpoint}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/purchase-orders/<p>/<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-65a03f0f4eaebaee", "name": "Dangling fetch: GET /api/admin/vendors?${params} (client/src/pages/VendorList.tsx:65)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/vendors?${params} (client/src/pages/VendorList.tsx:65)"}, "fullDescription": {"text": "`client/src/pages/VendorList.tsx:65` calls `GET /api/admin/vendors?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/vendors`\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-2d4672284b0f5211", "name": "Dangling fetch: POST /api/vendor/auth/login (client/src/lib/vendor-auth.tsx:88)", "shortDescription": {"text": "Dangling fetch: POST /api/vendor/auth/login (client/src/lib/vendor-auth.tsx:88)"}, "fullDescription": {"text": "`client/src/lib/vendor-auth.tsx:88` calls `POST /api/vendor/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: `/vendor/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-7497ef1312fe570e", "name": "Dangling fetch: POST /api/vendor/auth/logout (client/src/lib/vendor-auth.tsx:108)", "shortDescription": {"text": "Dangling fetch: POST /api/vendor/auth/logout (client/src/lib/vendor-auth.tsx:108)"}, "fullDescription": {"text": "`client/src/lib/vendor-auth.tsx:108` calls `POST /api/vendor/auth/logout` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/vendor/auth/logout`\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-7438863fe7b2adcc", "name": "Dangling fetch: POST /api/vendor/auth/register (client/src/lib/vendor-api.ts:26)", "shortDescription": {"text": "Dangling fetch: POST /api/vendor/auth/register (client/src/lib/vendor-api.ts:26)"}, "fullDescription": {"text": "`client/src/lib/vendor-api.ts:26` calls `POST /api/vendor/auth/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/vendor/auth/register`\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-526e96e807107bc8", "name": "Unused endpoint: POST /api/shipstation/webhooks/ship-notify", "shortDescription": {"text": "Unused endpoint: POST /api/shipstation/webhooks/ship-notify"}, "fullDescription": {"text": "`server/index.ts` declares `POST /api/shipstation/webhooks/ship-notify` 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-b1424b3fdb2e0a16", "name": "Unused endpoint: GET /api/ebay/webhooks/order", "shortDescription": {"text": "Unused endpoint: GET /api/ebay/webhooks/order"}, "fullDescription": {"text": "`server/index.ts` declares `GET /api/ebay/webhooks/order` 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-d4208a809ef6494a", "name": "Unused endpoint: POST /api/ebay/webhooks/order", "shortDescription": {"text": "Unused endpoint: POST /api/ebay/webhooks/order"}, "fullDescription": {"text": "`server/index.ts` declares `POST /api/ebay/webhooks/order` 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-1ef6347c08aed48b", "name": "Unused endpoint: POST /api/admin/ebay/reingest", "shortDescription": {"text": "Unused endpoint: POST /api/admin/ebay/reingest"}, "fullDescription": {"text": "`server/index.ts` declares `POST /api/admin/ebay/reingest` 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-c61f51b02928ba2d", "name": "Unused endpoint: GET /api/path", "shortDescription": {"text": "Unused endpoint: GET /api/path"}, "fullDescription": {"text": "`server/scripts/auth-audit.ts` declares `GET /api/path` 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-c7f4bfeaca98b795", "name": "Unused endpoint: USE /prefix", "shortDescription": {"text": "Unused endpoint: USE /prefix"}, "fullDescription": {"text": "`server/scripts/auth-audit.ts` declares `USE /prefix` 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-7e79314830906ef4", "name": "Unused endpoint: GET /path", "shortDescription": {"text": "Unused endpoint: GET /path"}, "fullDescription": {"text": "`server/scripts/auth-audit.ts` declares `GET /path` 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-7822abfd4e7e14aa", "name": "Unused endpoint: POST /api/dropship/shipping/quote", "shortDescription": {"text": "Unused endpoint: POST /api/dropship/shipping/quote"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-shipping.routes.ts` declares `POST /api/dropship/shipping/quote` 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-8db8e63c016ca43f", "name": "Unused endpoint: GET /api/dropship/admin/order-intake", "shortDescription": {"text": "Unused endpoint: GET /api/dropship/admin/order-intake"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-admin-order-ops.routes.ts` declares `GET /api/dropship/admin/order-intake` 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-9380abc64053191e", "name": "Unused endpoint: GET /api/dropship/admin/order-intake/:intakeId", "shortDescription": {"text": "Unused endpoint: GET /api/dropship/admin/order-intake/:intakeId"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-admin-order-ops.routes.ts` declares `GET /api/dropship/admin/order-intake/:intakeId` 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-1b9dda3e12df42b3", "name": "Unused endpoint: POST /api/dropship/admin/order-intake/:intakeId/process", "shortDescription": {"text": "Unused endpoint: POST /api/dropship/admin/order-intake/:intakeId/process"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-admin-order-ops.routes.ts` declares `POST /api/dropship/admin/order-intake/:intakeId/process` 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-36083a5770832b8f", "name": "Unused endpoint: POST /api/dropship/admin/order-intake/:intakeId/retry", "shortDescription": {"text": "Unused endpoint: POST /api/dropship/admin/order-intake/:intakeId/retry"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-admin-order-ops.routes.ts` declares `POST /api/dropship/admin/order-intake/:intakeId/retry` 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-32271d74c5783bac", "name": "Unused endpoint: POST /api/dropship/admin/order-intake/:intakeId/retry-cancellation", "shortDescription": {"text": "Unused endpoint: POST /api/dropship/admin/order-intake/:intakeId/retry-cancellation"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-admin-order-ops.routes.ts` declares `POST /api/dropship/admin/order-intake/:intakeId/retry-cancellation` 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-fb9eb9d879c2f29e", "name": "Unused endpoint: POST /api/dropship/admin/order-intake/:intakeId/retry-wms-sync", "shortDescription": {"text": "Unused endpoint: POST /api/dropship/admin/order-intake/:intakeId/retry-wms-sync"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-admin-order-ops.routes.ts` declares `POST /api/dropship/admin/order-intake/:intakeId/retry-wms-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-cf589c812a32fb81", "name": "Unused endpoint: POST /api/dropship/admin/order-intake/:intakeId/exception", "shortDescription": {"text": "Unused endpoint: POST /api/dropship/admin/order-intake/:intakeId/exception"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-admin-order-ops.routes.ts` declares `POST /api/dropship/admin/order-intake/:intakeId/exception` 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-af2e81e4c0c9f5e9", "name": "Unused endpoint: GET /api/dropship/catalog/selection-rules", "shortDescription": {"text": "Unused endpoint: GET /api/dropship/catalog/selection-rules"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-vendor-catalog.routes.ts` declares `GET /api/dropship/catalog/selection-rules` 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-12da847ab1a4af50", "name": "Unused endpoint: PUT /api/dropship/catalog/selection-rules", "shortDescription": {"text": "Unused endpoint: PUT /api/dropship/catalog/selection-rules"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-vendor-catalog.routes.ts` declares `PUT /api/dropship/catalog/selection-rules` 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-7fc863b6e2394f1e", "name": "Unused endpoint: GET /api/dropship/catalog", "shortDescription": {"text": "Unused endpoint: GET /api/dropship/catalog"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-vendor-catalog.routes.ts` declares `GET /api/dropship/catalog` 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-a24ab5663e014a8a", "name": "Unused endpoint: POST /api/dropship/auth/bootstrap/start", "shortDescription": {"text": "Unused endpoint: POST /api/dropship/auth/bootstrap/start"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-auth.routes.ts` declares `POST /api/dropship/auth/bootstrap/start` 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-91eb1145e8a60930", "name": "Unused endpoint: POST /api/dropship/auth/bootstrap/complete", "shortDescription": {"text": "Unused endpoint: POST /api/dropship/auth/bootstrap/complete"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-auth.routes.ts` declares `POST /api/dropship/auth/bootstrap/complete` 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-a95b15fbec16fe1c", "name": "Unused endpoint: POST /api/dropship/auth/login/password", "shortDescription": {"text": "Unused endpoint: POST /api/dropship/auth/login/password"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-auth.routes.ts` declares `POST /api/dropship/auth/login/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-70e0b67e1107011c", "name": "Unused endpoint: POST /api/dropship/auth/login/passkey/start", "shortDescription": {"text": "Unused endpoint: POST /api/dropship/auth/login/passkey/start"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-auth.routes.ts` declares `POST /api/dropship/auth/login/passkey/start` 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-4905bc235cd533dc", "name": "Unused endpoint: POST /api/dropship/auth/login/passkey/complete", "shortDescription": {"text": "Unused endpoint: POST /api/dropship/auth/login/passkey/complete"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-auth.routes.ts` declares `POST /api/dropship/auth/login/passkey/complete` 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-50095a10e0dff328", "name": "Unused endpoint: POST /api/dropship/auth/logout", "shortDescription": {"text": "Unused endpoint: POST /api/dropship/auth/logout"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-auth.routes.ts` declares `POST /api/dropship/auth/logout` 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-5aea7d17d7f12dff", "name": "Unused endpoint: GET /api/dropship/auth/me", "shortDescription": {"text": "Unused endpoint: GET /api/dropship/auth/me"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-auth.routes.ts` declares `GET /api/dropship/auth/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-56591690778c3c20", "name": "Unused endpoint: POST /api/dropship/auth/passkeys/register/start", "shortDescription": {"text": "Unused endpoint: POST /api/dropship/auth/passkeys/register/start"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-auth.routes.ts` declares `POST /api/dropship/auth/passkeys/register/start` 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-ba8e1b87e3ef90af", "name": "Unused endpoint: POST /api/dropship/auth/passkeys/register/complete", "shortDescription": {"text": "Unused endpoint: POST /api/dropship/auth/passkeys/register/complete"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-auth.routes.ts` declares `POST /api/dropship/auth/passkeys/register/complete` 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-6c7edb7ddf5d513e", "name": "Unused endpoint: POST /api/dropship/auth/sensitive-actions/challenge/start", "shortDescription": {"text": "Unused endpoint: POST /api/dropship/auth/sensitive-actions/challenge/start"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-auth.routes.ts` declares `POST /api/dropship/auth/sensitive-actions/challenge/start` 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-2c9170ef6bbdac9a", "name": "Unused endpoint: POST /api/dropship/auth/sensitive-actions/challenge/verify", "shortDescription": {"text": "Unused endpoint: POST /api/dropship/auth/sensitive-actions/challenge/verify"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-auth.routes.ts` declares `POST /api/dropship/auth/sensitive-actions/challenge/verify` 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-b63675144e9042c1", "name": "Unused endpoint: POST /api/dropship/auth/sensitive-actions/passkey/start", "shortDescription": {"text": "Unused endpoint: POST /api/dropship/auth/sensitive-actions/passkey/start"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-auth.routes.ts` declares `POST /api/dropship/auth/sensitive-actions/passkey/start` 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-96b88934de83527d", "name": "Unused endpoint: POST /api/dropship/auth/sensitive-actions/passkey/verify", "shortDescription": {"text": "Unused endpoint: POST /api/dropship/auth/sensitive-actions/passkey/verify"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-auth.routes.ts` declares `POST /api/dropship/auth/sensitive-actions/passkey/verify` 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-1737b58854403c2b", "name": "Unused endpoint: POST /api/dropship/listings/preview", "shortDescription": {"text": "Unused endpoint: POST /api/dropship/listings/preview"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-listing.routes.ts` declares `POST /api/dropship/listings/preview` 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-82e30396d3fed69d", "name": "Unused endpoint: POST /api/dropship/listing-push-jobs", "shortDescription": {"text": "Unused endpoint: POST /api/dropship/listing-push-jobs"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-listing.routes.ts` declares `POST /api/dropship/listing-push-jobs` 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-ca439d73f63f3180", "name": "Unused endpoint: GET /api/dropship/settings", "shortDescription": {"text": "Unused endpoint: GET /api/dropship/settings"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-ops-surface.routes.ts` declares `GET /api/dropship/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-7cd10b8349427925", "name": "Unused endpoint: GET /api/dropship/admin/ops/overview", "shortDescription": {"text": "Unused endpoint: GET /api/dropship/admin/ops/overview"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-ops-surface.routes.ts` declares `GET /api/dropship/admin/ops/overview` 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-223b1aee3c6d94a3", "name": "Unused endpoint: GET /api/dropship/admin/audit-events", "shortDescription": {"text": "Unused endpoint: GET /api/dropship/admin/audit-events"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-ops-surface.routes.ts` declares `GET /api/dropship/admin/audit-events` 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-21576c5e72bfd7a0", "name": "Unused endpoint: GET /api/dropship/admin/dogfood-readiness", "shortDescription": {"text": "Unused endpoint: GET /api/dropship/admin/dogfood-readiness"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-ops-surface.routes.ts` declares `GET /api/dropship/admin/dogfood-readiness` 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-5c0c53c220af89f2", "name": "Unused endpoint: GET /api/dropship/admin/dogfood-smoke", "shortDescription": {"text": "Unused endpoint: GET /api/dropship/admin/dogfood-smoke"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-ops-surface.routes.ts` declares `GET /api/dropship/admin/dogfood-smoke` 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-91c6d1703c5b4f01", "name": "Unused endpoint: GET /api/dropship/admin/dogfood-launch-status", "shortDescription": {"text": "Unused endpoint: GET /api/dropship/admin/dogfood-launch-status"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-ops-surface.routes.ts` declares `GET /api/dropship/admin/dogfood-launch-status` 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-c2bccd2ba6e1e7a5", "name": "Unused endpoint: POST /api/dropship/webhooks/shopify/orders/paid", "shortDescription": {"text": "Unused endpoint: POST /api/dropship/webhooks/shopify/orders/paid"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-marketplace-order-intake.routes.ts` declares `POST /api/dropship/webhooks/shopify/orders/paid` 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-033fc29dae0a72e4", "name": "Unused endpoint: POST /api/dropship/webhooks/shopify/orders/create", "shortDescription": {"text": "Unused endpoint: POST /api/dropship/webhooks/shopify/orders/create"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-marketplace-order-intake.routes.ts` declares `POST /api/dropship/webhooks/shopify/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-3e0dd1a43d3361fd", "name": "Unused endpoint: POST /api/dropship/webhooks/shopify/app/uninstalled", "shortDescription": {"text": "Unused endpoint: POST /api/dropship/webhooks/shopify/app/uninstalled"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-marketplace-order-intake.routes.ts` declares `POST /api/dropship/webhooks/shopify/app/uninstalled` 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-f9d473dda1be4d4f", "name": "Unused endpoint: GET /api/dropship/store-connections", "shortDescription": {"text": "Unused endpoint: GET /api/dropship/store-connections"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-store-connection.routes.ts` declares `GET /api/dropship/store-connections` 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-a3620bb11f3ddc76", "name": "Unused endpoint: POST /api/dropship/store-connections/oauth/start", "shortDescription": {"text": "Unused endpoint: POST /api/dropship/store-connections/oauth/start"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-store-connection.routes.ts` declares `POST /api/dropship/store-connections/oauth/start` 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-6e90bc8ef7c88805", "name": "Unused endpoint: GET /api/dropship/store-connections/oauth/callback", "shortDescription": {"text": "Unused endpoint: GET /api/dropship/store-connections/oauth/callback"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-store-connection.routes.ts` declares `GET /api/dropship/store-connections/oauth/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-9fbf994dc076b9e0", "name": "Unused endpoint: POST /api/dropship/store-connections/:storeConnectionId/disconnect", "shortDescription": {"text": "Unused endpoint: POST /api/dropship/store-connections/:storeConnectionId/disconnect"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-store-connection.routes.ts` declares `POST /api/dropship/store-connections/:storeConnectionId/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-fc4fdc05b953ab70", "name": "Unused endpoint: GET /api/dropship/admin/oms-channel-config", "shortDescription": {"text": "Unused endpoint: GET /api/dropship/admin/oms-channel-config"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-admin-oms-channel-config.routes.ts` declares `GET /api/dropship/admin/oms-channel-config` 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-e4b2769468f7b8fc", "name": "Unused endpoint: PUT /api/dropship/admin/oms-channel-config", "shortDescription": {"text": "Unused endpoint: PUT /api/dropship/admin/oms-channel-config"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-admin-oms-channel-config.routes.ts` declares `PUT /api/dropship/admin/oms-channel-config` 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-f32220383ff7f9bd", "name": "Unused endpoint: POST /api/dropship/admin/oms-channel-config/default-source", "shortDescription": {"text": "Unused endpoint: POST /api/dropship/admin/oms-channel-config/default-source"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-admin-oms-channel-config.routes.ts` declares `POST /api/dropship/admin/oms-channel-config/default-source` 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-782f917adca1cc64", "name": "Unused endpoint: POST /api/dropship/admin/worker-sweeps/:worker/run", "shortDescription": {"text": "Unused endpoint: POST /api/dropship/admin/worker-sweeps/:worker/run"}, "fullDescription": {"text": "`server/modules/dropship/interfaces/http/dropship-admin-worker-ops.routes.ts` declares `POST /api/dropship/admin/worker-sweeps/:worker/run` 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/24831"}, "properties": {"repository": "cardshellz/Echelon", "repoUrl": "https://github.com/cardshellz/Echelon", "branch": "main"}, "results": [{"ruleId": "scanner-db7cd8ad392848bb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 debug-discounts.ts:11"}, "properties": {"repobilityId": "fd93671f34401613", "scanner": "scanner-primary", "fingerprint": "db7cd8ad392848bb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-82d4ee10dc77e71b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 inspect-shopify-json.ts:13"}, "properties": {"repobilityId": "852aba465697a154", "scanner": "scanner-primary", "fingerprint": "82d4ee10dc77e71b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bb0c45fbf4c906aa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check_reservations.ts:12"}, "properties": {"repobilityId": "22022e30671b3113", "scanner": "scanner-primary", "fingerprint": "bb0c45fbf4c906aa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0fc58636e64857ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 query_data_2.ts:1"}, "properties": {"repobilityId": "3cd78449a6f7f2e7", "scanner": "scanner-primary", "fingerprint": "0fc58636e64857ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-81d80e9c9c7f5e4a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check_shlz.js:10"}, "properties": {"repobilityId": "18203d0ee6936dd2", "scanner": "scanner-primary", "fingerprint": "81d80e9c9c7f5e4a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-59c7bcb5963c5f42", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 fix_caden.js:31"}, "properties": {"repobilityId": "a10b767928b94a7e", "scanner": "scanner-primary", "fingerprint": "59c7bcb5963c5f42", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d5943b5e9eba32d8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check-counts.ts:17"}, "properties": {"repobilityId": "a27449c853390c0b", "scanner": "scanner-primary", "fingerprint": "d5943b5e9eba32d8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5a679d3ba4c7ef9c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-wms-query.ts:5"}, "properties": {"repobilityId": "97773e1cdc771a03", "scanner": "scanner-primary", "fingerprint": "5a679d3ba4c7ef9c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0cd22ec838ef0d61", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-db-count.ts:8"}, "properties": {"repobilityId": "c5da7db93af2d851", "scanner": "scanner-primary", "fingerprint": "0cd22ec838ef0d61", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-73586521e057d7dd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 vite-plugin-meta-images.ts:76"}, "properties": {"repobilityId": "529f91586f4c45da", "scanner": "scanner-primary", "fingerprint": "73586521e057d7dd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-32852340d31cd5f2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dump-settings.ts:7"}, "properties": {"repobilityId": "5650e2e42abe1570", "scanner": "scanner-primary", "fingerprint": "32852340d31cd5f2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c8bdf48889086ff2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 query_data.ts:1"}, "properties": {"repobilityId": "6d688a02c03772b3", "scanner": "scanner-primary", "fingerprint": "c8bdf48889086ff2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d6ee0ed36bfef95c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check-mappings.ts:12"}, "properties": {"repobilityId": "0044fb7b341cf608", "scanner": "scanner-primary", "fingerprint": "d6ee0ed36bfef95c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c4e0c279a266ae91", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 ops-portal.jsx:183"}, "properties": {"repobilityId": "67b1be75ed9f2213", "scanner": "scanner-primary", "fingerprint": "c4e0c279a266ae91", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-533ff979fa732e83", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test_drizzle.ts:8"}, "properties": {"repobilityId": "29f9dfd01445d581", "scanner": "scanner-primary", "fingerprint": "533ff979fa732e83", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b4dc1ed90757c108", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-queue.ts:25"}, "properties": {"repobilityId": "773da964ead2c76a", "scanner": "scanner-primary", "fingerprint": "b4dc1ed90757c108", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9ab3e0eee5df20f8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check-dups.ts:10"}, "properties": {"repobilityId": "0d4931f005a7471b", "scanner": "scanner-primary", "fingerprint": "9ab3e0eee5df20f8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d1cc9ac7a900cb54", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check3.ts:5"}, "properties": {"repobilityId": "842b0c21601d603f", "scanner": "scanner-primary", "fingerprint": "d1cc9ac7a900cb54", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8c706bcc51a87ed1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 temp_migrate_catalog.ts:11"}, "properties": {"repobilityId": "99ff1da0ea5e9731", "scanner": "scanner-primary", "fingerprint": "8c706bcc51a87ed1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d0fbfc6392dfe274", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check-assets.ts:11"}, "properties": {"repobilityId": "5c9aeafc1a3061a1", "scanner": "scanner-primary", "fingerprint": "d0fbfc6392dfe274", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fbf640b3d7e52e43", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 migrate-oms2.ts:10"}, "properties": {"repobilityId": "43a77b23de5bba95", "scanner": "scanner-primary", "fingerprint": "fbf640b3d7e52e43", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9b993ad6c82fe933", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 fix.js:37"}, "properties": {"repobilityId": "809c6736564a5828", "scanner": "scanner-primary", "fingerprint": "9b993ad6c82fe933", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a00db10e60108775", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apply_schemas.ts:10"}, "properties": {"repobilityId": "f89520ebd5865555", "scanner": "scanner-primary", "fingerprint": "a00db10e60108775", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-78da5342ed2502c8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scratch.ts:6"}, "properties": {"repobilityId": "9c0c3faa3ebff163", "scanner": "scanner-primary", "fingerprint": "78da5342ed2502c8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1e385f303c3586cc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 force_schema.ts:14"}, "properties": {"repobilityId": "6e4a8056eb4a10cf", "scanner": "scanner-primary", "fingerprint": "1e385f303c3586cc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-55633fb6aff4d689", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check_ids.ts:8"}, "properties": {"repobilityId": "e4b0d593a65a9769", "scanner": "scanner-primary", "fingerprint": "55633fb6aff4d689", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-958459fa0ecd6d5a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 fix_po.ts:7"}, "properties": {"repobilityId": "c07c055e29954020", "scanner": "scanner-primary", "fingerprint": "958459fa0ecd6d5a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cf797bcc52e372c0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apply-0072.ts:13"}, "properties": {"repobilityId": "6f70bcf14de6b137", "scanner": "scanner-primary", "fingerprint": "cf797bcc52e372c0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8e604c24b02d3e69", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sync-selling-plans.ts:5"}, "properties": {"repobilityId": "ad9714908a0d5a24", "scanner": "scanner-primary", "fingerprint": "8e604c24b02d3e69", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f4f1d999f371b068", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check_caden_dates.js:14"}, "properties": {"repobilityId": "e805b239e9f4b598", "scanner": "scanner-primary", "fingerprint": "f4f1d999f371b068", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-be0e6cf43d656301", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 query_check.ts:1"}, "properties": {"repobilityId": "0b2d95520c75cb7c", "scanner": "scanner-primary", "fingerprint": "be0e6cf43d656301", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7c8915f6aaf0c2ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check-tokens.ts:12"}, "properties": {"repobilityId": "17b821aa217d9920", "scanner": "scanner-primary", "fingerprint": "7c8915f6aaf0c2ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b944022ef5b0f4e4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check_all_full.ts:1"}, "properties": {"repobilityId": "72beea0ce16baa6b", "scanner": "scanner-primary", "fingerprint": "b944022ef5b0f4e4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ca701436e599f1d2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 temp_dump_schemas.ts:22"}, "properties": {"repobilityId": "3047744a8615628c", "scanner": "scanner-primary", "fingerprint": "ca701436e599f1d2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6dff6aa7879a2e96", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-shopify-bridge.ts:20"}, "properties": {"repobilityId": "a1b55edda6d38c39", "scanner": "scanner-primary", "fingerprint": "6dff6aa7879a2e96", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a99de4e68caefcd4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check_order.js:9"}, "properties": {"repobilityId": "20b621eefe7bd3ce", "scanner": "scanner-primary", "fingerprint": "a99de4e68caefcd4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-31561c8e53c944bb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 temp_inspect_public.ts:11"}, "properties": {"repobilityId": "77dcdf75b8a1cf47", "scanner": "scanner-primary", "fingerprint": "31561c8e53c944bb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3ec6639f6f3b2c71", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-schemas.ts:17"}, "properties": {"repobilityId": "12045ea8a85f34db", "scanner": "scanner-primary", "fingerprint": "3ec6639f6f3b2c71", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-844b6aaaf35dcc58", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test_delete.ts:8"}, "properties": {"repobilityId": "2a80fe3abd424d01", "scanner": "scanner-primary", "fingerprint": "844b6aaaf35dcc58", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7e6b15ed7b88445b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check_member.js:8"}, "properties": {"repobilityId": "89274d0accf48252", "scanner": "scanner-primary", "fingerprint": "7e6b15ed7b88445b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a73d3239e3b3628a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test_schema.ts:15"}, "properties": {"repobilityId": "597ec05d00963125", "scanner": "scanner-primary", "fingerprint": "a73d3239e3b3628a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4620ae14ad7d53f3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check.ts:16"}, "properties": {"repobilityId": "bec576a103ada526", "scanner": "scanner-primary", "fingerprint": "4620ae14ad7d53f3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-711534e20d193b8b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check-default.ts:11"}, "properties": {"repobilityId": "c71b5dc81ee78434", "scanner": "scanner-primary", "fingerprint": "711534e20d193b8b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-87b818c4f1f94acf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tmp-migrate.ts:9"}, "properties": {"repobilityId": "f01f274758aa129d", "scanner": "scanner-primary", "fingerprint": "87b818c4f1f94acf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-443f1f9883cde238", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 temp_check_55649.ts:9"}, "properties": {"repobilityId": "103fd2538a096ec9", "scanner": "scanner-primary", "fingerprint": "443f1f9883cde238", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2fc53a33a4e3a16b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tmp-cols.ts:9"}, "properties": {"repobilityId": "b716a275dcfd2f97", "scanner": "scanner-primary", "fingerprint": "2fc53a33a4e3a16b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6ef5c13b39caf15d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tmp3.ts:13"}, "properties": {"repobilityId": "31a4d3e4bcd49237", "scanner": "scanner-primary", "fingerprint": "6ef5c13b39caf15d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ea34b3c7c5333cb2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 compare_sp.ts:8"}, "properties": {"repobilityId": "0feadf3adea85555", "scanner": "scanner-primary", "fingerprint": "ea34b3c7c5333cb2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d25748dcea167174", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 create-plan.ts:13"}, "properties": {"repobilityId": "42d4def3927bd9c1", "scanner": "scanner-primary", "fingerprint": "d25748dcea167174", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5b80efd64a629a30", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 debug-plans2.ts:6"}, "properties": {"repobilityId": "1efb7ecedb7e6d45", "scanner": "scanner-primary", "fingerprint": "5b80efd64a629a30", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b99a2379ae714f2a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tmp.ts:11"}, "properties": {"repobilityId": "5b63175d87798a22", "scanner": "scanner-primary", "fingerprint": "b99a2379ae714f2a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-505ee0afb489ac7e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 push.ts:4"}, "properties": {"repobilityId": "9fee05be1c125e3c", "scanner": "scanner-primary", "fingerprint": "505ee0afb489ac7e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-612ba737e1e786b6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 temp_check_catalog.ts:9"}, "properties": {"repobilityId": "92ca77cbce6ee335", "scanner": "scanner-primary", "fingerprint": "612ba737e1e786b6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a79388b5d58d7767", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tmp2.ts:14"}, "properties": {"repobilityId": "e87da5caf7a0a9dd", "scanner": "scanner-primary", "fingerprint": "a79388b5d58d7767", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fe7de20d6ab01484", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check-recent-assets.ts:11"}, "properties": {"repobilityId": "8fac2afa0004b8a3", "scanner": "scanner-primary", "fingerprint": "fe7de20d6ab01484", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-814b11fb18c40f65", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 mock-atp.js:23"}, "properties": {"repobilityId": "b94f760ea335b5a9", "scanner": "scanner-primary", "fingerprint": "814b11fb18c40f65", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b34df5cdd84956dc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-fetch2.ts:23"}, "properties": {"repobilityId": "3b7738f93d838820", "scanner": "scanner-primary", "fingerprint": "b34df5cdd84956dc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c27e42410751b989", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check_events.js:10"}, "properties": {"repobilityId": "73c4536d76535bd7", "scanner": "scanner-primary", "fingerprint": "c27e42410751b989", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2a18161a4139a598", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 find-mem.ts:6"}, "properties": {"repobilityId": "e5acca2ac8f54405", "scanner": "scanner-primary", "fingerprint": "2a18161a4139a598", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-093251b25e9edb91", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 temp_drop_ghosts.ts:24"}, "properties": {"repobilityId": "5d72b03ff75c6a10", "scanner": "scanner-primary", "fingerprint": "093251b25e9edb91", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0eef15b6c54d9178", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-wms-sync.ts:11"}, "properties": {"repobilityId": "146f402704b6cd18", "scanner": "scanner-primary", "fingerprint": "0eef15b6c54d9178", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b3fcdcc73613b447", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check_cats2.ts:7"}, "properties": {"repobilityId": "dc699282d4b2ce53", "scanner": "scanner-primary", "fingerprint": "b3fcdcc73613b447", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cd5c416084fc7627", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tmp_get_tables.ts:12"}, "properties": {"repobilityId": "70c23f6090eeb655", "scanner": "scanner-primary", "fingerprint": "cd5c416084fc7627", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-62b22c9c5ea0c5c9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check_cats3.ts:6"}, "properties": {"repobilityId": "240f40e422a0a2bb", "scanner": "scanner-primary", "fingerprint": "62b22c9c5ea0c5c9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5614f0b46c7ef127", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check-shopify-images.ts:21"}, "properties": {"repobilityId": "d44daa7c22a97d6c", "scanner": "scanner-primary", "fingerprint": "5614f0b46c7ef127", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b44b7ce4bc975d61", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 migrate-cents.ts:6"}, "properties": {"repobilityId": "3b811b7a4a94be5c", "scanner": "scanner-primary", "fingerprint": "b44b7ce4bc975d61", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de8b7a0608fb69a0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 debug_plans.ts:12"}, "properties": {"repobilityId": "fd898fa4f4a9f360", "scanner": "scanner-primary", "fingerprint": "de8b7a0608fb69a0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5de44bfa847ad5eb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check-all-shopify-conns.ts:11"}, "properties": {"repobilityId": "11bda9c9091613d0", "scanner": "scanner-primary", "fingerprint": "5de44bfa847ad5eb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b0c09c34a4b3f94a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check2.ts:6"}, "properties": {"repobilityId": "bfd30ee0bd7bb01d", "scanner": "scanner-primary", "fingerprint": "b0c09c34a4b3f94a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8efda5a1cf5118d9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check_sp.js:8"}, "properties": {"repobilityId": "dfbb0a0f60e61d3c", "scanner": "scanner-primary", "fingerprint": "8efda5a1cf5118d9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1938d2263671cd3e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 temp_list_public.ts:15"}, "properties": {"repobilityId": "92e944aed6bf685a", "scanner": "scanner-primary", "fingerprint": "1938d2263671cd3e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-90826b33a56e3b0c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tmp4.ts:11"}, "properties": {"repobilityId": "0b58a1af6df9e8f8", "scanner": "scanner-primary", "fingerprint": "90826b33a56e3b0c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9432b08c4e330594", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test_query.ts:56"}, "properties": {"repobilityId": "a5edfbd800027aa9", "scanner": "scanner-primary", "fingerprint": "9432b08c4e330594", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4b73b65aeea62b09", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tmp_query.ts:5"}, "properties": {"repobilityId": "d9d67972bd013e17", "scanner": "scanner-primary", "fingerprint": "4b73b65aeea62b09", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-779f01bfb1227cfb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dump_all_plans.ts:12"}, "properties": {"repobilityId": "e8ddcc577dc38b4f", "scanner": "scanner-primary", "fingerprint": "779f01bfb1227cfb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a426232897d714e5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 fix.ts:27"}, "properties": {"repobilityId": "b71e11b709787cb3", "scanner": "scanner-primary", "fingerprint": "a426232897d714e5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e9ab65e8b05ebd6c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check_po.ts:8"}, "properties": {"repobilityId": "22ff58d8ef3632b5", "scanner": "scanner-primary", "fingerprint": "e9ab65e8b05ebd6c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-11ec284fbc00eea6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-fetch.ts:13"}, "properties": {"repobilityId": "754ed7c1bb081638", "scanner": "scanner-primary", "fingerprint": "11ec284fbc00eea6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d9028d769347a785", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check_all.ts:1"}, "properties": {"repobilityId": "4b3d28e96f611cda", "scanner": "scanner-primary", "fingerprint": "d9028d769347a785", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a575da98a8cd8bd4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check_data.js:12"}, "properties": {"repobilityId": "27746ef56e5a27dd", "scanner": "scanner-primary", "fingerprint": "a575da98a8cd8bd4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6885d1ae99228714", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 fix-orders-storage.ts:35"}, "properties": {"repobilityId": "6059832cb6a770ef", "scanner": "scanner-primary", "fingerprint": "6885d1ae99228714", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9bafbd63ee9edef4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 debug-db.ts:5"}, "properties": {"repobilityId": "43dc829207d04138", "scanner": "scanner-primary", "fingerprint": "9bafbd63ee9edef4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-20ed62d9b7b0e8bc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 migrate-oms.ts:9"}, "properties": {"repobilityId": "17038a944c6a9403", "scanner": "scanner-primary", "fingerprint": "20ed62d9b7b0e8bc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8e39893fe5bdafe3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 temp_find_dropship.ts:13"}, "properties": {"repobilityId": "338f12e31bc730bc", "scanner": "scanner-primary", "fingerprint": "8e39893fe5bdafe3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1a57c754626ca7dc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 fix_caden_dates.js:21"}, "properties": {"repobilityId": "43223612aa23bf23", "scanner": "scanner-primary", "fingerprint": "1a57c754626ca7dc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-742db520f4f8a9df", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 debug-db2.ts:6"}, "properties": {"repobilityId": "15009a156b64fbd6", "scanner": "scanner-primary", "fingerprint": "742db520f4f8a9df", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-88a8426716b4d6af", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 debug-columns.ts:15"}, "properties": {"repobilityId": "10f29e34c482baa1", "scanner": "scanner-primary", "fingerprint": "88a8426716b4d6af", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-303ee301fd842f34", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check_cats.ts:5"}, "properties": {"repobilityId": "d060594864c411cd", "scanner": "scanner-primary", "fingerprint": "303ee301fd842f34", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2bebde29b06bf540", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 read_dump.ts:10"}, "properties": {"repobilityId": "51624b1de8a81fdb", "scanner": "scanner-primary", "fingerprint": "2bebde29b06bf540", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5f97126bde112a49", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 migrate-wms.ts:10"}, "properties": {"repobilityId": "c2ce21c4cf693784", "scanner": "scanner-primary", "fingerprint": "5f97126bde112a49", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e28aaa855cb1ef6b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check_plan_props.js:8"}, "properties": {"repobilityId": "00492cc0daaf72bc", "scanner": "scanner-primary", "fingerprint": "e28aaa855cb1ef6b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f65a3a7c547219ea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import_ebay_to_echelon.ts:10"}, "properties": {"repobilityId": "c9573853351703c5", "scanner": "scanner-primary", "fingerprint": "f65a3a7c547219ea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5252ed3d8b7c246f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rescue_ebay_images.ts:55"}, "properties": {"repobilityId": "578b9551ea00d00e", "scanner": "scanner-primary", "fingerprint": "5252ed3d8b7c246f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-db40ea66b865ec13", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/push-ebay-images-to-shopify.ts:46"}, "properties": {"repobilityId": "5849bd9773593f2a", "scanner": "scanner-primary", "fingerprint": "db40ea66b865ec13", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6dcf87ce139fe32f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-search-path.ts:8"}, "properties": {"repobilityId": "180ddab3ce41544a", "scanner": "scanner-primary", "fingerprint": "6dcf87ce139fe32f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-00a2b3548662ae06", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/restore-legacy-accounting.ts:5"}, "properties": {"repobilityId": "db66b5df4201f118", "scanner": "scanner-primary", "fingerprint": "00a2b3548662ae06", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2030566ea5c46b14", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clean-digital.ts:19"}, "properties": {"repobilityId": "74a12b5901a2d384", "scanner": "scanner-primary", "fingerprint": "2030566ea5c46b14", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-43c270a8508c8ce5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-prod60.ts:67"}, "properties": {"repobilityId": "2418df6bd86ddef9", "scanner": "scanner-primary", "fingerprint": "43c270a8508c8ce5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6c864cd6c21b424a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-replen-source-resolution.ts:557"}, "properties": {"repobilityId": "a74b58ec57e78ef9", "scanner": "scanner-primary", "fingerprint": "6c864cd6c21b424a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-55303324e33e076d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-shipment-status-values.ts:62"}, "properties": {"repobilityId": "7daa12d9ef1a1413", "scanner": "scanner-primary", "fingerprint": "55303324e33e076d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-be26215c83fc4f2c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/run-wms-cutover.ts:5"}, "properties": {"repobilityId": "d7503cd944d8c246", "scanner": "scanner-primary", "fingerprint": "be26215c83fc4f2c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-df7aab937bffe127", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-all-member-tiers.ts:20"}, "properties": {"repobilityId": "8368d5503ab280b9", "scanner": "scanner-primary", "fingerprint": "df7aab937bffe127", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ca918c94f9a042a5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-wms-source-id.ts:7"}, "properties": {"repobilityId": "2efd8d0a90bec4f9", "scanner": "scanner-primary", "fingerprint": "ca918c94f9a042a5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e5713e94acb8104f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-wms-oms-fulfillment-order-id-from-gid.ts:154"}, "properties": {"repobilityId": "8e442bd0892966a0", "scanner": "scanner-primary", "fingerprint": "e5713e94acb8104f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0e24063553b32b7b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-catalog-schema.ts:5"}, "properties": {"repobilityId": "d9c35ca256d133f1", "scanner": "scanner-primary", "fingerprint": "0e24063553b32b7b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-263a25ad72303cad", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-cogs-engine.ts:15"}, "properties": {"repobilityId": "fd34dadae1b1fbdd", "scanner": "scanner-primary", "fingerprint": "263a25ad72303cad", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b7e733479c64ce64", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-wms-oms-link.ts:175"}, "properties": {"repobilityId": "29156df2a13dd294", "scanner": "scanner-primary", "fingerprint": "b7e733479c64ce64", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e11c089998be4df1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-queue.ts:5"}, "properties": {"repobilityId": "f44593a3fbcfa327", "scanner": "scanner-primary", "fingerprint": "e11c089998be4df1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b1693ae6664b4f87", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-wms-oms-fulfillment-order-id-from-external-order-number.ts:131"}, "properties": {"repobilityId": "fc8daf131b85100a", "scanner": "scanner-primary", "fingerprint": "b1693ae6664b4f87", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-15f5a2532a0875b8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sync_images_all.ts:49"}, "properties": {"repobilityId": "a79c7494daf7986f", "scanner": "scanner-primary", "fingerprint": "15f5a2532a0875b8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-32dcf757af3ab452", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/introspect-membership.ts:44"}, "properties": {"repobilityId": "fbe61c4c433133dd", "scanner": "scanner-primary", "fingerprint": "32dcf757af3ab452", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8bf28b90069e20db", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/debug-ss-push.ts:8"}, "properties": {"repobilityId": "5b8eb60bf19ff56a", "scanner": "scanner-primary", "fingerprint": "8bf28b90069e20db", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5e30501f91da74b2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-duplicate-wms-orders.ts:131"}, "properties": {"repobilityId": "5525b982ead41b14", "scanner": "scanner-primary", "fingerprint": "5e30501f91da74b2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4d6be4998133c1fa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_check-data.ts:16"}, "properties": {"repobilityId": "af550973b74897b2", "scanner": "scanner-primary", "fingerprint": "4d6be4998133c1fa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb9f97b49e752724", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-oms.ts:11"}, "properties": {"repobilityId": "652e8cab25632958", "scanner": "scanner-primary", "fingerprint": "cb9f97b49e752724", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d0a77870f5b62517", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/run-backfill.ts:29"}, "properties": {"repobilityId": "d57ce762f1012aa3", "scanner": "scanner-primary", "fingerprint": "d0a77870f5b62517", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9df752a79196b8c7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_check.ts:5"}, "properties": {"repobilityId": "28316879ce4ec5ae", "scanner": "scanner-primary", "fingerprint": "9df752a79196b8c7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6531d7a8517ae8f1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dump-schema.ts:26"}, "properties": {"repobilityId": "6593fef3e2f57045", "scanner": "scanner-primary", "fingerprint": "6531d7a8517ae8f1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aa2f0bba5b0d98ff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/parity-check-push.ts:700"}, "properties": {"repobilityId": "7b162d43126e5d56", "scanner": "scanner-primary", "fingerprint": "aa2f0bba5b0d98ff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-02c7a6d4f884b31c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_find-missing.ts:17"}, "properties": {"repobilityId": "05e96c4fc8eae484", "scanner": "scanner-primary", "fingerprint": "02c7a6d4f884b31c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2feacd53884fb6a7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/merge-membership-schema.ts:13"}, "properties": {"repobilityId": "b5d519828571b2bc", "scanner": "scanner-primary", "fingerprint": "2feacd53884fb6a7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dea54976db236a2a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clear_reserved.ts:14"}, "properties": {"repobilityId": "2ce4fc940d91ee82", "scanner": "scanner-primary", "fingerprint": "dea54976db236a2a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1d192a2350f6f6b6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dropship-dogfood-status.ts:48"}, "properties": {"repobilityId": "23ea4be7cb6e027c", "scanner": "scanner-primary", "fingerprint": "1d192a2350f6f6b6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f01a55c15c52ae4f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/prune-legacy-accounting.ts:5"}, "properties": {"repobilityId": "52b30d6a5f0f9230", "scanner": "scanner-primary", "fingerprint": "f01a55c15c52ae4f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8992c948a69aab09", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-membership.ts:27"}, "properties": {"repobilityId": "e7e17cb37e624efb", "scanner": "scanner-primary", "fingerprint": "8992c948a69aab09", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2198a188d2999fd6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_fix-columns.ts:15"}, "properties": {"repobilityId": "6962f8ab1a275a82", "scanner": "scanner-primary", "fingerprint": "2198a188d2999fd6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9d75a6d372bea3b2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-ledger-variances.ts:109"}, "properties": {"repobilityId": "a018ca332e13e28a", "scanner": "scanner-primary", "fingerprint": "9d75a6d372bea3b2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ebba8849530469cd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sync-active-wms-sort-ranks-to-shipstation.ts:115"}, "properties": {"repobilityId": "378a01d9d19f367f", "scanner": "scanner-primary", "fingerprint": "ebba8849530469cd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b74f8ddf25a94d1d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_ca-live-sync.ts:31"}, "properties": {"repobilityId": "985d48d948989152", "scanner": "scanner-primary", "fingerprint": "b74f8ddf25a94d1d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a36de9cfe0eb5e7b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-over-reserved.ts:23"}, "properties": {"repobilityId": "c4033ed292a71cfb", "scanner": "scanner-primary", "fingerprint": "a36de9cfe0eb5e7b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ec080f2ceabdda95", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reconcile-ebay-listing-intent.ts:111"}, "properties": {"repobilityId": "f46e65584f38e768", "scanner": "scanner-primary", "fingerprint": "ec080f2ceabdda95", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2ed730903a9f258f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tmp-check-db.ts:7"}, "properties": {"repobilityId": "5ba792d7eceddcd1", "scanner": "scanner-primary", "fingerprint": "2ed730903a9f258f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2432388d5b744d44", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/push-stuck-shipments.ts:19"}, "properties": {"repobilityId": "8461abbe4983393b", "scanner": "scanner-primary", "fingerprint": "2432388d5b744d44", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-df1f346eb5b5d3f8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recover-replen-health.ts:430"}, "properties": {"repobilityId": "8ed7157616f612a9", "scanner": "scanner-primary", "fingerprint": "df1f346eb5b5d3f8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3eb384eb0ee417dc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-daily-replen-qa-counts.ts:541"}, "properties": {"repobilityId": "4682cc3941c12f16", "scanner": "scanner-primary", "fingerprint": "3eb384eb0ee417dc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-26ed7bf835928dba", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-forecast-input-gaps.ts:184"}, "properties": {"repobilityId": "141c38c5294b4e19", "scanner": "scanner-primary", "fingerprint": "26ed7bf835928dba", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a1b5f698d37c5ff3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/run-dry-sync.ts:49"}, "properties": {"repobilityId": "fe6790f46abfb7db", "scanner": "scanner-primary", "fingerprint": "a1b5f698d37c5ff3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0d2f0d065a504298", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_apply-missing-tables.ts:113"}, "properties": {"repobilityId": "4aec91d6b436b9a4", "scanner": "scanner-primary", "fingerprint": "0d2f0d065a504298", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-941dab4f8a12fb97", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-oms-status.ts:29"}, "properties": {"repobilityId": "35c751a6d4d949d5", "scanner": "scanner-primary", "fingerprint": "941dab4f8a12fb97", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-08897286d7d0a72f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-active-wms-sla-ranks.ts:241"}, "properties": {"repobilityId": "01f30e12106e3244", "scanner": "scanner-primary", "fingerprint": "08897286d7d0a72f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-008345c746b93b49", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-shopify-oms-line-fulfillment-status.ts:391"}, "properties": {"repobilityId": "fe5fc0bbdb59ec96", "scanner": "scanner-primary", "fingerprint": "008345c746b93b49", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-70e0fbc24bdffb7a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/repair-pick-slotting.ts:234"}, "properties": {"repobilityId": "39dcaa51e2d535b1", "scanner": "scanner-primary", "fingerprint": "70e0fbc24bdffb7a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e28759b8a536f35d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recover-blocked-replen.ts:109"}, "properties": {"repobilityId": "0b72330a9a9c3012", "scanner": "scanner-primary", "fingerprint": "e28759b8a536f35d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d3915c76a9d3a194", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dedup-oms-orders-duplicate-external-order-number.ts:63"}, "properties": {"repobilityId": "713bc6a82e732a7a", "scanner": "scanner-primary", "fingerprint": "d3915c76a9d3a194", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-243592c52782a7b5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_ebay-recon.ts:16"}, "properties": {"repobilityId": "4ca6a1fa30640dab", "scanner": "scanner-primary", "fingerprint": "243592c52782a7b5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-61fb0cd09bdef559", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reconcile-inventory-ledger.ts:118"}, "properties": {"repobilityId": "329ffd6723e09e22", "scanner": "scanner-primary", "fingerprint": "61fb0cd09bdef559", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eb91eaf6c26c03eb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tmp-check-tables.ts:6"}, "properties": {"repobilityId": "eaa38494be62418a", "scanner": "scanner-primary", "fingerprint": "eb91eaf6c26c03eb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-08706bb4f6b08f6e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/full-table-audit.ts:71"}, "properties": {"repobilityId": "db111a5d5d6ea1fa", "scanner": "scanner-primary", "fingerprint": "08706bb4f6b08f6e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8ed78566aedccc13", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recover-allocation-exceptions.ts:832"}, "properties": {"repobilityId": "82b8dd4a459d7a73", "scanner": "scanner-primary", "fingerprint": "8ed78566aedccc13", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fa36c43df410b722", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/monitor-pick-replen-health.ts:353"}, "properties": {"repobilityId": "f41aa1c0c64b364a", "scanner": "scanner-primary", "fingerprint": "fa36c43df410b722", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-30451e3a731f418d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/run-live-sync-all.ts:31"}, "properties": {"repobilityId": "e681aff3b7b36634", "scanner": "scanner-primary", "fingerprint": "30451e3a731f418d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0fd856612ab4f09f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sync-ebay-images.ts:73"}, "properties": {"repobilityId": "785d9be17c75020e", "scanner": "scanner-primary", "fingerprint": "0fd856612ab4f09f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-94effa00052bd943", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-duplicate-orders.ts:10"}, "properties": {"repobilityId": "2828cc9e493a61c4", "scanner": "scanner-primary", "fingerprint": "94effa00052bd943", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ca1d86154ac04748", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-all-schemas.ts:8"}, "properties": {"repobilityId": "f5834b2cc2cd200c", "scanner": "scanner-primary", "fingerprint": "ca1d86154ac04748", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2a530c0e27d06784", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-multi-location.ts:16"}, "properties": {"repobilityId": "d83a49328c1c3c07", "scanner": "scanner-primary", "fingerprint": "2a530c0e27d06784", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c63da9b60dc9e3f6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-priority-and-repush.ts:20"}, "properties": {"repobilityId": "d72b6d6cf2f806c8", "scanner": "scanner-primary", "fingerprint": "c63da9b60dc9e3f6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-36d1f24a17985be8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/drop-legacy-tables.ts:10"}, "properties": {"repobilityId": "689fe51d5d23f447", "scanner": "scanner-primary", "fingerprint": "36d1f24a17985be8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-94948725d9e1d051", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/run-live-inventory-sync.ts:47"}, "properties": {"repobilityId": "5cd2537bad6efa45", "scanner": "scanner-primary", "fingerprint": "94948725d9e1d051", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c2f2cc0ffda94db", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_check-inv.ts:6"}, "properties": {"repobilityId": "bd686e68f5c2ca4b", "scanner": "scanner-primary", "fingerprint": "3c2f2cc0ffda94db", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1ad80e6cc5c6afa5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-schema-map.ts:41"}, "properties": {"repobilityId": "d1c02aa0ab10c3aa", "scanner": "scanner-primary", "fingerprint": "1ad80e6cc5c6afa5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9b8f93433eb4675c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/patch-catalog-sql.js:69"}, "properties": {"repobilityId": "c1cd3ee8115ea466", "scanner": "scanner-primary", "fingerprint": "9b8f93433eb4675c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f495071b3d2e5412", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/_ca-backfill.ts:18"}, "properties": {"repobilityId": "04287b946737afd1", "scanner": "scanner-primary", "fingerprint": "f495071b3d2e5412", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1f7c7ce52bbf169c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill/fix-dangling-order-items.ts:22"}, "properties": {"repobilityId": "93e30ba28f3db547", "scanner": "scanner-primary", "fingerprint": "1f7c7ce52bbf169c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bbced523a65412a8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 script/build.ts:38"}, "properties": {"repobilityId": "47ceeaa6313fa094", "scanner": "scanner-primary", "fingerprint": "bbced523a65412a8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aaae67c4f4adda93", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/index.ts:143"}, "properties": {"repobilityId": "b4961a877930fd2f", "scanner": "scanner-primary", "fingerprint": "aaae67c4f4adda93", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e8f6f5eb699f3260", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/migrate.ts:5"}, "properties": {"repobilityId": "47589488b2e92ffa", "scanner": "scanner-primary", "fingerprint": "e8f6f5eb699f3260", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-49d193d03f5f87fb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/seed.ts:19"}, "properties": {"repobilityId": "1ca1f1cafc0f6732", "scanner": "scanner-primary", "fingerprint": "49d193d03f5f87fb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-154d923ea34010b3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/websocket.ts:11"}, "properties": {"repobilityId": "aae9692eff1511ad", "scanner": "scanner-primary", "fingerprint": "154d923ea34010b3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-df3764517d65afc6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/db.ts:91"}, "properties": {"repobilityId": "d6b4a075df42d670", "scanner": "scanner-primary", "fingerprint": "df3764517d65afc6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8b1a64883eaadc57", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/jobs/auto-draft.job.ts:263"}, "properties": {"repobilityId": "a9a9b279ea91ef18", "scanner": "scanner-primary", "fingerprint": "8b1a64883eaadc57", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8b3bf13aa90eaea4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/jobs/run-procurement-health-escalation.ts:26"}, "properties": {"repobilityId": "28f2b90941bf059f", "scanner": "scanner-primary", "fingerprint": "8b3bf13aa90eaea4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-23817f3d193880a4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/jobs/run-auto-draft.ts:12"}, "properties": {"repobilityId": "c2e39731df35c450", "scanner": "scanner-primary", "fingerprint": "23817f3d193880a4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-49b81a8bead83559", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/fix_routes.ts:57"}, "properties": {"repobilityId": "8013e20de1638c87", "scanner": "scanner-primary", "fingerprint": "49b81a8bead83559", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b627e39f0fc2a3bb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/fix_orphaned_picks.ts:11"}, "properties": {"repobilityId": "79474fcf277889d4", "scanner": "scanner-primary", "fingerprint": "b627e39f0fc2a3bb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-440d22f3f96ed8d1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/fix_all_routes.ts:117"}, "properties": {"repobilityId": "0511d7a77a07869b", "scanner": "scanner-primary", "fingerprint": "440d22f3f96ed8d1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fb79e44e5afef9ec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/test_mark_shipped.ts:22"}, "properties": {"repobilityId": "a12561b9a555e284", "scanner": "scanner-primary", "fingerprint": "fb79e44e5afef9ec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0ff69afe5efcd37a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/check_picked.ts:11"}, "properties": {"repobilityId": "0a5153d5d3fa8d15", "scanner": "scanner-primary", "fingerprint": "0ff69afe5efcd37a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c68604f349cbe927", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/auth-audit.ts:142"}, "properties": {"repobilityId": "7fbe5726f92a660b", "scanner": "scanner-primary", "fingerprint": "c68604f349cbe927", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2eb9ba01380f43db", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/infrastructure/auditLogger.ts:31"}, "properties": {"repobilityId": "b9abbf12239e9255", "scanner": "scanner-primary", "fingerprint": "2eb9ba01380f43db", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d559ded3648afb58", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/instrumentation/metrics.ts:96"}, "properties": {"repobilityId": "df5fb06ecf0e2b70", "scanner": "scanner-primary", "fingerprint": "d559ded3648afb58", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8682fb432eb6677a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/sync/sync-recovery.service.ts:89"}, "properties": {"repobilityId": "df7f0018f3f444b9", "scanner": "scanner-primary", "fingerprint": "8682fb432eb6677a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a7fa939b19f644f8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/dropship/application/dropship-marketplace-tracking-service.ts:270"}, "properties": {"repobilityId": "788aaf2f5044a6f5", "scanner": "scanner-primary", "fingerprint": "a7fa939b19f644f8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-659a540f5389fdec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/warehouse/locations.routes.ts:80"}, "properties": {"repobilityId": "c7d72b515635b6ea", "scanner": "scanner-primary", "fingerprint": "659a540f5389fdec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e2bff71ae3d89dbf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/warehouse/warehouse.routes.ts:773"}, "properties": {"repobilityId": "85dd405d69fa10b5", "scanner": "scanner-primary", "fingerprint": "e2bff71ae3d89dbf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-33e20f9cf73cb519", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/procurement/receiving.routes.ts:91"}, "properties": {"repobilityId": "d3c00593b107b171", "scanner": "scanner-primary", "fingerprint": "33e20f9cf73cb519", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-20e4a84840980199", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/procurement/purchasing.service.ts:1221"}, "properties": {"repobilityId": "dcbec6a7b6069f73", "scanner": "scanner-primary", "fingerprint": "20e4a84840980199", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-33cbe5647f518151", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/integrations/shopify.ts:362"}, "properties": {"repobilityId": "6eb3b1d29f288ec0", "scanner": "scanner-primary", "fingerprint": "33cbe5647f518151", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bb44e64ca4b62048", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/identity/application/identity.use-cases.ts:71"}, "properties": {"repobilityId": "38f0f7c8a017106d", "scanner": "scanner-primary", "fingerprint": "bb44e64ca4b62048", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b79e01d351b80626", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/identity/infrastructure/identity.repository.ts:151"}, "properties": {"repobilityId": "3af9a2cce71bc5b5", "scanner": "scanner-primary", "fingerprint": "b79e01d351b80626", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-760a660e38f8f483", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/channels/scheduled-sync.service.ts:84"}, "properties": {"repobilityId": "bb1dfa323d4cdd92", "scanner": "scanner-primary", "fingerprint": "760a660e38f8f483", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f4e12167559a9b20", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/channels/echelon-sync-orchestrator.service.ts:225"}, "properties": {"repobilityId": "2ad04d53f5eee892", "scanner": "scanner-primary", "fingerprint": "f4e12167559a9b20", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0feb3e1b89e84819", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/channels/channels.routes.ts:777"}, "properties": {"repobilityId": "5f9e7fc99cfc115d", "scanner": "scanner-primary", "fingerprint": "0feb3e1b89e84819", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-801f7cd764bac1da", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/channels/channel-adapter.interface.ts:350"}, "properties": {"repobilityId": "a2569a6e541ab2bc", "scanner": "scanner-primary", "fingerprint": "801f7cd764bac1da", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8c3b91339f20a097", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/channels/sync.service.ts:111"}, "properties": {"repobilityId": "732ff5e79818e2cf", "scanner": "scanner-primary", "fingerprint": "8c3b91339f20a097", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0f7f5608358e8dac", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/channels/catalog-backfill.service.ts:216"}, "properties": {"repobilityId": "3234edb9f8d306e7", "scanner": "scanner-primary", "fingerprint": "0f7f5608358e8dac", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-beb2e555d871acc1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/channels/reservation.service.ts:498"}, "properties": {"repobilityId": "5505597596a1f60f", "scanner": "scanner-primary", "fingerprint": "beb2e555d871acc1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e55204439ff4886c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/channels/source-lock-init.ts:56"}, "properties": {"repobilityId": "ef9fb5ba2e792fa5", "scanner": "scanner-primary", "fingerprint": "e55204439ff4886c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a294d17025607a08", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/channels/adapters/ebay.adapter.ts:515"}, "properties": {"repobilityId": "fb2d310e82e3fa5d", "scanner": "scanner-primary", "fingerprint": "a294d17025607a08", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-62434f44b8767ca6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/channels/adapters/shopify.adapter.ts:592"}, "properties": {"repobilityId": "3f8ee15d33b34efd", "scanner": "scanner-primary", "fingerprint": "62434f44b8767ca6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6704ce0619f1d351", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/channels/adapters/ebay/ebay-auth.service.ts:178"}, "properties": {"repobilityId": "24757c325994a668", "scanner": "scanner-primary", "fingerprint": "6704ce0619f1d351", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-923209d0962db711", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/channels/adapters/ebay/ebay-api.client.ts:336"}, "properties": {"repobilityId": "38cf3e8a778f6483", "scanner": "scanner-primary", "fingerprint": "923209d0962db711", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d20fc317efd7d6c5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/subscriptions/subscription.scheduler.ts:17"}, "properties": {"repobilityId": "8d6191b20c425b43", "scanner": "scanner-primary", "fingerprint": "d20fc317efd7d6c5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-10396bfc4ba7de1d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/subscriptions/subscription.webhooks.ts:81"}, "properties": {"repobilityId": "abdff0fc9e2d9a17", "scanner": "scanner-primary", "fingerprint": "10396bfc4ba7de1d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c739cc69dea05967", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/subscriptions/subscription.routes.ts:225"}, "properties": {"repobilityId": "217c6d932914a3f3", "scanner": "scanner-primary", "fingerprint": "c739cc69dea05967", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cfaeae23e27b994c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/subscriptions/application/selling-plan.use-cases.ts:44"}, "properties": {"repobilityId": "3e43d02c7d92108b", "scanner": "scanner-primary", "fingerprint": "cfaeae23e27b994c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4d468c98617979f7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/subscriptions/application/subscription.use-cases.ts:19"}, "properties": {"repobilityId": "af29d9b481f86955", "scanner": "scanner-primary", "fingerprint": "4d468c98617979f7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-209fb2b007f9b88a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/orders/orders.storage.ts:75"}, "properties": {"repobilityId": "c3290647ef6cc53f", "scanner": "scanner-primary", "fingerprint": "209fb2b007f9b88a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b9a1447b06084b87", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/orders/shopify-order-reconciliation.ts:319"}, "properties": {"repobilityId": "41843cdcb6cccded", "scanner": "scanner-primary", "fingerprint": "b9a1447b06084b87", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fa72fb5c4c1ed2fb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/orders/combining.service.ts:307"}, "properties": {"repobilityId": "54904af4b0f6f098", "scanner": "scanner-primary", "fingerprint": "fa72fb5c4c1ed2fb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-53c68e503e2c29dc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/orders/picking.use-cases.ts:929"}, "properties": {"repobilityId": "5e5991f021fd8037", "scanner": "scanner-primary", "fingerprint": "53c68e503e2c29dc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-17d34f8b8584e0eb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/orders/fulfillment.service.ts:550"}, "properties": {"repobilityId": "7204081592213196", "scanner": "scanner-primary", "fingerprint": "17d34f8b8584e0eb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1e78ae4f05d0e784", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/orders/shipment-rollup.ts:975"}, "properties": {"repobilityId": "afb6968a34f7c683", "scanner": "scanner-primary", "fingerprint": "1e78ae4f05d0e784", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-30a0b44fe90c7892", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/catalog/image-sync.service.ts:87"}, "properties": {"repobilityId": "07c108e65e99ff14", "scanner": "scanner-primary", "fingerprint": "30a0b44fe90c7892", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-36ebdec29ee2eb47", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/catalog/catalog.routes.ts:607"}, "properties": {"repobilityId": "460887c1c3944e84", "scanner": "scanner-primary", "fingerprint": "36ebdec29ee2eb47", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0df02793110711a2", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 server/modules/catalog/product-import.service.ts:219"}, "properties": {"repobilityId": "2e8b1987cf0cf654", "scanner": "scanner-primary", "fingerprint": "0df02793110711a2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-6ac2d76e8af8c77e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/catalog/product-import.service.ts:131"}, "properties": {"repobilityId": "185259e95c745811", "scanner": "scanner-primary", "fingerprint": "6ac2d76e8af8c77e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f071add9a1f9a679", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 server/modules/oms/webhook-retry.worker.ts:2054"}, "properties": {"repobilityId": "f7c4c1bec852afc9", "scanner": "scanner-primary", "fingerprint": "f071add9a1f9a679", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-a3be390c0371d1ae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/webhook-retry.worker.ts:150"}, "properties": {"repobilityId": "9423f49eb8dbb442", "scanner": "scanner-primary", "fingerprint": "a3be390c0371d1ae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-be098c9867afc63b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/oms.service.ts:271"}, "properties": {"repobilityId": "365a15820ad5f5b2", "scanner": "scanner-primary", "fingerprint": "be098c9867afc63b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-06f5455fcea71cae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/ebay-order-ingestion.ts:213"}, "properties": {"repobilityId": "0ce708ff9c52feee", "scanner": "scanner-primary", "fingerprint": "06f5455fcea71cae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8102e10e96707b5e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/shopify-bridge.ts:252"}, "properties": {"repobilityId": "ef27c703e697e196", "scanner": "scanner-primary", "fingerprint": "8102e10e96707b5e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-22b8870b0e30735a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/shipstation-sweeper.ts:154"}, "properties": {"repobilityId": "1289ab7e85543449", "scanner": "scanner-primary", "fingerprint": "22b8870b0e30735a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-870f04d0eeabcf04", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/wms-sync.service.ts:136"}, "properties": {"repobilityId": "88d68967733ca548", "scanner": "scanner-primary", "fingerprint": "870f04d0eeabcf04", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e3f8f6e562649ade", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 server/modules/oms/fulfillment-push.service.ts:1240"}, "properties": {"repobilityId": "be7beda19aa50af5", "scanner": "scanner-primary", "fingerprint": "e3f8f6e562649ade", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-b57d75eccbac0c7b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/fulfillment-push.service.ts:489"}, "properties": {"repobilityId": "feab9fa6723d8dc5", "scanner": "scanner-primary", "fingerprint": "b57d75eccbac0c7b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f6747773e528e52c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/shipstation.service.ts:1598"}, "properties": {"repobilityId": "7a9076201fcc8a3b", "scanner": "scanner-primary", "fingerprint": "f6747773e528e52c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-01203927266deb3b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/fulfillment-sweeper.scheduler.ts:25"}, "properties": {"repobilityId": "f63737aca822d475", "scanner": "scanner-primary", "fingerprint": "01203927266deb3b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f2af975fe104ac61", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/member-tier-enrichment.ts:55"}, "properties": {"repobilityId": "3efcfe6378ab3ca8", "scanner": "scanner-primary", "fingerprint": "f2af975fe104ac61", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3f31e8f073ff68e1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/oms-ops-alert.service.ts:161"}, "properties": {"repobilityId": "422e210b63743264", "scanner": "scanner-primary", "fingerprint": "3f31e8f073ff68e1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0ee9a92b1ae4e0f5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/oms-flow-reconciliation.service.ts:1207"}, "properties": {"repobilityId": "7a908d0ff51d0c36", "scanner": "scanner-primary", "fingerprint": "0ee9a92b1ae4e0f5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-306f12d1da76c7ba", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/oms-webhooks.ts:57"}, "properties": {"repobilityId": "40073b0d4359e62a", "scanner": "scanner-primary", "fingerprint": "306f12d1da76c7ba", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-53fd079c1cbd7b5e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/mc-push.ts:94"}, "properties": {"repobilityId": "d674dfe794ca55f6", "scanner": "scanner-primary", "fingerprint": "53fd079c1cbd7b5e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-562a2d03c0ee491b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/channel-fulfillment.service.ts:100"}, "properties": {"repobilityId": "12b09137f8dadbfb", "scanner": "scanner-primary", "fingerprint": "562a2d03c0ee491b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0bec4f0891e21292", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/oms/reconcilers/ebay.reconciler.ts:160"}, "properties": {"repobilityId": "0dfadc0f897bca49", "scanner": "scanner-primary", "fingerprint": "0bec4f0891e21292", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-44fb25512c911b14", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/inventory/inventory.routes.ts:371"}, "properties": {"repobilityId": "48f160bbe31875c4", "scanner": "scanner-primary", "fingerprint": "44fb25512c911b14", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-809e6b80a01cd10f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/inventory/application/cycle-count.use-cases.ts:324"}, "properties": {"repobilityId": "acfd9f75a6b46525", "scanner": "scanner-primary", "fingerprint": "809e6b80a01cd10f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5304fbc7f993edb2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/inventory/application/replenishment.use-cases.ts:579"}, "properties": {"repobilityId": "6b0c2fe759a91538", "scanner": "scanner-primary", "fingerprint": "5304fbc7f993edb2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-53eddee463d9a2b0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/modules/notifications/notifications.service.ts:115"}, "properties": {"repobilityId": "e79d378faa5d32eb", "scanner": "scanner-primary", "fingerprint": "53eddee463d9a2b0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f2804f3ae1bb357", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/shopify.routes.ts:437"}, "properties": {"repobilityId": "bbf553789552e95e", "scanner": "scanner-primary", "fingerprint": "2f2804f3ae1bb357", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f33fc1d9f1feaa7b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/pick-priority.routes.ts:332"}, "properties": {"repobilityId": "ce06474f9ff9da32", "scanner": "scanner-primary", "fingerprint": "f33fc1d9f1feaa7b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e24eae2412f1b627", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/ebay-oauth.routes.ts:118"}, "properties": {"repobilityId": "c9e9d4c132434082", "scanner": "scanner-primary", "fingerprint": "e24eae2412f1b627", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c7a2043d05feb14a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/ebay/ebay-listings.routes.ts:411"}, "properties": {"repobilityId": "91afa49c1caf06d6", "scanner": "scanner-primary", "fingerprint": "c7a2043d05feb14a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6fe4e51a019a2897", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/ebay/ebay-sync-helpers.ts:477"}, "properties": {"repobilityId": "8f406007a7abd9f2", "scanner": "scanner-primary", "fingerprint": "6fe4e51a019a2897", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5f7474986b7031ba", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/ebay/ebay-utils.ts:119"}, "properties": {"repobilityId": "42007c8521eacc3a", "scanner": "scanner-primary", "fingerprint": "5f7474986b7031ba", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-749b34f6aee8b91d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/hooks/use-notifications.ts:57"}, "properties": {"repobilityId": "611c0e73870e7445", "scanner": "scanner-primary", "fingerprint": "749b34f6aee8b91d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fc42e0820dcf3b5b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/layout/AppShell.tsx:403"}, "properties": {"repobilityId": "9846b8aa06edc0e4", "scanner": "scanner-primary", "fingerprint": "fc42e0820dcf3b5b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2a142735f8b5bf5f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/operations/PickReplenHealthSection.tsx:438"}, "properties": {"repobilityId": "d5ad6a60e1bb640d", "scanner": "scanner-primary", "fingerprint": "2a142735f8b5bf5f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2c27a146aea6a816", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/operations/BinHistorySheet.tsx:155"}, "properties": {"repobilityId": "dbb99ef70c7670c9", "scanner": "scanner-primary", "fingerprint": "2c27a146aea6a816", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1ad0fec30bea8e9a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/operations/ActionQueueSection.tsx:219"}, "properties": {"repobilityId": "b5f023b5d88255cc", "scanner": "scanner-primary", "fingerprint": "1ad0fec30bea8e9a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ab743b7aeaba5d26", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/operations/BinInventorySection.tsx:292"}, "properties": {"repobilityId": "f88953c01d77dfb6", "scanner": "scanner-primary", "fingerprint": "ab743b7aeaba5d26", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a52e01eac968a48c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/operations/RecentActivitySection.tsx:184"}, "properties": {"repobilityId": "a12b0b86bc98a5db", "scanner": "scanner-primary", "fingerprint": "a52e01eac968a48c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-aae60f578f0cdbe2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ebay/SyncProgressModal.tsx:279"}, "properties": {"repobilityId": "5af00a3f9016af27", "scanner": "scanner-primary", "fingerprint": "aae60f578f0cdbe2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8a9d254b8095be20", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ebay/ProductTypeManager.tsx:297"}, "properties": {"repobilityId": "e281e627736d1c83", "scanner": "scanner-primary", "fingerprint": "8a9d254b8095be20", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e4592cad2a546b0f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ebay/EbayCategoryPicker.tsx:277"}, "properties": {"repobilityId": "da954709275a063c", "scanner": "scanner-primary", "fingerprint": "e4592cad2a546b0f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4d28504c2a76fff8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ebay/PushProgressModal.tsx:348"}, "properties": {"repobilityId": "38fd76f0368e81c7", "scanner": "scanner-primary", "fingerprint": "4d28504c2a76fff8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8c41bbdc93c2bb5c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ebay/EbayListingRules.tsx:550"}, "properties": {"repobilityId": "755f6e111f65e32c", "scanner": "scanner-primary", "fingerprint": "8c41bbdc93c2bb5c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1cfa071a74c7fc0d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/shipment/AddInvoiceFromCostsModal.tsx:399"}, "properties": {"repobilityId": "0b2085ce0c3520ad", "scanner": "scanner-primary", "fingerprint": "1cfa071a74c7fc0d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8d5074a1be2639c7", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/components/ui/chart.tsx:79"}, "properties": {"repobilityId": "1c3a04e593515dbe", "scanner": "scanner-primary", "fingerprint": "8d5074a1be2639c7", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-6786ef3d13791581", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Suppliers.tsx:979"}, "properties": {"repobilityId": "a37fc146fb327eb5", "scanner": "scanner-primary", "fingerprint": "6786ef3d13791581", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f5e7519bd1e0c0f7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/SyncLogPage.tsx:304"}, "properties": {"repobilityId": "d00e802156d6ea48", "scanner": "scanner-primary", "fingerprint": "f5e7519bd1e0c0f7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1a8b756e53df84f3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/OmsOrders.tsx:519"}, "properties": {"repobilityId": "b41919f9fcf20ee3", "scanner": "scanner-primary", "fingerprint": "1a8b756e53df84f3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-22f098ebde633d74", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/PurchasingDashboard.tsx:981"}, "properties": {"repobilityId": "de5b8ccc613aa9fb", "scanner": "scanner-primary", "fingerprint": "22f098ebde633d74", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-defdc29e97938c79", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Products.tsx:449"}, "properties": {"repobilityId": "2c0df8dcd655d124", "scanner": "scanner-primary", "fingerprint": "defdc29e97938c79", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-87e5dbe4b0a9e6d4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/SlottingSetup.tsx:757"}, "properties": {"repobilityId": "5a04fa5adbfb5612", "scanner": "scanner-primary", "fingerprint": "87e5dbe4b0a9e6d4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b2965bcf96fb918e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/WarehouseLocations.tsx:1559"}, "properties": {"repobilityId": "b9c4803bfb03b26b", "scanner": "scanner-primary", "fingerprint": "b2965bcf96fb918e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0d8820f4fc6bdd18", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Subscriptions.tsx:936"}, "properties": {"repobilityId": "e0b26d47f50114bd", "scanner": "scanner-primary", "fingerprint": "0d8820f4fc6bdd18", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2db3cb8c50339eac", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/PurchaseOrders.tsx:909"}, "properties": {"repobilityId": "8d0bcfc4d6a6735b", "scanner": "scanner-primary", "fingerprint": "2db3cb8c50339eac", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e9f04323a7264760", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Transfers.tsx:477"}, "properties": {"repobilityId": "c89cf2d03ac3743d", "scanner": "scanner-primary", "fingerprint": "e9f04323a7264760", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5f5bfc8a023c8994", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Dropship.tsx:4234"}, "properties": {"repobilityId": "214c78a7d5b3e482", "scanner": "scanner-primary", "fingerprint": "5f5bfc8a023c8994", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8cab6caf8a78201e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Receiving.tsx:180"}, "properties": {"repobilityId": "9a274a2685e69d81", "scanner": "scanner-primary", "fingerprint": "8cab6caf8a78201e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e3bfcf628c2cc03c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/pages/Receiving.tsx:932"}, "properties": {"repobilityId": "3205bcd2496309f5", "scanner": "scanner-primary", "fingerprint": "e3bfcf628c2cc03c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fb6eda03ae10eb3f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/CycleCounts.tsx:1072"}, "properties": {"repobilityId": "f002b3861c009033", "scanner": "scanner-primary", "fingerprint": "fb6eda03ae10eb3f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b4618d0d5c4a9960", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/pages/CycleCounts.tsx:828"}, "properties": {"repobilityId": "01748add00a5bf72", "scanner": "scanner-primary", "fingerprint": "b4618d0d5c4a9960", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6e765061489e6cff", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Inventory.tsx:1523"}, "properties": {"repobilityId": "60a5834465869c33", "scanner": "scanner-primary", "fingerprint": "6e765061489e6cff", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-89a5e30142b4bc2f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/InboundShipmentDetail.tsx:1104"}, "properties": {"repobilityId": "4bd38f85fad7b00a", "scanner": "scanner-primary", "fingerprint": "89a5e30142b4bc2f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1c69348be41cab42", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/InventoryHistory.tsx:363"}, "properties": {"repobilityId": "61ec3a2ca30b87ce", "scanner": "scanner-primary", "fingerprint": "1c69348be41cab42", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a5572109552bf6a7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Roles.tsx:285"}, "properties": {"repobilityId": "e87a6d21fdbc815e", "scanner": "scanner-primary", "fingerprint": "a5572109552bf6a7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-63f261737b038a17", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Reserves.tsx:444"}, "properties": {"repobilityId": "b80434b49f34692d", "scanner": "scanner-primary", "fingerprint": "63f261737b038a17", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a3e6b5da3119513f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 client/src/pages/Reserves.tsx:415"}, "properties": {"repobilityId": "7fcd8e0a6b0ba2fa", "scanner": "scanner-primary", "fingerprint": "a3e6b5da3119513f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-1d60c255ef1788ad", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Returns.tsx:350"}, "properties": {"repobilityId": "79060cf726dc2098", "scanner": "scanner-primary", "fingerprint": "1d60c255ef1788ad", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8894eb75bfc4eb12", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/VendorDetail.tsx:129"}, "properties": {"repobilityId": "da27498ac29610b7", "scanner": "scanner-primary", "fingerprint": "8894eb75bfc4eb12", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-82b1ae54609d5e6d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Channels.tsx:747"}, "properties": {"repobilityId": "9e7360f79260c2af", "scanner": "scanner-primary", "fingerprint": "82b1ae54609d5e6d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f08dc68ef4076660", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/FlowMonitor.tsx:476"}, "properties": {"repobilityId": "289d4c19d4719997", "scanner": "scanner-primary", "fingerprint": "f08dc68ef4076660", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-759cfbbd91e27266", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Replenishment.tsx:1948"}, "properties": {"repobilityId": "4fca4ef90278897c", "scanner": "scanner-primary", "fingerprint": "759cfbbd91e27266", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7981171a8e3af173", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/ProductLines.tsx:436"}, "properties": {"repobilityId": "afc09ff8ab2ed506", "scanner": "scanner-primary", "fingerprint": "7981171a8e3af173", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b49f07bc10267401", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/APPayments.tsx:392"}, "properties": {"repobilityId": "5206b96051648491", "scanner": "scanner-primary", "fingerprint": "b49f07bc10267401", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-33c272053bf779f0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/ChannelAllocation.tsx:500"}, "properties": {"repobilityId": "fa3383e703c201af", "scanner": "scanner-primary", "fingerprint": "33c272053bf779f0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-aa3386b39613b04f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/APInvoiceDetail.tsx:624"}, "properties": {"repobilityId": "411381783c5cca17", "scanner": "scanner-primary", "fingerprint": "aa3386b39613b04f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0a3009e79a41dacb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/CostDashboard.tsx:415"}, "properties": {"repobilityId": "525a32b2ef45766c", "scanner": "scanner-primary", "fingerprint": "0a3009e79a41dacb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a9a7343a6d346d6f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/ProductDetail.tsx:1717"}, "properties": {"repobilityId": "77248e3182a5a8cc", "scanner": "scanner-primary", "fingerprint": "a9a7343a6d346d6f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fb2997b3941bce2b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Picking.tsx:478"}, "properties": {"repobilityId": "dc5b320786e01161", "scanner": "scanner-primary", "fingerprint": "fb2997b3941bce2b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-01acaf57b9ddacc4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/pages/Picking.tsx:698"}, "properties": {"repobilityId": "a600306e3b42eedb", "scanner": "scanner-primary", "fingerprint": "01acaf57b9ddacc4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8047c12834301e86", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Variants.tsx:707"}, "properties": {"repobilityId": "09cba816d3f3dbeb", "scanner": "scanner-primary", "fingerprint": "8047c12834301e86", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e99fe53b8dd3205c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/PurchaseOrderEdit.tsx:1427"}, "properties": {"repobilityId": "c471da3f0abaeb6e", "scanner": "scanner-primary", "fingerprint": "e99fe53b8dd3205c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fa9a3b81096fb55c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/PurchasingView.tsx:1044"}, "properties": {"repobilityId": "e051ae909b52f48b", "scanner": "scanner-primary", "fingerprint": "fa9a3b81096fb55c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8d99fd402d2a900f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/Orders.tsx:646"}, "properties": {"repobilityId": "22c9bd85ab6c1521", "scanner": "scanner-primary", "fingerprint": "8d99fd402d2a900f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c789fe3dfa7c5ecd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/PurchaseOrderDetail.tsx:2356"}, "properties": {"repobilityId": "d760bb7ed7c940ec", "scanner": "scanner-primary", "fingerprint": "c789fe3dfa7c5ecd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-73f0e637a42586ef", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/PickingLogs.tsx:339"}, "properties": {"repobilityId": "01306906cf76fc5b", "scanner": "scanner-primary", "fingerprint": "73f0e637a42586ef", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4626582e267cfa9c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/dropship/DropshipPortalOrders.tsx:551"}, "properties": {"repobilityId": "12a9a83bdbc57875", "scanner": "scanner-primary", "fingerprint": "4626582e267cfa9c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-09ff4460737dea50", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/dropship/DropshipPortalSettings.tsx:471"}, "properties": {"repobilityId": "1522c56c729be042", "scanner": "scanner-primary", "fingerprint": "09ff4460737dea50", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cc841f1e69a1ea41", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/dropship/DropshipPortalDashboard.tsx:344"}, "properties": {"repobilityId": "20137c02b3f9c1d7", "scanner": "scanner-primary", "fingerprint": "cc841f1e69a1ea41", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ec02fe36689bdd7d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/features/po-edit/AddToCatalogDialog.tsx:143"}, "properties": {"repobilityId": "035be452f09a9dd7", "scanner": "scanner-primary", "fingerprint": "ec02fe36689bdd7d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f619aa062812623b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/setup-integration.ts:301"}, "properties": {"repobilityId": "1d0f01c9f4e5ee58", "scanner": "scanner-primary", "fingerprint": "f619aa062812623b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ff6561438d4d4233", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 migrations/run-migrations.ts:83"}, "properties": {"repobilityId": "0ded559e3ddcdfa2", "scanner": "scanner-primary", "fingerprint": "ff6561438d4d4233", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d623b355a1ee7851", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in auto_push.cjs:1"}, "properties": {"repobilityId": "6af370e6674be8ce", "scanner": "scanner-primary", "fingerprint": "d623b355a1ee7851", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "auto_push.cjs"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4e54b51c6633f634", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in push.ts:2"}, "properties": {"repobilityId": "cb5df7279956d7ef", "scanner": "scanner-primary", "fingerprint": "4e54b51c6633f634", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "push.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-a34a90f083702cd0", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in temp_generate.js:1"}, "properties": {"repobilityId": "bfd0e80bcfb2f8f1", "scanner": "scanner-primary", "fingerprint": "a34a90f083702cd0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "temp_generate.js"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6ba600724b9dd875", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/__tests__/dropship-dogfood-status.test.ts:1"}, "properties": {"repobilityId": "2bfa89b0caaf4dd9", "scanner": "scanner-primary", "fingerprint": "6ba600724b9dd875", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/__tests__/dropship-dogfood-status.test.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ecf9813a9027a9ba", "level": "error", "message": {"text": "Possible secret in server/modules/dropship/__tests__/unit/dropship-ops-surface-service.test.ts"}, "properties": {"repobilityId": "125dffc5aac4ccc9", "scanner": "scanner-primary", "fingerprint": "ecf9813a9027a9ba", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/modules/dropship/__tests__/unit/dropship-ops-surface-service.test.ts"}, "region": {"startLine": 335}}}]}, {"ruleId": "scanner-ecf9813a9027a9ba", "level": "error", "message": {"text": "Possible secret in server/modules/dropship/__tests__/unit/dropship-ops-surface-service.test.ts"}, "properties": {"repobilityId": "125dffc5aac4ccc9", "scanner": "scanner-primary", "fingerprint": "ecf9813a9027a9ba", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/modules/dropship/__tests__/unit/dropship-ops-surface-service.test.ts"}, "region": {"startLine": 336}}}]}, {"ruleId": "scanner-46e7cfdc226a7702", "level": "error", "message": {"text": "Possible secret in server/modules/dropship/__tests__/unit/dropship-shopify-webhook-security.test.ts"}, "properties": {"repobilityId": "f1ffdaa57a8e4d7e", "scanner": "scanner-primary", "fingerprint": "46e7cfdc226a7702", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/modules/dropship/__tests__/unit/dropship-shopify-webhook-security.test.ts"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-46e7cfdc226a7702", "level": "error", "message": {"text": "Possible secret in server/modules/dropship/__tests__/unit/dropship-shopify-webhook-security.test.ts"}, "properties": {"repobilityId": "f1ffdaa57a8e4d7e", "scanner": "scanner-primary", "fingerprint": "46e7cfdc226a7702", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/modules/dropship/__tests__/unit/dropship-shopify-webhook-security.test.ts"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-a76d32069efb1d7b", "level": "error", "message": {"text": "Possible secret in server/modules/dropship/__tests__/unit/dropship-marketplace-oauth-providers.test.ts"}, "properties": {"repobilityId": "5c24f1a6531fc559", "scanner": "scanner-primary", "fingerprint": "a76d32069efb1d7b", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/modules/dropship/__tests__/unit/dropship-marketplace-oauth-providers.test.ts"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-a76d32069efb1d7b", "level": "error", "message": {"text": "Possible secret in server/modules/dropship/__tests__/unit/dropship-marketplace-oauth-providers.test.ts"}, "properties": {"repobilityId": "5c24f1a6531fc559", "scanner": "scanner-primary", "fingerprint": "a76d32069efb1d7b", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/modules/dropship/__tests__/unit/dropship-marketplace-oauth-providers.test.ts"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-25e378dc2cd28493", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in client/src/components/ui/chart.tsx:79"}, "properties": {"repobilityId": "298aaf10501f50f1", "scanner": "scanner-primary", "fingerprint": "25e378dc2cd28493", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/src/components/ui/chart.tsx"}, "region": {"startLine": 79}}}]}, {"ruleId": "scanner-113863bf58ff0df8", "level": "note", "message": {"text": "Very large file: ops-portal.jsx (1470 lines)"}, "properties": {"repobilityId": "d1afa22b70c24d9f", "scanner": "scanner-primary", "fingerprint": "113863bf58ff0df8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5f84e23b5f00851a", "level": "note", "message": {"text": "Very large file: server/index.ts (1519 lines)"}, "properties": {"repobilityId": "5a1b3309487abe01", "scanner": "scanner-primary", "fingerprint": "5f84e23b5f00851a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b661ba21f66ac9a1", "level": "note", "message": {"text": "Very large file: server/modules/dropship/application/dropship-ops-surface-service.ts (1564 lines)"}, "properties": {"repobilityId": "b0ba475bb0e75964", "scanner": "scanner-primary", "fingerprint": "b661ba21f66ac9a1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e6f79f1d0758697b", "level": "note", "message": {"text": "Very large file: server/modules/dropship/infrastructure/dropship-return.repository.ts (1574 lines)"}, "properties": {"repobilityId": "df32adcd14ab7a58", "scanner": "scanner-primary", "fingerprint": "e6f79f1d0758697b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-70865975f213ce30", "level": "note", "message": {"text": "Very large file: server/modules/dropship/infrastructure/dropship-ops-surface.repository.ts (1890 lines)"}, "properties": {"repobilityId": "c5498c16ba236142", "scanner": "scanner-primary", "fingerprint": "70865975f213ce30", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7101c3b2ac5bf6ae", "level": "note", "message": {"text": "Very large file: server/modules/dropship/infrastructure/dropship-wallet.repository.ts (1794 lines)"}, "properties": {"repobilityId": "8b833f5f893580b3", "scanner": "scanner-primary", "fingerprint": "7101c3b2ac5bf6ae", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d852b62e4198b724", "level": "note", "message": {"text": "Very large file: server/modules/procurement/ap-ledger.service.ts (2073 lines)"}, "properties": {"repobilityId": "58f0ff838caa4676", "scanner": "scanner-primary", "fingerprint": "d852b62e4198b724", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-252985edf1609610", "level": "note", "message": {"text": "Very large file: server/modules/procurement/purchasing.service.ts (3494 lines)"}, "properties": {"repobilityId": "14c081460d20d5fa", "scanner": "scanner-primary", "fingerprint": "252985edf1609610", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-50408fd259b38a89", "level": "note", "message": {"text": "Very large file: server/modules/procurement/procurement.storage.ts (2266 lines)"}, "properties": {"repobilityId": "8991728d8785b91f", "scanner": "scanner-primary", "fingerprint": "50408fd259b38a89", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b8f4bee57c101252", "level": "note", "message": {"text": "Very large file: server/modules/procurement/purchasing-recommendation.engine.ts (1871 lines)"}, "properties": {"repobilityId": "dd13e29870efca6c", "scanner": "scanner-primary", "fingerprint": "b8f4bee57c101252", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-98fca62b19dd9205", "level": "note", "message": {"text": "Very large file: server/modules/procurement/shipment-tracking.service.ts (1718 lines)"}, "properties": {"repobilityId": "6d64d029f67ff582", "scanner": "scanner-primary", "fingerprint": "98fca62b19dd9205", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8f58a4db0dffd3be", "level": "note", "message": {"text": "Very large file: server/modules/procurement/purchasing-recommendation.routes.ts (1582 lines)"}, "properties": {"repobilityId": "8f3aca307b8f0e48", "scanner": "scanner-primary", "fingerprint": "8f58a4db0dffd3be", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4e1c873d599365fb", "level": "note", "message": {"text": "Very large file: server/modules/procurement/__tests__/unit/purchasing-recommendation.routes.test.ts (2151 lines)"}, "properties": {"repobilityId": "2bc64a3ef75741d4", "scanner": "scanner-primary", "fingerprint": "4e1c873d599365fb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a65f18a02e59b095", "level": "note", "message": {"text": "Very large file: server/modules/channels/echelon-sync-orchestrator.service.ts (1595 lines)"}, "properties": {"repobilityId": "3d6d9a1d26014e7e", "scanner": "scanner-primary", "fingerprint": "a65f18a02e59b095", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1f1326dfad839dfa", "level": "note", "message": {"text": "Very large file: server/modules/channels/channels.routes.ts (2561 lines)"}, "properties": {"repobilityId": "37141e18778d6c65", "scanner": "scanner-primary", "fingerprint": "1f1326dfad839dfa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5cdd56d8d1d0bf05", "level": "note", "message": {"text": "Very large file: server/modules/orders/orders.storage.ts (1624 lines)"}, "properties": {"repobilityId": "11a8f4cea33e49d9", "scanner": "scanner-primary", "fingerprint": "5cdd56d8d1d0bf05", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e2d06983822a7fac", "level": "note", "message": {"text": "Very large file: server/modules/orders/picking.use-cases.ts (2386 lines)"}, "properties": {"repobilityId": "0ded251ce65a4a00", "scanner": "scanner-primary", "fingerprint": "e2d06983822a7fac", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4226c8efd0539f0e", "level": "note", "message": {"text": "Very large file: server/modules/orders/operations-dashboard.service.ts (1620 lines)"}, "properties": {"repobilityId": "4ff5bcdf9193b3ff", "scanner": "scanner-primary", "fingerprint": "4226c8efd0539f0e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-92dc22ddf5e6c589", "level": "note", "message": {"text": "Very large file: server/modules/orders/__tests__/unit/shipment-rollup.test.ts (1739 lines)"}, "properties": {"repobilityId": "e8a15d08cf458dd8", "scanner": "scanner-primary", "fingerprint": "92dc22ddf5e6c589", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-99efcce8d0c117cf", "level": "note", "message": {"text": "Very large file: server/modules/catalog/catalog.routes.ts (2400 lines)"}, "properties": {"repobilityId": "eb78dec77dea227f", "scanner": "scanner-primary", "fingerprint": "99efcce8d0c117cf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0f7e92294aa906d8", "level": "note", "message": {"text": "Very large file: server/modules/oms/webhook-retry.worker.ts (2070 lines)"}, "properties": {"repobilityId": "fe443d1c0b2ee5c1", "scanner": "scanner-primary", "fingerprint": "0f7e92294aa906d8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e846a29a43a958ed", "level": "note", "message": {"text": "Very large file: server/modules/oms/wms-sync.service.ts (1927 lines)"}, "properties": {"repobilityId": "6ebb55ccfa207418", "scanner": "scanner-primary", "fingerprint": "e846a29a43a958ed", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4f4bcea554caf54e", "level": "note", "message": {"text": "Very large file: server/modules/oms/fulfillment-push.service.ts (2500 lines)"}, "properties": {"repobilityId": "b62690a8caa86847", "scanner": "scanner-primary", "fingerprint": "4f4bcea554caf54e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e0c102b2247993e5", "level": "note", "message": {"text": "Very large file: server/modules/oms/shipstation.service.ts (3699 lines)"}, "properties": {"repobilityId": "e10d615675b72bdc", "scanner": "scanner-primary", "fingerprint": "e0c102b2247993e5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-738faee73486896f", "level": "note", "message": {"text": "Very large file: server/modules/oms/oms-webhooks.ts (2250 lines)"}, "properties": {"repobilityId": "4250de3788f4ab00", "scanner": "scanner-primary", "fingerprint": "738faee73486896f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2db4885b50bc0ad7", "level": "note", "message": {"text": "Very large file: server/modules/oms/__tests__/unit/ship-notify-retry.test.ts (1953 lines)"}, "properties": {"repobilityId": "5c49383fd21e3087", "scanner": "scanner-primary", "fingerprint": "2db4885b50bc0ad7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-77f7b9547ea435c5", "level": "note", "message": {"text": "Very large file: server/modules/oms/__tests__/unit/push-shopify-fulfillment.test.ts (2349 lines)"}, "properties": {"repobilityId": "fbef6b2811e765e6", "scanner": "scanner-primary", "fingerprint": "77f7b9547ea435c5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-34d51e4e93c237f9", "level": "note", "message": {"text": "Very large file: server/modules/inventory/inventory.routes.ts (2786 lines)"}, "properties": {"repobilityId": "ad7c766e611f7f8d", "scanner": "scanner-primary", "fingerprint": "34d51e4e93c237f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4cf62c6641e791cc", "level": "note", "message": {"text": "Very large file: server/modules/inventory/application/cycle-count.use-cases.ts (1852 lines)"}, "properties": {"repobilityId": "20d5d1f6a0248e13", "scanner": "scanner-primary", "fingerprint": "4cf62c6641e791cc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-df0128a1d0cc6f7b", "level": "note", "message": {"text": "Very large file: server/modules/inventory/application/replenishment.use-cases.ts (3653 lines)"}, "properties": {"repobilityId": "48c5903c55f6e64e", "scanner": "scanner-primary", "fingerprint": "df0128a1d0cc6f7b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-87c1ab0df3dad255", "level": "note", "message": {"text": "Very large file: server/routes/shopify.routes.ts (1643 lines)"}, "properties": {"repobilityId": "b0e0cc92d9e3e9ea", "scanner": "scanner-primary", "fingerprint": "87c1ab0df3dad255", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4af2fdaf9a2550dc", "level": "note", "message": {"text": "Very large file: server/routes/ebay/ebay-listings.routes.ts (1913 lines)"}, "properties": {"repobilityId": "a601a09a58cbef2e", "scanner": "scanner-primary", "fingerprint": "4af2fdaf9a2550dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c7b8045227bf9313", "level": "note", "message": {"text": "Very large file: client/src/pages/Suppliers.tsx (1979 lines)"}, "properties": {"repobilityId": "96fb2ebea92233c5", "scanner": "scanner-primary", "fingerprint": "c7b8045227bf9313", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c53b730dfd8e3be1", "level": "note", "message": {"text": "Very large file: client/src/pages/PurchasingDashboard.tsx (1802 lines)"}, "properties": {"repobilityId": "2478e08fb130043f", "scanner": "scanner-primary", "fingerprint": "c53b730dfd8e3be1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-181d6b3d61a488eb", "level": "note", "message": {"text": "Very large file: client/src/pages/WarehouseLocations.tsx (1657 lines)"}, "properties": {"repobilityId": "89d63abdf84cb623", "scanner": "scanner-primary", "fingerprint": "181d6b3d61a488eb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5c51b4cd0f5e15e2", "level": "note", "message": {"text": "Very large file: client/src/pages/PurchaseOrders.tsx (1361 lines)"}, "properties": {"repobilityId": "7911717a908a53f2", "scanner": "scanner-primary", "fingerprint": "5c51b4cd0f5e15e2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5b0aa38e0918b6a9", "level": "note", "message": {"text": "Very large file: client/src/pages/Transfers.tsx (1144 lines)"}, "properties": {"repobilityId": "b183f6bf3961799d", "scanner": "scanner-primary", "fingerprint": "5b0aa38e0918b6a9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4dc5f5e6a88ecad1", "level": "note", "message": {"text": "Very large file: client/src/pages/Dropship.tsx (7393 lines)"}, "properties": {"repobilityId": "f009c3a84b87e6b1", "scanner": "scanner-primary", "fingerprint": "4dc5f5e6a88ecad1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e0c219c6b31fefc7", "level": "note", "message": {"text": "Very large file: client/src/pages/Receiving.tsx (2618 lines)"}, "properties": {"repobilityId": "252da68b8e455a86", "scanner": "scanner-primary", "fingerprint": "e0c219c6b31fefc7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-72e751a8e325e3db", "level": "note", "message": {"text": "Very large file: client/src/pages/CycleCounts.tsx (3529 lines)"}, "properties": {"repobilityId": "76f833692077e6c2", "scanner": "scanner-primary", "fingerprint": "72e751a8e325e3db", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5bfbb71bc6f8538b", "level": "note", "message": {"text": "Very large file: client/src/pages/Inventory.tsx (2675 lines)"}, "properties": {"repobilityId": "39d85d1a9abb54f3", "scanner": "scanner-primary", "fingerprint": "5bfbb71bc6f8538b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1f36ef79ee1f8e3a", "level": "note", "message": {"text": "Very large file: client/src/pages/InboundShipmentDetail.tsx (2917 lines)"}, "properties": {"repobilityId": "fb5fed92b787047b", "scanner": "scanner-primary", "fingerprint": "1f36ef79ee1f8e3a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0febdfa4c3e2b9ba", "level": "note", "message": {"text": "Very large file: client/src/pages/EbayChannelPage.tsx (2513 lines)"}, "properties": {"repobilityId": "f11dc5375709da2f", "scanner": "scanner-primary", "fingerprint": "0febdfa4c3e2b9ba", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-abe929a25e8c2382", "level": "note", "message": {"text": "Very large file: client/src/pages/Replenishment.tsx (3519 lines)"}, "properties": {"repobilityId": "4560ca3276ea3af7", "scanner": "scanner-primary", "fingerprint": "abe929a25e8c2382", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3d57a0c8811a8d68", "level": "note", "message": {"text": "Very large file: client/src/pages/ProductLines.tsx (1800 lines)"}, "properties": {"repobilityId": "7bc39d11b0f25b1f", "scanner": "scanner-primary", "fingerprint": "3d57a0c8811a8d68", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8f008c04e20f70f1", "level": "note", "message": {"text": "Very large file: client/src/pages/ChannelAllocation.tsx (1249 lines)"}, "properties": {"repobilityId": "7b747d310b74eeee", "scanner": "scanner-primary", "fingerprint": "8f008c04e20f70f1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-aebf0b9e1367c090", "level": "note", "message": {"text": "Very large file: client/src/pages/CostDashboard.tsx (1284 lines)"}, "properties": {"repobilityId": "c5ff4bd3565fe513", "scanner": "scanner-primary", "fingerprint": "aebf0b9e1367c090", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0e5d77897c886eba", "level": "note", "message": {"text": "Very large file: client/src/pages/ProductDetail.tsx (3648 lines)"}, "properties": {"repobilityId": "76d06b4b027683f5", "scanner": "scanner-primary", "fingerprint": "0e5d77897c886eba", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5b6e89e0230008b6", "level": "note", "message": {"text": "Very large file: client/src/pages/Picking.tsx (5016 lines)"}, "properties": {"repobilityId": "9657f456bae2eca1", "scanner": "scanner-primary", "fingerprint": "5b6e89e0230008b6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-afaca951815e8e5c", "level": "note", "message": {"text": "Very large file: client/src/pages/Variants.tsx (1553 lines)"}, "properties": {"repobilityId": "2f0480d1d0b9a2da", "scanner": "scanner-primary", "fingerprint": "afaca951815e8e5c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-87aaa4456fc37856", "level": "note", "message": {"text": "Very large file: client/src/pages/PurchaseOrderEdit.tsx (2379 lines)"}, "properties": {"repobilityId": "d3bd99862cf46e7a", "scanner": "scanner-primary", "fingerprint": "87aaa4456fc37856", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ec0d2c9d418ebe45", "level": "note", "message": {"text": "Very large file: client/src/pages/PurchasingView.tsx (1536 lines)"}, "properties": {"repobilityId": "67134055023a2991", "scanner": "scanner-primary", "fingerprint": "ec0d2c9d418ebe45", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f4e6700e7a3dec4a", "level": "note", "message": {"text": "Very large file: client/src/pages/Orders.tsx (1899 lines)"}, "properties": {"repobilityId": "7f6f8c874b431309", "scanner": "scanner-primary", "fingerprint": "f4e6700e7a3dec4a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-03ac72eecf524ccd", "level": "note", "message": {"text": "Very large file: client/src/pages/PurchaseOrderDetail.tsx (4297 lines)"}, "properties": {"repobilityId": "b36763e112d03c04", "scanner": "scanner-primary", "fingerprint": "03ac72eecf524ccd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4571b72b5633c9d7", "level": "note", "message": {"text": "Very large file: client/src/pages/Dashboard.tsx (1287 lines)"}, "properties": {"repobilityId": "aa89dc6cb1cfd91f", "scanner": "scanner-primary", "fingerprint": "4571b72b5633c9d7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bfb445d3191d6df0", "level": "note", "message": {"text": "Very large file: client/src/lib/dropship-ops-surface.ts (3938 lines)"}, "properties": {"repobilityId": "d50455a00f7e5a07", "scanner": "scanner-primary", "fingerprint": "bfb445d3191d6df0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-45ed3561c7d71180", "level": "note", "message": {"text": "Very large file: client/src/lib/__tests__/dropship-ops-surface.test.ts (1794 lines)"}, "properties": {"repobilityId": "afd063d7c51210ff", "scanner": "scanner-primary", "fingerprint": "45ed3561c7d71180", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1e13e9eea4c66de6", "level": "note", "message": {"text": "Very large file: shared/schema/procurement.schema.ts (1329 lines)"}, "properties": {"repobilityId": "ba1f872dd61295b2", "scanner": "scanner-primary", "fingerprint": "1e13e9eea4c66de6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a906658698b6e7b5", "level": "note", "message": {"text": "Very large file: shared/schema/dropship.schema.ts (1460 lines)"}, "properties": {"repobilityId": "6e9b1ce32d93d95a", "scanner": "scanner-primary", "fingerprint": "a906658698b6e7b5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "e393c4024d5eb305", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-faccb9061e9b52a0", "level": "note", "message": {"text": "No README detected"}, "properties": {"repobilityId": "c8d063cac96c8db8", "scanner": "scanner-primary", "fingerprint": "faccb9061e9b52a0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["docs", "readme", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "05eaf0e9810ec3e0", "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": "cb9e199cf3c9bf6d", "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": "230d5a978c8ae309", "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": "46b50d013a1b148b", "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": "59c811220b2a8faf", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-13d39d029dec3809", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 dump-settings.ts:5"}, "properties": {"repobilityId": "1aeda60c5cc3ca6e", "scanner": "scanner-primary", "fingerprint": "13d39d029dec3809", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-267f33a2d4c317c2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 check_shopify_contract.js:28"}, "properties": {"repobilityId": "97a5185baa7b1b5e", "scanner": "scanner-primary", "fingerprint": "267f33a2d4c317c2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6d066570082985f1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 check-shopify-images.ts:24"}, "properties": {"repobilityId": "23323a89674a18f9", "scanner": "scanner-primary", "fingerprint": "6d066570082985f1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-062e4f00bc68262c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/import_ebay_to_echelon.ts:38"}, "properties": {"repobilityId": "11ec3e39306f31de", "scanner": "scanner-primary", "fingerprint": "062e4f00bc68262c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1dda7be9eb84eb28", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/rescue_ebay_images.ts:22"}, "properties": {"repobilityId": "153cb44e666f9bed", "scanner": "scanner-primary", "fingerprint": "1dda7be9eb84eb28", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3ca175697adf4bd4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/push-ebay-images-to-shopify.ts:34"}, "properties": {"repobilityId": "00258435b65461ee", "scanner": "scanner-primary", "fingerprint": "3ca175697adf4bd4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1ad44f3ea79deac5", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/backfill-wms-oms-fulfillment-order-id-from-gid.ts:107"}, "properties": {"repobilityId": "f3a2ffe707c99eae", "scanner": "scanner-primary", "fingerprint": "1ad44f3ea79deac5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7d856668506c63dd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sync_images_all.ts:19"}, "properties": {"repobilityId": "9fb2b9f7a5aa921e", "scanner": "scanner-primary", "fingerprint": "7d856668506c63dd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1003ce934c82b540", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/cleanup-duplicate-wms-orders.ts:472"}, "properties": {"repobilityId": "1a737847699ce122", "scanner": "scanner-primary", "fingerprint": "1003ce934c82b540", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-14327a8f26613826", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/parity-check-push.ts:336"}, "properties": {"repobilityId": "c65d83d9ff286285", "scanner": "scanner-primary", "fingerprint": "14327a8f26613826", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b20e229a633d04bb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/list-shipstation-stores.mjs:15"}, "properties": {"repobilityId": "36cf2456c7c9f72e", "scanner": "scanner-primary", "fingerprint": "b20e229a633d04bb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b7a932a70b2e06ee", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/backfill-shopify-oms-line-fulfillment-status.ts:205"}, "properties": {"repobilityId": "cf91cfb7b56aaf98", "scanner": "scanner-primary", "fingerprint": "b7a932a70b2e06ee", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c655f0f4e4fe2967", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sync-ebay-images.ts:32"}, "properties": {"repobilityId": "052683eeda98d97c", "scanner": "scanner-primary", "fingerprint": "c655f0f4e4fe2967", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1b800c0b12213450", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/list-shipstation-warehouses.mjs:15"}, "properties": {"repobilityId": "e29b7f0b93407333", "scanner": "scanner-primary", "fingerprint": "1b800c0b12213450", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e1b0c201593b4bdd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/_ca-backfill.ts:30"}, "properties": {"repobilityId": "7d01c25747a43f02", "scanner": "scanner-primary", "fingerprint": "e1b0c201593b4bdd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5da914f8ed716a60", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/__tests__/backfill-wms-oms-link.test.ts:6"}, "properties": {"repobilityId": "f723ab6fc7eeadbe", "scanner": "scanner-primary", "fingerprint": "5da914f8ed716a60", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ad3e320154325441", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/__tests__/backfill-wms-oms-fulfillment-order-id-from-gid.test.ts:6"}, "properties": {"repobilityId": "5bdbe3f9bda1cee3", "scanner": "scanner-primary", "fingerprint": "ad3e320154325441", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6145ab233046aa9b", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/__tests__/backfill-wms-oms-fulfillment-order-id-from-external-order-number.test.ts:6"}, "properties": {"repobilityId": "d8be76a545cc2fa1", "scanner": "scanner-primary", "fingerprint": "6145ab233046aa9b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b99a7bfc67887f50", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/index.ts:1139"}, "properties": {"repobilityId": "d591b40e3050f6e4", "scanner": "scanner-primary", "fingerprint": "b99a7bfc67887f50", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a88b3df502ca81f5", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/db.ts:53"}, "properties": {"repobilityId": "ddfd0adb2dd3ce27", "scanner": "scanner-primary", "fingerprint": "a88b3df502ca81f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e5810f68ad6d812a", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/modules/wms/create-shipment.ts:301"}, "properties": {"repobilityId": "419629126b937d69", "scanner": "scanner-primary", "fingerprint": "e5810f68ad6d812a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-23a2193f3d4dee99", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/dropship/infrastructure/dropship-marketplace-oauth.providers.ts:93"}, "properties": {"repobilityId": "938f4c72ef890170", "scanner": "scanner-primary", "fingerprint": "23a2193f3d4dee99", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b7b5ee2a8a76a4ab", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/dropship/__tests__/unit/dropship-vendor-catalog.routes.test.ts:150"}, "properties": {"repobilityId": "37ae1936a8052ae2", "scanner": "scanner-primary", "fingerprint": "b7b5ee2a8a76a4ab", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9d309f1d1acd11fb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/dropship/__tests__/unit/dropship-shopify-order-webhook.routes.test.ts:169"}, "properties": {"repobilityId": "f751a874018bfdf7", "scanner": "scanner-primary", "fingerprint": "9d309f1d1acd11fb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bf35f99d7f5bf3d0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/dropship/__tests__/unit/dropship-admin-worker-ops.routes.test.ts:121"}, "properties": {"repobilityId": "2d8cc9d2d2ae2823", "scanner": "scanner-primary", "fingerprint": "bf35f99d7f5bf3d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-59bdf923dc8e75c9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/dropship/__tests__/unit/dropship-admin-order-ops.routes.test.ts:145"}, "properties": {"repobilityId": "7ff3c21f06b3abc9", "scanner": "scanner-primary", "fingerprint": "59bdf923dc8e75c9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-668be9b98cfd45d6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/dropship/__tests__/unit/dropship-shopify-uninstall-webhook.routes.test.ts:87"}, "properties": {"repobilityId": "8b2413ac6ed80c90", "scanner": "scanner-primary", "fingerprint": "668be9b98cfd45d6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a5c2e10addb5ed7d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/dropship/__tests__/unit/dropship-ops-surface.routes.test.ts:177"}, "properties": {"repobilityId": "14b6e70f33798f33", "scanner": "scanner-primary", "fingerprint": "a5c2e10addb5ed7d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aa2b3b0a05c02bd5", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/modules/warehouse/warehouse.routes.ts:400"}, "properties": {"repobilityId": "c6b350a1a07fe69b", "scanner": "scanner-primary", "fingerprint": "aa2b3b0a05c02bd5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1457cda3653de769", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/warehouse/__tests__/unit/sla-cutoff.routes.test.ts:49"}, "properties": {"repobilityId": "c9731a7b54292c5b", "scanner": "scanner-primary", "fingerprint": "1457cda3653de769", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-320244053df26655", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/modules/procurement/purchasing.service.ts:211"}, "properties": {"repobilityId": "f06985ce25a49192", "scanner": "scanner-primary", "fingerprint": "320244053df26655", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3282c3ba5b8bfb36", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/modules/procurement/procurement.storage.ts:1276"}, "properties": {"repobilityId": "76ef78d194c40773", "scanner": "scanner-primary", "fingerprint": "3282c3ba5b8bfb36", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-38638dd61cb76c3b", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/modules/procurement/receiving.service.ts:71"}, "properties": {"repobilityId": "d42394fdc175f9bc", "scanner": "scanner-primary", "fingerprint": "38638dd61cb76c3b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3baa9e15dffdcfa", "level": "note", "message": {"text": "Legacy-named symbol `recent_order_velocity_v1` in server/modules/procurement/purchasing-demand-forecast.engine.ts:10"}, "properties": {"repobilityId": "1ce406f2ff6ba901", "scanner": "scanner-primary", "fingerprint": "e3baa9e15dffdcfa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9e7c6600495dad34", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/modules/procurement/purchase-order.routes.ts:211"}, "properties": {"repobilityId": "e5f42c580a768ed1", "scanner": "scanner-primary", "fingerprint": "9e7c6600495dad34", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1f9b100b466ce4cc", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/modules/procurement/__tests__/unit/ap-ledger-record-payment.test.ts:6"}, "properties": {"repobilityId": "d46b7c2f5360fdf0", "scanner": "scanner-primary", "fingerprint": "1f9b100b466ce4cc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5a6f9de1b5363ef8", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/modules/procurement/__tests__/unit/bulk-upsert-catalog.service.test.ts:7"}, "properties": {"repobilityId": "ae9ea9ae09e6830c", "scanner": "scanner-primary", "fingerprint": "5a6f9de1b5363ef8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-addc389417e39f0a", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/modules/procurement/__tests__/unit/po-phase2-api.test.ts:6"}, "properties": {"repobilityId": "baae3903da025626", "scanner": "scanner-primary", "fingerprint": "addc389417e39f0a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-54e093bda0bf2e02", "level": "note", "message": {"text": "Legacy-named symbol `recent_order_velocity_v1` in server/modules/procurement/__tests__/unit/purchasing-recommendation.run-detail.test.ts:80"}, "properties": {"repobilityId": "6f082842a7fa154e", "scanner": "scanner-primary", "fingerprint": "54e093bda0bf2e02", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-80673ef849b7300d", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/modules/procurement/__tests__/unit/line-types.service.test.ts:7"}, "properties": {"repobilityId": "1a04b07c390a1f9b", "scanner": "scanner-primary", "fingerprint": "80673ef849b7300d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-96c9601e417338d8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/procurement/__tests__/unit/inbound-shipment.routes.test.ts:127"}, "properties": {"repobilityId": "e3e478e15dbb8725", "scanner": "scanner-primary", "fingerprint": "96c9601e417338d8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-08da9d61d3e90fff", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/procurement/__tests__/unit/procurement-health.routes.test.ts:71"}, "properties": {"repobilityId": "c0278bfe5a400021", "scanner": "scanner-primary", "fingerprint": "08da9d61d3e90fff", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-82c3c9e1f5c61f78", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/modules/procurement/__tests__/unit/totals-based-cost.service.test.ts:7"}, "properties": {"repobilityId": "4bb3151bf92e1add", "scanner": "scanner-primary", "fingerprint": "82c3c9e1f5c61f78", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a58de3f66685412d", "level": "note", "message": {"text": "Legacy-named symbol `recent_order_velocity_v1` in server/modules/procurement/__tests__/unit/purchasing-demand-forecast.engine.test.ts:22"}, "properties": {"repobilityId": "e36ba0e9b13cbed0", "scanner": "scanner-primary", "fingerprint": "a58de3f66685412d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5f543cc330e48dbb", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/modules/procurement/__tests__/unit/shipment-invoices-phase2.test.ts:6"}, "properties": {"repobilityId": "a469bd8f12b1841c", "scanner": "scanner-primary", "fingerprint": "5f543cc330e48dbb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d620f18594f58c49", "level": "note", "message": {"text": "Legacy-named symbol `recent_order_velocity_v1` in server/modules/procurement/__tests__/unit/purchasing-recommendation.engine.test.ts:138"}, "properties": {"repobilityId": "b798f29d72cf6092", "scanner": "scanner-primary", "fingerprint": "d620f18594f58c49", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-376cd1d5c0ad6b0a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/procurement/__tests__/unit/purchasing-admin.routes.test.ts:83"}, "properties": {"repobilityId": "7334cb4e934eac46", "scanner": "scanner-primary", "fingerprint": "376cd1d5c0ad6b0a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e56321208f184a24", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/procurement/__tests__/unit/ap-ledger.routes.test.ts:88"}, "properties": {"repobilityId": "9a21610dc09348ab", "scanner": "scanner-primary", "fingerprint": "e56321208f184a24", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-13931d1afb956297", "level": "none", "message": {"text": "Commented-code block (16 lines) in server/modules/procurement/__tests__/unit/dual-track.service.test.ts:18"}, "properties": {"repobilityId": "1eb01d5321d6a563", "scanner": "scanner-primary", "fingerprint": "13931d1afb956297", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0c7c9a9230fbfc77", "level": "none", "message": {"text": "Commented-code block (10 lines) in server/modules/procurement/__tests__/unit/po-create-send.service.test.ts:7"}, "properties": {"repobilityId": "f1de730bcf2f813a", "scanner": "scanner-primary", "fingerprint": "0c7c9a9230fbfc77", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-938d02e44572283d", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/modules/procurement/__tests__/unit/typed-line-allocator.test.ts:7"}, "properties": {"repobilityId": "6918260276b0c513", "scanner": "scanner-primary", "fingerprint": "938d02e44572283d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-50c8e5b9a3f55b2f", "level": "none", "message": {"text": "Commented-code block (15 lines) in server/modules/procurement/__tests__/unit/receiving-mills.test.ts:11"}, "properties": {"repobilityId": "2fecc0ff76cbc2f9", "scanner": "scanner-primary", "fingerprint": "50c8e5b9a3f55b2f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-59fa52f0dc47d28e", "level": "none", "message": {"text": "Commented-code block (11 lines) in server/modules/procurement/__tests__/unit/po-close-3way-match.test.ts:7"}, "properties": {"repobilityId": "01ba444ff0fe71ca", "scanner": "scanner-primary", "fingerprint": "59fa52f0dc47d28e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9fae7ff0b433efc6", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/modules/procurement/__tests__/unit/receipt-discard.service.test.ts:7"}, "properties": {"repobilityId": "bec190999222b615", "scanner": "scanner-primary", "fingerprint": "9fae7ff0b433efc6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-581ea229b1991e33", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/modules/procurement/__tests__/unit/mills-precision.service.test.ts:7"}, "properties": {"repobilityId": "726f01d88f832044", "scanner": "scanner-primary", "fingerprint": "581ea229b1991e33", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-21b189c041c70abc", "level": "none", "message": {"text": "Commented-code block (11 lines) in server/modules/procurement/__tests__/unit/po-exceptions.service.test.ts:6"}, "properties": {"repobilityId": "b8ce45d90d6b7a65", "scanner": "scanner-primary", "fingerprint": "21b189c041c70abc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e565bb10aa2c3c6f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/procurement/__tests__/unit/po-mark-transitions.routes.test.ts:114"}, "properties": {"repobilityId": "6156258d1720a808", "scanner": "scanner-primary", "fingerprint": "e565bb10aa2c3c6f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4dc3fbfc196becaf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/procurement/__tests__/unit/procurement-report.routes.test.ts:51"}, "properties": {"repobilityId": "dd76840222d511f9", "scanner": "scanner-primary", "fingerprint": "4dc3fbfc196becaf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3015ac091252b562", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/procurement/__tests__/unit/receiving.routes.test.ts:63"}, "properties": {"repobilityId": "fa2d780b8a23b6c9", "scanner": "scanner-primary", "fingerprint": "3015ac091252b562", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d9c8109eb2d2a861", "level": "note", "message": {"text": "Legacy-named symbol `recent_order_velocity_v1` in server/modules/procurement/__tests__/unit/purchasing-recommendation.routes.test.ts:1494"}, "properties": {"repobilityId": "70b0e47faab4e0fe", "scanner": "scanner-primary", "fingerprint": "d9c8109eb2d2a861", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b563240a5cc34868", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/procurement/__tests__/unit/purchasing-recommendation.routes.test.ts:100"}, "properties": {"repobilityId": "84bce74a5ca84e9f", "scanner": "scanner-primary", "fingerprint": "b563240a5cc34868", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-feeb84f12d59d431", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/modules/procurement/__tests__/unit/po-create-send.routes.test.ts:8"}, "properties": {"repobilityId": "8f9bc8362238c212", "scanner": "scanner-primary", "fingerprint": "feeb84f12d59d431", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5da1c5f6724296d8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/integrations/shopify.ts:83"}, "properties": {"repobilityId": "4b13ddd957fb9e54", "scanner": "scanner-primary", "fingerprint": "5da1c5f6724296d8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-716a89d9d08712f2", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/modules/channels/channels.routes.ts:215"}, "properties": {"repobilityId": "d6916ce3c6422c05", "scanner": "scanner-primary", "fingerprint": "716a89d9d08712f2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6bb754246d57bf8b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/channels/channels.routes.ts:681"}, "properties": {"repobilityId": "2793f47039cf1e5b", "scanner": "scanner-primary", "fingerprint": "6bb754246d57bf8b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-147d90a12e16ed64", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/channels/sync.service.ts:789"}, "properties": {"repobilityId": "f44498e609964b83", "scanner": "scanner-primary", "fingerprint": "147d90a12e16ed64", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bcd4abf240737ba5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/channels/catalog-backfill.service.ts:1155"}, "properties": {"repobilityId": "2df596fbdd7a7a89", "scanner": "scanner-primary", "fingerprint": "bcd4abf240737ba5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7415e1c180b763ca", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/modules/channels/product-push.service.ts:555"}, "properties": {"repobilityId": "31a6ba65c129a24a", "scanner": "scanner-primary", "fingerprint": "7415e1c180b763ca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1547cfd833a3a769", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/channels/product-push.service.ts:450"}, "properties": {"repobilityId": "361f4007f3f9bfe3", "scanner": "scanner-primary", "fingerprint": "1547cfd833a3a769", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b9b2da4d742aae60", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/channels/adapters/shopify.adapter.ts:595"}, "properties": {"repobilityId": "57ab620fafa344f3", "scanner": "scanner-primary", "fingerprint": "b9b2da4d742aae60", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-316ff0225b77e1f1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/channels/adapters/ebay/ebay-auth.service.ts:151"}, "properties": {"repobilityId": "091c21e431bda1b0", "scanner": "scanner-primary", "fingerprint": "316ff0225b77e1f1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-879f7214c619005e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/subscriptions/infrastructure/shopify.adapter.ts:11"}, "properties": {"repobilityId": "e4684b7108733444", "scanner": "scanner-primary", "fingerprint": "879f7214c619005e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bebf049be5119ad0", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/modules/shipping/adapters/shipstation.adapter.ts:212"}, "properties": {"repobilityId": "c176835683fc68e3", "scanner": "scanner-primary", "fingerprint": "bebf049be5119ad0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e62a04ee0b63bb23", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/modules/orders/sort-rank.ts:86"}, "properties": {"repobilityId": "f02597e03632e463", "scanner": "scanner-primary", "fingerprint": "e62a04ee0b63bb23", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-48b3534d7fb3497f", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/modules/orders/orders.storage.ts:869"}, "properties": {"repobilityId": "63232330410a33d3", "scanner": "scanner-primary", "fingerprint": "48b3534d7fb3497f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d1c1c5f5157ec4bb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/orders/shopify-order-reconciliation.ts:148"}, "properties": {"repobilityId": "bdde1f95ca6bf2de", "scanner": "scanner-primary", "fingerprint": "d1c1c5f5157ec4bb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-74163320c899998f", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/modules/orders/combining.service.ts:153"}, "properties": {"repobilityId": "3027670e6b2c5653", "scanner": "scanner-primary", "fingerprint": "74163320c899998f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8c72fd0a5379866a", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/modules/orders/fulfillment.service.ts:321"}, "properties": {"repobilityId": "ec4c05beabfa58d6", "scanner": "scanner-primary", "fingerprint": "8c72fd0a5379866a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-986166b50c360af7", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/modules/orders/sla-monitor.service.ts:79"}, "properties": {"repobilityId": "3843779199f5806e", "scanner": "scanner-primary", "fingerprint": "986166b50c360af7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e65840b66563deaf", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/modules/orders/shipment-rollup.ts:250"}, "properties": {"repobilityId": "25159a0ff64d55b4", "scanner": "scanner-primary", "fingerprint": "e65840b66563deaf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bdc764bf0b3418f7", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/modules/orders/__tests__/inventory-fixes.test.ts:303"}, "properties": {"repobilityId": "03ed10e0b6bbb18e", "scanner": "scanner-primary", "fingerprint": "bdc764bf0b3418f7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-15843c93bd3e9600", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/modules/orders/__tests__/unit/sla-cutoff.test.ts:39"}, "properties": {"repobilityId": "045d9577914fbf69", "scanner": "scanner-primary", "fingerprint": "15843c93bd3e9600", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d6d26697f09a721", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/modules/orders/__tests__/unit/shipment-rollup.test.ts:55"}, "properties": {"repobilityId": "35f0dc7ef2a16e24", "scanner": "scanner-primary", "fingerprint": "5d6d26697f09a721", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3342acc201821615", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/modules/orders/__tests__/unit/phase1-regression.test.ts:76"}, "properties": {"repobilityId": "2e49c42641b30368", "scanner": "scanner-primary", "fingerprint": "3342acc201821615", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b62b3e11bffd0e06", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/modules/catalog/catalog.storage.ts:457"}, "properties": {"repobilityId": "7d745ac0d850b6b1", "scanner": "scanner-primary", "fingerprint": "b62b3e11bffd0e06", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-547c751c16d4a880", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/catalog/image-sync.service.ts:234"}, "properties": {"repobilityId": "de50c7ee084459f5", "scanner": "scanner-primary", "fingerprint": "547c751c16d4a880", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-177e3a20a113a858", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/modules/catalog/catalog.routes.ts:1644"}, "properties": {"repobilityId": "93c9a51ba07c112f", "scanner": "scanner-primary", "fingerprint": "177e3a20a113a858", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-89e0cda7ba9270e7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/catalog/catalog.routes.ts:116"}, "properties": {"repobilityId": "8b0616ecc3bfc05e", "scanner": "scanner-primary", "fingerprint": "89e0cda7ba9270e7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4dc1c5e0b5cb019b", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/modules/oms/webhook-retry.worker.ts:482"}, "properties": {"repobilityId": "24a4b5ea1ba074db", "scanner": "scanner-primary", "fingerprint": "4dc1c5e0b5cb019b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-878c3de521b98a1e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/oms/webhook-retry.worker.ts:1968"}, "properties": {"repobilityId": "f016343f46e63550", "scanner": "scanner-primary", "fingerprint": "878c3de521b98a1e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5d913d643dc10f5b", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/modules/oms/oms.service.ts:52"}, "properties": {"repobilityId": "9e9ec8ffb21a3ee3", "scanner": "scanner-primary", "fingerprint": "5d913d643dc10f5b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-11c0b89d9d523938", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/modules/oms/shopify-bridge.ts:188"}, "properties": {"repobilityId": "34d78730c7ed7cc8", "scanner": "scanner-primary", "fingerprint": "11c0b89d9d523938", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2140eedf5837bf81", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/oms/shipstation-sweeper.ts:161"}, "properties": {"repobilityId": "45e6146feeabc9ba", "scanner": "scanner-primary", "fingerprint": "2140eedf5837bf81", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-58a21a427f799535", "level": "none", "message": {"text": "Commented-code block (10 lines) in server/modules/oms/wms-sync.service.ts:188"}, "properties": {"repobilityId": "c770476d5e018389", "scanner": "scanner-primary", "fingerprint": "58a21a427f799535", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e60e43a843758c9d", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/modules/oms/fulfillment-push.service.ts:204"}, "properties": {"repobilityId": "bda59dfaf4dc3320", "scanner": "scanner-primary", "fingerprint": "e60e43a843758c9d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb85c1e632f1a913", "level": "note", "message": {"text": "Legacy-named symbol `processShipNotifyLegacy` in server/modules/oms/shipstation.service.ts:2416"}, "properties": {"repobilityId": "92284303eba62683", "scanner": "scanner-primary", "fingerprint": "fb85c1e632f1a913", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8ad308ea18540d07", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/modules/oms/shipstation.service.ts:213"}, "properties": {"repobilityId": "b86fb53a15358c7c", "scanner": "scanner-primary", "fingerprint": "8ad308ea18540d07", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-68a4f5cfbdfaf562", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/oms/shipstation.service.ts:863"}, "properties": {"repobilityId": "b6567168d6a76334", "scanner": "scanner-primary", "fingerprint": "68a4f5cfbdfaf562", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6c297d09b00ba490", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/modules/oms/oms-webhooks.ts:133"}, "properties": {"repobilityId": "ad3efeece94d05e2", "scanner": "scanner-primary", "fingerprint": "6c297d09b00ba490", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85d3910c76b38552", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/modules/oms/flow-trace.service.ts:177"}, "properties": {"repobilityId": "3cb97c0632a0ffab", "scanner": "scanner-primary", "fingerprint": "85d3910c76b38552", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d68289b1d60b80b7", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/modules/oms/__tests__/unit/shopify-webhook-retry.test.ts:236"}, "properties": {"repobilityId": "c80941387c8c8cfc", "scanner": "scanner-primary", "fingerprint": "d68289b1d60b80b7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-af3268dd03bee6a3", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/modules/oms/__tests__/unit/push-shipment.test.ts:289"}, "properties": {"repobilityId": "90498f8cf583fd2e", "scanner": "scanner-primary", "fingerprint": "af3268dd03bee6a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d14d953755434cd", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/modules/oms/__tests__/unit/wms-sync-bridge-trigger.test.ts:16"}, "properties": {"repobilityId": "8fed371edc12a343", "scanner": "scanner-primary", "fingerprint": "5d14d953755434cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1584d27d7b84a16c", "level": "note", "message": {"text": "Legacy-named symbol `processShipNotifyLegacy` in server/modules/oms/__tests__/unit/ship-notify-v2.test.ts:49"}, "properties": {"repobilityId": "3e1d08132f57cecf", "scanner": "scanner-primary", "fingerprint": "1584d27d7b84a16c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a84c6f396fff863a", "level": "none", "message": {"text": "Commented-code block (14 lines) in server/modules/oms/__tests__/unit/ship-notify-v2.test.ts:168"}, "properties": {"repobilityId": "8733a8f223ef92f7", "scanner": "scanner-primary", "fingerprint": "a84c6f396fff863a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-636085b47c67a373", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/oms/__tests__/unit/ship-notify-v2.test.ts:169"}, "properties": {"repobilityId": "9e6593d0b966ecc1", "scanner": "scanner-primary", "fingerprint": "636085b47c67a373", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c838e7172d20ee4c", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/modules/oms/__tests__/unit/shipstation-reconcile-guard.test.ts:10"}, "properties": {"repobilityId": "e94f6da9891ac70c", "scanner": "scanner-primary", "fingerprint": "c838e7172d20ee4c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-43fb7010e057264a", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/modules/oms/__tests__/unit/refunds-create-cascade.test.ts:441"}, "properties": {"repobilityId": "b01932d9933c2197", "scanner": "scanner-primary", "fingerprint": "43fb7010e057264a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-44a419d66ee4c65d", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/modules/oms/__tests__/unit/flow-trace.service.test.ts:4"}, "properties": {"repobilityId": "73ec3e197981826c", "scanner": "scanner-primary", "fingerprint": "44a419d66ee4c65d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4be166cc6eb7d77e", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/modules/oms/__tests__/unit/fulfillments-update-webhook.test.ts:146"}, "properties": {"repobilityId": "3e3d97dbbcea48d6", "scanner": "scanner-primary", "fingerprint": "4be166cc6eb7d77e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0038fb1fa07e803a", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/modules/oms/__tests__/unit/ship-notify-orderkey.test.ts:159"}, "properties": {"repobilityId": "3dafaccc9f43983f", "scanner": "scanner-primary", "fingerprint": "0038fb1fa07e803a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b11eb9744827e74c", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/modules/oms/__tests__/unit/update-shopify-fulfillment-tracking.test.ts:554"}, "properties": {"repobilityId": "a042fbf16ba47cd1", "scanner": "scanner-primary", "fingerprint": "b11eb9744827e74c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4004e6f6eca8214f", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/modules/oms/__tests__/unit/push-shopify-fulfillment.test.ts:1630"}, "properties": {"repobilityId": "fb2216a90b2995e9", "scanner": "scanner-primary", "fingerprint": "4004e6f6eca8214f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2639a77e1966cee4", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/modules/oms/__tests__/unit/fulfillments-create-webhook.test.ts:47"}, "properties": {"repobilityId": "5fa4bcf6b3d0d9b9", "scanner": "scanner-primary", "fingerprint": "2639a77e1966cee4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4bfad13419529808", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/modules/inventory/cogs.service.ts:239"}, "properties": {"repobilityId": "cb8cc310f3f0cea2", "scanner": "scanner-primary", "fingerprint": "4bfad13419529808", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-58aa7572258ac13a", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/modules/inventory/application/replenishment.use-cases.ts:3590"}, "properties": {"repobilityId": "f84f3a148d3d39c8", "scanner": "scanner-primary", "fingerprint": "58aa7572258ac13a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a4f6df43de87aed4", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/modules/inventory/application/inventory.use-cases.ts:399"}, "properties": {"repobilityId": "e0a5babdda4fd80b", "scanner": "scanner-primary", "fingerprint": "a4f6df43de87aed4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2245c0503773a6ad", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/inventory/application/inventory.use-cases.ts:1079"}, "properties": {"repobilityId": "79f4662e158e7650", "scanner": "scanner-primary", "fingerprint": "2245c0503773a6ad", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3d2c5628a806cb5a", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/modules/inventory/infrastructure/inventory.repository.ts:326"}, "properties": {"repobilityId": "852452858c98c6a6", "scanner": "scanner-primary", "fingerprint": "3d2c5628a806cb5a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d2aa1b1dec0e182f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/inventory/__tests__/unit/replenishment.routes.test.ts:60"}, "properties": {"repobilityId": "8645ab1e4fec7f1c", "scanner": "scanner-primary", "fingerprint": "d2aa1b1dec0e182f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-21904d5848197dab", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/modules/notifications/__tests__/unit/notifications.routes.test.ts:56"}, "properties": {"repobilityId": "32501b760ada00ea", "scanner": "scanner-primary", "fingerprint": "21904d5848197dab", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b77a0deb0369a0b8", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/routes/oms.routes.ts:311"}, "properties": {"repobilityId": "1f0faf0813461a5a", "scanner": "scanner-primary", "fingerprint": "b77a0deb0369a0b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f1be5f850b0457a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/ebay-settings.routes.ts:140"}, "properties": {"repobilityId": "8524aba1a7948dac", "scanner": "scanner-primary", "fingerprint": "4f1be5f850b0457a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-30a702216848f290", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/routes/shopify.routes.ts:21"}, "properties": {"repobilityId": "8e9cee97a3688bec", "scanner": "scanner-primary", "fingerprint": "30a702216848f290", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-82bd4a479709b6c0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/shopify.routes.ts:677"}, "properties": {"repobilityId": "8cfd6faea510a697", "scanner": "scanner-primary", "fingerprint": "82bd4a479709b6c0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6cb5b686dbbea45a", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/pick-priority.routes.ts:6"}, "properties": {"repobilityId": "8d695294b51b8f54", "scanner": "scanner-primary", "fingerprint": "6cb5b686dbbea45a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a169b50b35d65422", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/ebay-listing-rules.routes.ts:478"}, "properties": {"repobilityId": "66a35d4ac51c7780", "scanner": "scanner-primary", "fingerprint": "a169b50b35d65422", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-72f737a0e7718eaa", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/ebay/ebay-config.routes.ts:60"}, "properties": {"repobilityId": "057147b3d0eb93f6", "scanner": "scanner-primary", "fingerprint": "72f737a0e7718eaa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5cd9ba1fd353d5ea", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/ebay/ebay-taxonomy.routes.ts:47"}, "properties": {"repobilityId": "ecf652927d4125f0", "scanner": "scanner-primary", "fingerprint": "5cd9ba1fd353d5ea", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d9d030108bd791e7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/hooks/use-notifications.ts:40"}, "properties": {"repobilityId": "0e39c2bfadea8886", "scanner": "scanner-primary", "fingerprint": "d9d030108bd791e7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-40d27ab50eb9f1c9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/layout/AppShell.tsx:561"}, "properties": {"repobilityId": "b75e4417a1b0817d", "scanner": "scanner-primary", "fingerprint": "40d27ab50eb9f1c9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fcf54bd2f8d4e393", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/operations/PickReplenHealthSection.tsx:278"}, "properties": {"repobilityId": "bc8acf28f08a38eb", "scanner": "scanner-primary", "fingerprint": "fcf54bd2f8d4e393", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-043a7a05026147c2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/operations/BinHistorySheet.tsx:70"}, "properties": {"repobilityId": "bdfb105fc765fe80", "scanner": "scanner-primary", "fingerprint": "043a7a05026147c2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bbd446c4ccc73c0d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/operations/ActionQueueSection.tsx:100"}, "properties": {"repobilityId": "a6e307dab2f9f2e3", "scanner": "scanner-primary", "fingerprint": "bbd446c4ccc73c0d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b6b25c0d47a1f9c8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/operations/BinInventorySection.tsx:143"}, "properties": {"repobilityId": "7c0009019186ed21", "scanner": "scanner-primary", "fingerprint": "b6b25c0d47a1f9c8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8a49c2b20b7e405f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/operations/InlineCaseBreakDialog.tsx:83"}, "properties": {"repobilityId": "a08dcb381aee724d", "scanner": "scanner-primary", "fingerprint": "8a49c2b20b7e405f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2be60b7ace7349e6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/operations/RecentActivitySection.tsx:86"}, "properties": {"repobilityId": "9aa51abf3e2ea451", "scanner": "scanner-primary", "fingerprint": "2be60b7ace7349e6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c4775f59212d3745", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/operations/SkuLocatorSection.tsx:53"}, "properties": {"repobilityId": "0ac299e4528f74d0", "scanner": "scanner-primary", "fingerprint": "c4775f59212d3745", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3487db4c7d9a453e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/operations/InlineAdjustDialog.tsx:70"}, "properties": {"repobilityId": "74f8a22cd6ead110", "scanner": "scanner-primary", "fingerprint": "3487db4c7d9a453e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2de3a8610a8fff23", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/operations/InlineTransferDialog.tsx:92"}, "properties": {"repobilityId": "220af0b490eba8f1", "scanner": "scanner-primary", "fingerprint": "2de3a8610a8fff23", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2b845813e717b7d0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/ebay/ProductTypeManager.tsx:86"}, "properties": {"repobilityId": "1b3c238f9f7e3619", "scanner": "scanner-primary", "fingerprint": "2b845813e717b7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bcd3c58522f7cefa", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/ebay/AspectEditor.tsx:90"}, "properties": {"repobilityId": "375d945558e3ffbf", "scanner": "scanner-primary", "fingerprint": "bcd3c58522f7cefa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3b79f93c5bae4d60", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/shipment/AddInvoiceFromCostsModal.tsx:151"}, "properties": {"repobilityId": "b57dfd90c87b1598", "scanner": "scanner-primary", "fingerprint": "3b79f93c5bae4d60", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c5e0366d18dfe34f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/purchasing/ExclusionRulesModal.tsx:138"}, "properties": {"repobilityId": "a4f6f023343f8e2e", "scanner": "scanner-primary", "fingerprint": "c5e0366d18dfe34f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-07119958cf661af4", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/Suppliers.tsx:735"}, "properties": {"repobilityId": "5ccfbe8ef56a8055", "scanner": "scanner-primary", "fingerprint": "07119958cf661af4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aadab37434ad644d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Suppliers.tsx:322"}, "properties": {"repobilityId": "321e793987a72658", "scanner": "scanner-primary", "fingerprint": "aadab37434ad644d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a5da234dfc4c16a9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/OmsOrders.tsx:230"}, "properties": {"repobilityId": "3c44ec87765b08d9", "scanner": "scanner-primary", "fingerprint": "a5da234dfc4c16a9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-769f88d933384bf3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/PurchasingDashboard.tsx:662"}, "properties": {"repobilityId": "9db99236445ad65b", "scanner": "scanner-primary", "fingerprint": "769f88d933384bf3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2c6ecadaf81bce92", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Products.tsx:102"}, "properties": {"repobilityId": "95167a61007e6ab4", "scanner": "scanner-primary", "fingerprint": "2c6ecadaf81bce92", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9a58af8a721e9f84", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/SlottingSetup.tsx:222"}, "properties": {"repobilityId": "67ecc19b63fdf542", "scanner": "scanner-primary", "fingerprint": "9a58af8a721e9f84", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fdcae8d44e05f216", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/WarehouseLocations.tsx:211"}, "properties": {"repobilityId": "c0a125ce03ff5745", "scanner": "scanner-primary", "fingerprint": "fdcae8d44e05f216", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dab33b67abb98547", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/PurchaseOrders.tsx:254"}, "properties": {"repobilityId": "5a0adc353cdb9da0", "scanner": "scanner-primary", "fingerprint": "dab33b67abb98547", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d3740a24d26369b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/PurchaseOrders.tsx:237"}, "properties": {"repobilityId": "63d0effb14f52cdc", "scanner": "scanner-primary", "fingerprint": "8d3740a24d26369b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ce544ce458b4d5e1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/ShopifyChannelPage.tsx:71"}, "properties": {"repobilityId": "53f5290e67f44da1", "scanner": "scanner-primary", "fingerprint": "ce544ce458b4d5e1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c1ca5d6f7b190e46", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Transfers.tsx:164"}, "properties": {"repobilityId": "eb3708f0a5619008", "scanner": "scanner-primary", "fingerprint": "c1ca5d6f7b190e46", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-786b9fbe590a7d02", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Receiving.tsx:343"}, "properties": {"repobilityId": "584cab78a06263ba", "scanner": "scanner-primary", "fingerprint": "786b9fbe590a7d02", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d10ae29b859fc655", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/CycleCounts.tsx:242"}, "properties": {"repobilityId": "810506373aefd537", "scanner": "scanner-primary", "fingerprint": "d10ae29b859fc655", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-360a47436d2c9753", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Inventory.tsx:234"}, "properties": {"repobilityId": "625db3228c68fb8f", "scanner": "scanner-primary", "fingerprint": "360a47436d2c9753", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e2b76c34ed03041a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/InboundShipmentDetail.tsx:962"}, "properties": {"repobilityId": "f8b54aa45ec99704", "scanner": "scanner-primary", "fingerprint": "e2b76c34ed03041a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-46055c87461de800", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Users.tsx:47"}, "properties": {"repobilityId": "afdea6ed2a057946", "scanner": "scanner-primary", "fingerprint": "46055c87461de800", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f53924fc8cf98573", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/PickingMetrics.tsx:92"}, "properties": {"repobilityId": "56335501e1479252", "scanner": "scanner-primary", "fingerprint": "f53924fc8cf98573", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-786e07ac7498e365", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/InventoryHistory.tsx:140"}, "properties": {"repobilityId": "2e5a5e101b39b5d5", "scanner": "scanner-primary", "fingerprint": "786e07ac7498e365", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bfdf820cc47baa1b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Roles.tsx:49"}, "properties": {"repobilityId": "f9f8f0304d23355a", "scanner": "scanner-primary", "fingerprint": "bfdf820cc47baa1b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cff224b6dfdb49a9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/InboundShipments.tsx:161"}, "properties": {"repobilityId": "35c244c92efa4c9e", "scanner": "scanner-primary", "fingerprint": "cff224b6dfdb49a9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-250a2bd3f44a8516", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Reserves.tsx:65"}, "properties": {"repobilityId": "1c9758b89e56258e", "scanner": "scanner-primary", "fingerprint": "250a2bd3f44a8516", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1a33b90c5fce9364", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/ProcurementSettings.tsx:133"}, "properties": {"repobilityId": "f1270ef5d494b068", "scanner": "scanner-primary", "fingerprint": "1a33b90c5fce9364", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cafcf2429d127e0f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/APInvoices.tsx:112"}, "properties": {"repobilityId": "a069b16986e758c4", "scanner": "scanner-primary", "fingerprint": "cafcf2429d127e0f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2f5eb3b5527da7ac", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/VendorDetail.tsx:76"}, "properties": {"repobilityId": "9ab847d1a267c1f1", "scanner": "scanner-primary", "fingerprint": "2f5eb3b5527da7ac", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fbda4b13028ab4aa", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Channels.tsx:151"}, "properties": {"repobilityId": "a0dbfecde806aa59", "scanner": "scanner-primary", "fingerprint": "fbda4b13028ab4aa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9b707662979f6bbf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Replenishment.tsx:406"}, "properties": {"repobilityId": "86a1c9c7daa64f39", "scanner": "scanner-primary", "fingerprint": "9b707662979f6bbf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7dcc328093e80a6a", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/ProductLines.tsx:1281"}, "properties": {"repobilityId": "71945a7f23fc3ec1", "scanner": "scanner-primary", "fingerprint": "7dcc328093e80a6a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b18a4966eff116b2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/ProductLines.tsx:1241"}, "properties": {"repobilityId": "bb7a26a5604bbb6e", "scanner": "scanner-primary", "fingerprint": "b18a4966eff116b2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-26f2e1cd346a6617", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Warehouses.tsx:154"}, "properties": {"repobilityId": "59fc49462dd4fce1", "scanner": "scanner-primary", "fingerprint": "26f2e1cd346a6617", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cd2d50545a65e501", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/APPayments.tsx:134"}, "properties": {"repobilityId": "13a6471cec9ce02c", "scanner": "scanner-primary", "fingerprint": "cd2d50545a65e501", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-da01eed336108769", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/ChannelAllocation.tsx:119"}, "properties": {"repobilityId": "b9539806b7060453", "scanner": "scanner-primary", "fingerprint": "da01eed336108769", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a02ce8be65807a43", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/OperationsView.tsx:61"}, "properties": {"repobilityId": "dc3b46ba9fa7e7c0", "scanner": "scanner-primary", "fingerprint": "a02ce8be65807a43", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9f49741bf9858981", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/PickingSettings.tsx:50"}, "properties": {"repobilityId": "56767fd5d975a200", "scanner": "scanner-primary", "fingerprint": "9f49741bf9858981", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f8e748901c9337a7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/APInvoiceDetail.tsx:227"}, "properties": {"repobilityId": "d6ab6556c7cf1f93", "scanner": "scanner-primary", "fingerprint": "f8e748901c9337a7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c4bbb53b0e06a83c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/CostDashboard.tsx:322"}, "properties": {"repobilityId": "15db3b2beafc34bb", "scanner": "scanner-primary", "fingerprint": "c4bbb53b0e06a83c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e0c73c443e453b2e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Settings.tsx:55"}, "properties": {"repobilityId": "a3dfd2d323f86b57", "scanner": "scanner-primary", "fingerprint": "e0c73c443e453b2e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-73ac0dafbea7d1bc", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/ProductDetail.tsx:364"}, "properties": {"repobilityId": "afc3fb7d509882c8", "scanner": "scanner-primary", "fingerprint": "73ac0dafbea7d1bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ae61a4202e300c6a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/ProductDetail.tsx:807"}, "properties": {"repobilityId": "8c5c871217970caf", "scanner": "scanner-primary", "fingerprint": "ae61a4202e300c6a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5a367a4200302955", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Picking.tsx:88"}, "properties": {"repobilityId": "58307dad1803f747", "scanner": "scanner-primary", "fingerprint": "5a367a4200302955", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d381bc5265bf333a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/OrderHistory.tsx:109"}, "properties": {"repobilityId": "a548514ea034e5b4", "scanner": "scanner-primary", "fingerprint": "d381bc5265bf333a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aa3be48451fd0af0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Variants.tsx:140"}, "properties": {"repobilityId": "1710877d68dd0357", "scanner": "scanner-primary", "fingerprint": "aa3be48451fd0af0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-945580c610a1f56d", "level": "none", "message": {"text": "Commented-code block (8 lines) in client/src/pages/PurchaseOrderEdit.tsx:7"}, "properties": {"repobilityId": "5a5eb49e4ca1dd56", "scanner": "scanner-primary", "fingerprint": "945580c610a1f56d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9c48c826ccec7f27", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/PurchaseOrderEdit.tsx:628"}, "properties": {"repobilityId": "03cdcb47dc5eac76", "scanner": "scanner-primary", "fingerprint": "9c48c826ccec7f27", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9963b269b819e696", "level": "note", "message": {"text": "Legacy-named symbol `recent_order_velocity_v1` in client/src/pages/PurchasingView.tsx:85"}, "properties": {"repobilityId": "1cbcc025e90f7a4a", "scanner": "scanner-primary", "fingerprint": "9963b269b819e696", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e9710270d21fc11b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/PurchasingView.tsx:529"}, "properties": {"repobilityId": "d95adedf1aecae72", "scanner": "scanner-primary", "fingerprint": "e9710270d21fc11b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5c31495b01df0aff", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Orders.tsx:288"}, "properties": {"repobilityId": "b9ca17c325606e3d", "scanner": "scanner-primary", "fingerprint": "5c31495b01df0aff", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c8faf1d578ae8a34", "level": "none", "message": {"text": "Commented-code block (9 lines) in client/src/pages/PurchaseOrderDetail.tsx:404"}, "properties": {"repobilityId": "686461698c2a1599", "scanner": "scanner-primary", "fingerprint": "c8faf1d578ae8a34", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a6f440c7303dd093", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/PurchaseOrderDetail.tsx:964"}, "properties": {"repobilityId": "ed86a08095151570", "scanner": "scanner-primary", "fingerprint": "a6f440c7303dd093", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d393ad01d4805a3c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/DemandPlanner.tsx:424"}, "properties": {"repobilityId": "fc6b3a36e05d5f2c", "scanner": "scanner-primary", "fingerprint": "d393ad01d4805a3c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-afffff3a1f5e7b0d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/VendorList.tsx:65"}, "properties": {"repobilityId": "88fd59f9023c2276", "scanner": "scanner-primary", "fingerprint": "afffff3a1f5e7b0d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4bc85022e8660f2f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Dashboard.tsx:539"}, "properties": {"repobilityId": "3746b101463aee13", "scanner": "scanner-primary", "fingerprint": "4bc85022e8660f2f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d203d47ce9582dac", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/PickingLogs.tsx:140"}, "properties": {"repobilityId": "e1456db9401bf4b2", "scanner": "scanner-primary", "fingerprint": "d203d47ce9582dac", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f38e3f699033bfa5", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/product-lines/__tests__/selection.test.ts:159"}, "properties": {"repobilityId": "a5590950bb306700", "scanner": "scanner-primary", "fingerprint": "f38e3f699033bfa5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d3d967be9547b08", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/features/po-edit/AddToCatalogDialog.tsx:3"}, "properties": {"repobilityId": "493e6bf80e7084b0", "scanner": "scanner-primary", "fingerprint": "5d3d967be9547b08", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-36ab72bbfcd7f5f0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/dropship-auth.tsx:307"}, "properties": {"repobilityId": "aa77e7adbb1d1715", "scanner": "scanner-primary", "fingerprint": "36ab72bbfcd7f5f0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-02822116652a2444", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/queryClient.ts:15"}, "properties": {"repobilityId": "2bac9ae8c8b9b76c", "scanner": "scanner-primary", "fingerprint": "02822116652a2444", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d0447f6232786e33", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/dropship-ops-surface.ts:2135"}, "properties": {"repobilityId": "ea535001d9f5f0c4", "scanner": "scanner-primary", "fingerprint": "d0447f6232786e33", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-23be87370710df68", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/api.ts:8"}, "properties": {"repobilityId": "53cbeaab0d142bd3", "scanner": "scanner-primary", "fingerprint": "23be87370710df68", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f9a05c34d8cd5772", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/vendor-auth.tsx:50"}, "properties": {"repobilityId": "ff9488f033cee816", "scanner": "scanner-primary", "fingerprint": "f9a05c34d8cd5772", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-665855be88d38b80", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/vendor-api.ts:26"}, "properties": {"repobilityId": "4cdc2aa37a43c8ff", "scanner": "scanner-primary", "fingerprint": "665855be88d38b80", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d76b476404125a8a", "level": "none", "message": {"text": "Commented-code block (7 lines) in shared/utils/money.ts:5"}, "properties": {"repobilityId": "8f3af968d89e4bac", "scanner": "scanner-primary", "fingerprint": "d76b476404125a8a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-77897e01bef5eaee", "level": "none", "message": {"text": "Commented-code block (7 lines) in shared/enums/order-status.ts:164"}, "properties": {"repobilityId": "8b70c02f7aacbf6c", "scanner": "scanner-primary", "fingerprint": "77897e01bef5eaee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-32df49328a9b49a3", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/schema/channels.schema.ts:38"}, "properties": {"repobilityId": "e6d6e34dc85c4c75", "scanner": "scanner-primary", "fingerprint": "32df49328a9b49a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-22ad48616b1ec6d2", "level": "none", "message": {"text": "Commented-code block (7 lines) in shared/schema/orders.schema.ts:409"}, "properties": {"repobilityId": "149be92de6a7b6cd", "scanner": "scanner-primary", "fingerprint": "22ad48616b1ec6d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d6374d0e64c0545b", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/schema/procurement.schema.ts:9"}, "properties": {"repobilityId": "c80dbadfed51d1b4", "scanner": "scanner-primary", "fingerprint": "d6374d0e64c0545b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2755483367fe70e1", "level": "none", "message": {"text": "Commented-code block (6 lines) in shared/schema/oms.schema.ts:69"}, "properties": {"repobilityId": "3bd145d0f8e64fbf", "scanner": "scanner-primary", "fingerprint": "2755483367fe70e1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c504fd4f0a6cf681", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/schema/inventory.schema.ts:272"}, "properties": {"repobilityId": "1024ff50657ae9fe", "scanner": "scanner-primary", "fingerprint": "c504fd4f0a6cf681", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e6135ad67e415d47", "level": "note", "message": {"text": "Legacy-named symbol `dropship_vendors_phase0_legacy` in shared/__tests__/dropship-v2-schema.test.ts:107"}, "properties": {"repobilityId": "cfc500ab774a5293", "scanner": "scanner-primary", "fingerprint": "e6135ad67e415d47", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c13a0b71a242564d", "level": "warning", "message": {"text": "Frontend route `/vendor/register` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "a0d87f63fdb352eb", "scanner": "scanner-primary", "fingerprint": "c13a0b71a242564d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c60f997afcd1e3f2", "level": "warning", "message": {"text": "Frontend route `/vendor/products` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "abb2b55447d720cf", "scanner": "scanner-primary", "fingerprint": "c60f997afcd1e3f2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-7de5a26a7e6001fa", "level": "warning", "message": {"text": "Frontend route `/vendor/orders` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "9bcdfbf66425a546", "scanner": "scanner-primary", "fingerprint": "7de5a26a7e6001fa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-00260fb9c2e03d71", "level": "warning", "message": {"text": "Frontend route `/vendor/wallet` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "93071e5426788c65", "scanner": "scanner-primary", "fingerprint": "00260fb9c2e03d71", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-765d86a8c64ac43c", "level": "warning", "message": {"text": "Frontend route `/vendor/settings` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "aa634e76cde9c402", "scanner": "scanner-primary", "fingerprint": "765d86a8c64ac43c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-b561047ef6beb66f", "level": "warning", "message": {"text": "Frontend route `/vendor` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "e72848145b1532a8", "scanner": "scanner-primary", "fingerprint": "b561047ef6beb66f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-1f7a00e637b7ceca", "level": "warning", "message": {"text": "Frontend route `/bin-assignments` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "815bcdc02460cc62", "scanner": "scanner-primary", "fingerprint": "1f7a00e637b7ceca", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-aa4d90598c4f7036", "level": "warning", "message": {"text": "Frontend route `/dropship` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "d504280a00202e07", "scanner": "scanner-primary", "fingerprint": "aa4d90598c4f7036", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-dbb1077bdc2c3154", "level": "warning", "message": {"text": "Frontend route `/vendors/:id` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "cccf550eaf90f915", "scanner": "scanner-primary", "fingerprint": "dbb1077bdc2c3154", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f40a6e0d9f281545", "level": "warning", "message": {"text": "Frontend route `/picking/logs` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "890d1ed6ef30d21d", "scanner": "scanner-primary", "fingerprint": "f40a6e0d9f281545", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-39e28fd419cd0830", "level": "warning", "message": {"text": "Frontend route `/picking/metrics` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "8bc6d38fe11d1e49", "scanner": "scanner-primary", "fingerprint": "39e28fd419cd0830", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-45318103071cf688", "level": "warning", "message": {"text": "Frontend route `/picking/settings` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "5408d2d0e3603f1e", "scanner": "scanner-primary", "fingerprint": "45318103071cf688", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-1127bcfb6f497bc2", "level": "warning", "message": {"text": "Frontend route `/warehouse/settings/:id` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "cf9c18e6f204150d", "scanner": "scanner-primary", "fingerprint": "1127bcfb6f497bc2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-7f3b5d251ec7b710", "level": "warning", "message": {"text": "Frontend route `/products/:id` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "bfa6e83bf53ce947", "scanner": "scanner-primary", "fingerprint": "7f3b5d251ec7b710", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-ee17ab634a61388a", "level": "warning", "message": {"text": "Frontend route `/enterprise` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "58bc3727828fd871", "scanner": "scanner-primary", "fingerprint": "ee17ab634a61388a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-35ec0771567a3999", "level": "warning", "message": {"text": "Frontend route `/purchase-orders/:id/edit` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "13d83c7a906230ef", "scanner": "scanner-primary", "fingerprint": "35ec0771567a3999", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c7a78bcc74797b5d", "level": "warning", "message": {"text": "Frontend route `/shipments/:id` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "3662b6c988d5900d", "scanner": "scanner-primary", "fingerprint": "c7a78bcc74797b5d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-8609df83bfc238aa", "level": "warning", "message": {"text": "Frontend route `/ap-invoices/:id` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "63e5eb03a6906f88", "scanner": "scanner-primary", "fingerprint": "8609df83bfc238aa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-4c28d42539a057ed", "level": "warning", "message": {"text": "Frontend route `/purchasing/catalog` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "72f9349e27a00b86", "scanner": "scanner-primary", "fingerprint": "4c28d42539a057ed", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-ea474e8902bc8e03", "level": "warning", "message": {"text": "Frontend route `/purchasing/:id` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "457d07b801b12b06", "scanner": "scanner-primary", "fingerprint": "ea474e8902bc8e03", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-ea2ad288dff24087", "level": "warning", "message": {"text": "Frontend route `/products` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "672a085c77a2de3b", "scanner": "scanner-primary", "fingerprint": "ea2ad288dff24087", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-ca95effd5a5efab4", "level": "warning", "message": {"text": "Frontend route `/variants` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "07ef944e86e75bb0", "scanner": "scanner-primary", "fingerprint": "ca95effd5a5efab4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-b5fe80b4206fe25d", "level": "warning", "message": {"text": "Frontend route `/warehouses` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "7e318a3e309e8dbe", "scanner": "scanner-primary", "fingerprint": "b5fe80b4206fe25d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-e572c6f2458177ce", "level": "error", "message": {"text": "Dangling fetch: GET https://cardshellz-echelon-f21ea7da3008.herokuapp.com/api/picking/queue/single (fetch-queue.cjs:3)"}, "properties": {"repobilityId": "cec7d25353930ff7", "scanner": "scanner-primary", "fingerprint": "e572c6f2458177ce", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-efb800c27ed252e0", "level": "error", "message": {"text": "Dangling fetch: GET https://cardshellz-echelon-f21ea7da3008.herokuapp.com/api/picking/queue/single (fetch-queue-text.cjs:3)"}, "properties": {"repobilityId": "ba212f3c223fa10e", "scanner": "scanner-primary", "fingerprint": "efb800c27ed252e0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e4a1b4808299ff94", "level": "error", "message": {"text": "Dangling fetch: GET https://ssapi.shipstation.com/stores (scripts/list-shipstation-stores.mjs:15)"}, "properties": {"repobilityId": "1dca517a87d64798", "scanner": "scanner-primary", "fingerprint": "e4a1b4808299ff94", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9ed03b778d998aa7", "level": "error", "message": {"text": "Dangling fetch: GET https://ssapi.shipstation.com/warehouses (scripts/list-shipstation-warehouses.mjs:15)"}, "properties": {"repobilityId": "9d0fe5b91aada8ff", "scanner": "scanner-primary", "fingerprint": "9ed03b778d998aa7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7a17de473ad5fc45", "level": "error", "message": {"text": "Dangling fetch: GET https://shellz-club-app-c299723495c9.herokuapp.com/api/storefront/member-pricing?variant_ids=46869766963423 (dump-settings.ts:5)"}, "properties": {"repobilityId": "272b7026d588cb19", "scanner": "scanner-primary", "fingerprint": "7a17de473ad5fc45", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-088d0db6e2fc6230", "level": "error", "message": {"text": "Dangling fetch: GET https://${conn.shopDomain}/admin/api/2024-01/products.json?limit=250&fields=id,title,images,variants (check-shopify-images.ts:24)"}, "properties": {"repobilityId": "38f14bccc537ac38", "scanner": "scanner-primary", "fingerprint": "088d0db6e2fc6230", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ff77fea50c3ebbf8", "level": "error", "message": {"text": "Dangling fetch: GET https://api.ebay.com/buy/browse/v1/item/v1|${item_id}|0 (scripts/import_ebay_to_echelon.ts:38)"}, "properties": {"repobilityId": "f1dfaecd6b4fb921", "scanner": "scanner-primary", "fingerprint": "ff77fea50c3ebbf8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5abf3808274b6c4a", "level": "error", "message": {"text": "Dangling fetch: GET https://api.ebay.com/buy/browse/v1/item/v1|${item_id} (scripts/import_ebay_to_echelon.ts:61)"}, "properties": {"repobilityId": "5bdbe53ef3777cdc", "scanner": "scanner-primary", "fingerprint": "5abf3808274b6c4a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-803fdd01433000ae", "level": "error", "message": {"text": "Dangling fetch: GET https://api.ebay.com/buy/browse/v1/item/get_item_by_legacy_id?legacy_item_id=${itemId} (scripts/rescue_ebay_images.ts:149)"}, "properties": {"repobilityId": "276acc4dc4b7227c", "scanner": "scanner-primary", "fingerprint": "803fdd01433000ae", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-04673d4e87bed09e", "level": "error", "message": {"text": "Dangling fetch: GET https://api.ebay.com/buy/browse/v1/item/get_items_by_item_group?item_group_id=${itemId} (scripts/rescue_ebay_images.ts:177)"}, "properties": {"repobilityId": "c4789e141475249b", "scanner": "scanner-primary", "fingerprint": "04673d4e87bed09e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-89bc4feebbdc9012", "level": "error", "message": {"text": "Dangling fetch: POST https://${shStore}/admin/api/2024-01/products/${shopifyProductId}/images.json (scripts/rescue_ebay_images.ts:226)"}, "properties": {"repobilityId": "6857973b025a254b", "scanner": "scanner-primary", "fingerprint": "89bc4feebbdc9012", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ab25d27892091b58", "level": "error", "message": {"text": "Dangling fetch: GET https://${shConn.shopDomain}/admin/api/2024-01/products/${shId}.json?fields=images (scripts/sync_images_all.ts:107)"}, "properties": {"repobilityId": "61a8518229804117", "scanner": "scanner-primary", "fingerprint": "ab25d27892091b58", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-41e4ee03fbec689d", "level": "error", "message": {"text": "Dangling fetch: POST https://${shConn.shopDomain}/admin/api/2024-01/products/${shId}/images.json (scripts/sync_images_all.ts:121)"}, "properties": {"repobilityId": "9af0843dd3c1fef4", "scanner": "scanner-primary", "fingerprint": "41e4ee03fbec689d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-50f95cf878c0dda0", "level": "error", "message": {"text": "Dangling fetch: GET https://api.ebay.com/buy/browse/v1/item/get_item_by_legacy_id?legacy_item_id=${itemId} (scripts/sync_images_all.ts:160)"}, "properties": {"repobilityId": "72405dfb7a4da393", "scanner": "scanner-primary", "fingerprint": "50f95cf878c0dda0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d1fbaa77677a0f73", "level": "error", "message": {"text": "Dangling fetch: GET https://api.ebay.com/buy/browse/v1/item/get_items_by_item_group?item_group_id=${itemId} (scripts/sync_images_all.ts:174)"}, "properties": {"repobilityId": "1696a49599d6ec33", "scanner": "scanner-primary", "fingerprint": "d1fbaa77677a0f73", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a5f855d7ab841e1e", "level": "error", "message": {"text": "Dangling fetch: POST https://${shConn.shopDomain}/admin/api/2024-01/products/${shId}/images.json (scripts/sync_images_all.ts:196)"}, "properties": {"repobilityId": "d3cdca7209645de1", "scanner": "scanner-primary", "fingerprint": "a5f855d7ab841e1e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cb46ba66fd615656", "level": "error", "message": {"text": "Dangling fetch: GET https://ssapi.shipstation.com${pathName} (scripts/cleanup-duplicate-wms-orders.ts:472)"}, "properties": {"repobilityId": "48f155da6ddb1825", "scanner": "scanner-primary", "fingerprint": "cb46ba66fd615656", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0bf1fcdf361f3ce2", "level": "error", "message": {"text": "Dangling fetch: GET https://api.ebay.com/sell/account/v1/fulfillment_policy?marketplace_id=EBAY_US (scripts/_ebay-recon.ts:27)"}, "properties": {"repobilityId": "9126873132e4e208", "scanner": "scanner-primary", "fingerprint": "0bf1fcdf361f3ce2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-abd8ed246f3ca422", "level": "error", "message": {"text": "Dangling fetch: GET https://api.ebay.com/sell/account/v1/payment_policy?marketplace_id=EBAY_US (scripts/_ebay-recon.ts:41)"}, "properties": {"repobilityId": "56d9e584119b62ae", "scanner": "scanner-primary", "fingerprint": "abd8ed246f3ca422", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b6cfdbf3d06fd1fd", "level": "error", "message": {"text": "Dangling fetch: GET https://api.ebay.com/sell/account/v1/return_policy?marketplace_id=EBAY_US (scripts/_ebay-recon.ts:55)"}, "properties": {"repobilityId": "78b39af75e4915a0", "scanner": "scanner-primary", "fingerprint": "b6cfdbf3d06fd1fd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f05e2cdfb6afd682", "level": "error", "message": {"text": "Dangling fetch: GET https://api.ebay.com/sell/inventory/v1/location?limit=25 (scripts/_ebay-recon.ts:69)"}, "properties": {"repobilityId": "307c1b93035c8eb0", "scanner": "scanner-primary", "fingerprint": "f05e2cdfb6afd682", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cde0b453e0e9ecc9", "level": "error", "message": {"text": "Dangling fetch: GET https://api.ebay.com/sell/inventory/v1/inventory_item?limit=5 (scripts/_ebay-recon.ts:87)"}, "properties": {"repobilityId": "e619df885f870dce", "scanner": "scanner-primary", "fingerprint": "cde0b453e0e9ecc9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-906ec2c309363500", "level": "error", "message": {"text": "Dangling fetch: GET https://api.ebay.com/sell/inventory/v1/offer?limit=5&marketplace_id=EBAY_US (scripts/_ebay-recon.ts:100)"}, "properties": {"repobilityId": "e1d4e0b891121eea", "scanner": "scanner-primary", "fingerprint": "906ec2c309363500", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b2c6511bbc023e6d", "level": "error", "message": {"text": "Dangling fetch: GET https://api.ebay.com/sell/fulfillment/v1/order?limit=3&orderBy=creationdate%20desc (scripts/_ebay-recon.ts:114)"}, "properties": {"repobilityId": "1f33943908f83a14", "scanner": "scanner-primary", "fingerprint": "b2c6511bbc023e6d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1ddbeae10b1a5818", "level": "error", "message": {"text": "Dangling fetch: GET https://api.ebay.com/commerce/taxonomy/v1/category_tree/0/get_category_suggestions?q=toploader+trading+card (scripts/_ebay-recon.ts:127)"}, "properties": {"repobilityId": "aa20b576e0bea8b1", "scanner": "scanner-primary", "fingerprint": "1ddbeae10b1a5818", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ce448d56c3476545", "level": "error", "message": {"text": "Dangling fetch: GET https://${domain}/admin/api/2024-01/products.json?limit=250 (scripts/_ca-backfill.ts:30)"}, "properties": {"repobilityId": "beb495706ff73a8d", "scanner": "scanner-primary", "fingerprint": "ce448d56c3476545", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-daee4c9c21a21aed", "level": "error", "message": {"text": "Dangling fetch: POST https://${shopDomain}/admin/oauth/access_token (server/modules/dropship/infrastructure/dropship-marketplace-oauth.providers.ts:207)"}, "properties": {"repobilityId": "f1f75eb6b1b9e1d7", "scanner": "scanner-primary", "fingerprint": "daee4c9c21a21aed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bd9ab9144a348264", "level": "error", "message": {"text": "Dangling fetch: GET https://${store}.myshopify.com/admin/api/2024-01/shop.json (server/modules/channels/channels.routes.ts:681)"}, "properties": {"repobilityId": "f4ede1ed086c31a6", "scanner": "scanner-primary", "fingerprint": "bd9ab9144a348264", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4baf8d383656d4a6", "level": "error", "message": {"text": "Dangling fetch: GET https://${store}.myshopify.com/admin/api/2024-01/locations.json (server/modules/channels/channels.routes.ts:715)"}, "properties": {"repobilityId": "df1c007e904fa8fe", "scanner": "scanner-primary", "fingerprint": "4baf8d383656d4a6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b018646fb0fa45b2", "level": "error", "message": {"text": "Dangling fetch: GET https://${store}.myshopify.com/admin/api/2024-01/locations.json (server/modules/channels/channels.routes.ts:815)"}, "properties": {"repobilityId": "dd52b3ddced8b88a", "scanner": "scanner-primary", "fingerprint": "b018646fb0fa45b2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5f3ee7efcb057df0", "level": "error", "message": {"text": "Dangling fetch: GET https://${domain}/admin/api/2024-01/products/${product.shopifyProductId}.json (server/modules/catalog/image-sync.service.ts:234)"}, "properties": {"repobilityId": "d1c873bf443c0cfa", "scanner": "scanner-primary", "fingerprint": "5f3ee7efcb057df0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f3cdb5292ec7ef98", "level": "error", "message": {"text": "Dangling fetch: PUT https://${domain}/admin/api/2024-01/products/${product.shopifyProductId}.json (server/modules/catalog/image-sync.service.ts:390)"}, "properties": {"repobilityId": "79242aca98fd9e75", "scanner": "scanner-primary", "fingerprint": "f3cdb5292ec7ef98", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fbc26d16c0d4f0a1", "level": "error", "message": {"text": "Dangling fetch: POST https://api.ebay.com/ws/api.dll (server/modules/catalog/image-sync.service.ts:500)"}, "properties": {"repobilityId": "c7e6cedade37103b", "scanner": "scanner-primary", "fingerprint": "fbc26d16c0d4f0a1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-07fd93b2d742f640", "level": "error", "message": {"text": "Dangling fetch: GET https://${credentials.shopDomain}/admin/api/${credentials.apiVersion}${path} (server/modules/catalog/catalog.routes.ts:116)"}, "properties": {"repobilityId": "55d3eda7df99e84d", "scanner": "scanner-primary", "fingerprint": "07fd93b2d742f640", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1f156763db3925d2", "level": "error", "message": {"text": "Dangling fetch: GET https://${credentials.shopDomain}/admin/api/${credentials.apiVersion}${path} (server/modules/catalog/catalog.routes.ts:179)"}, "properties": {"repobilityId": "07256c5c5373c5f7", "scanner": "scanner-primary", "fingerprint": "1f156763db3925d2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-114c3d6ec1e888da", "level": "error", "message": {"text": "Dangling fetch: POST https://${shop}/admin/oauth/access_token (server/routes/shopify.routes.ts:677)"}, "properties": {"repobilityId": "43ba062feb86a485", "scanner": "scanner-primary", "fingerprint": "114c3d6ec1e888da", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e8a906b292ac26df", "level": "error", "message": {"text": "Dangling fetch: POST https://api.ebay.com/ws/api.dll (server/routes/ebay-listing-rules.routes.ts:478)"}, "properties": {"repobilityId": "5f9faba36ebe1e05", "scanner": "scanner-primary", "fingerprint": "e8a906b292ac26df", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-38e1991721e0f4f5", "level": "error", "message": {"text": "Dangling fetch: POST https://api.ebay.com/ws/api.dll (server/routes/ebay/ebay-config.routes.ts:305)"}, "properties": {"repobilityId": "3f0313c6bd4a8f80", "scanner": "scanner-primary", "fingerprint": "38e1991721e0f4f5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dd790abb6c3d0a7b", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/vendors/${vendorId} (client/src/pages/VendorDetail.tsx:76)"}, "properties": {"repobilityId": "91fee603958aacac", "scanner": "scanner-primary", "fingerprint": "dd790abb6c3d0a7b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-13bbcb1bb0f2567e", "level": "error", "message": {"text": "Dangling fetch: PUT /api/admin/vendors/${vendorId} (client/src/pages/VendorDetail.tsx:85)"}, "properties": {"repobilityId": "a1048d2b09e4f56b", "scanner": "scanner-primary", "fingerprint": "13bbcb1bb0f2567e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-02e3e8701c0e4f58", "level": "error", "message": {"text": "Dangling fetch: POST /api/vendor-invoices/${invoiceId}/${endpoint} (client/src/pages/APInvoiceDetail.tsx:227)"}, "properties": {"repobilityId": "9d76fb9e42a898d5", "scanner": "scanner-primary", "fingerprint": "02e3e8701c0e4f58", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6e386c25b326af9e", "level": "error", "message": {"text": "Dangling fetch: PUT /api/products/${product?.productId} (client/src/pages/ProductDetail.tsx:922)"}, "properties": {"repobilityId": "3a004abecb6f1bfd", "scanner": "scanner-primary", "fingerprint": "6e386c25b326af9e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-da25a9b20f0cb79e", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/products/${product?.productId} (client/src/pages/ProductDetail.tsx:965)"}, "properties": {"repobilityId": "cacb94c08417609a", "scanner": "scanner-primary", "fingerprint": "da25a9b20f0cb79e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2119f916a806e5b9", "level": "error", "message": {"text": "Dangling fetch: PUT /api/products/${product?.productId} (client/src/pages/ProductDetail.tsx:983)"}, "properties": {"repobilityId": "eb57b7de77835722", "scanner": "scanner-primary", "fingerprint": "2119f916a806e5b9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-55677e39b913e0e1", "level": "error", "message": {"text": "Dangling fetch: POST /api/products/${product?.productId}/archive (client/src/pages/ProductDetail.tsx:1050)"}, "properties": {"repobilityId": "b03ca304132afb19", "scanner": "scanner-primary", "fingerprint": "55677e39b913e0e1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0012eb2cc53370f6", "level": "error", "message": {"text": "Dangling fetch: POST /api/products/${product?.productId}/assets (client/src/pages/ProductDetail.tsx:1083)"}, "properties": {"repobilityId": "bf09572c31d64888", "scanner": "scanner-primary", "fingerprint": "0012eb2cc53370f6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-07dfcec8285ca970", "level": "error", "message": {"text": "Dangling fetch: PUT /api/products/${product?.productId}/assets/reorder (client/src/pages/ProductDetail.tsx:1153)"}, "properties": {"repobilityId": "ae9f7650412445ba", "scanner": "scanner-primary", "fingerprint": "07dfcec8285ca970", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8f0e5f71e11d6793", "level": "error", "message": {"text": "Dangling fetch: GET /api/products/${product?.productId}/allocation (client/src/pages/ProductDetail.tsx:1223)"}, "properties": {"repobilityId": "bdd77d391fe9bbf4", "scanner": "scanner-primary", "fingerprint": "8f0e5f71e11d6793", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a751ef729f60cbee", "level": "error", "message": {"text": "Dangling fetch: POST /api/channel-sync/product/${product?.productId} (client/src/pages/ProductDetail.tsx:1232)"}, "properties": {"repobilityId": "be0106bd9e7635ee", "scanner": "scanner-primary", "fingerprint": "a751ef729f60cbee", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-aae8dc550eefa927", "level": "error", "message": {"text": "Dangling fetch: POST /api/images/pull/${source} (client/src/pages/ProductDetail.tsx:1252)"}, "properties": {"repobilityId": "c17a70526a3d11d9", "scanner": "scanner-primary", "fingerprint": "aae8dc550eefa927", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8ba0e72e99546ed9", "level": "error", "message": {"text": "Dangling fetch: POST /api/channel-push/product/${product?.productId}/channel/36 (client/src/pages/ProductDetail.tsx:1274)"}, "properties": {"repobilityId": "57ab9a356138f8df", "scanner": "scanner-primary", "fingerprint": "8ba0e72e99546ed9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-99ec1ed5d6dc175a", "level": "error", "message": {"text": "Dangling fetch: POST /api/products/${product?.productId}/variants (client/src/pages/ProductDetail.tsx:1427)"}, "properties": {"repobilityId": "2a277d08322162c3", "scanner": "scanner-primary", "fingerprint": "99ec1ed5d6dc175a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1a5bdd052f13d47f", "level": "error", "message": {"text": "Dangling fetch: PUT /api/admin/variants/${variantId}/dropship-eligible (client/src/pages/ProductDetail.tsx:1455)"}, "properties": {"repobilityId": "d5a37eb0084c0cd3", "scanner": "scanner-primary", "fingerprint": "1a5bdd052f13d47f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-32d29c422dda81cd", "level": "error", "message": {"text": "Dangling fetch: POST /api/product-variants/${archiveVariant?.id}/archive (client/src/pages/ProductDetail.tsx:1635)"}, "properties": {"repobilityId": "527095e466b52b01", "scanner": "scanner-primary", "fingerprint": "32d29c422dda81cd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-eb5ddb3031724e35", "level": "error", "message": {"text": "Dangling fetch: PUT /api/admin/variants/${variantId}/dropship-eligible (client/src/pages/Variants.tsx:191)"}, "properties": {"repobilityId": "bbd010d2eea1c42b", "scanner": "scanner-primary", "fingerprint": "eb5ddb3031724e35", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9376e28752b23862", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/variants/bulk-dropship-eligible (client/src/pages/Variants.tsx:300)"}, "properties": {"repobilityId": "83a3d979cd911193", "scanner": "scanner-primary", "fingerprint": "9376e28752b23862", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9677fc075f16fc3d", "level": "error", "message": {"text": "Dangling fetch: GET /api/purchase-orders/${poId}/${endpoint} (client/src/pages/PurchaseOrderDetail.tsx:1082)"}, "properties": {"repobilityId": "03160616ce9bf15b", "scanner": "scanner-primary", "fingerprint": "9677fc075f16fc3d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-88dfec525d222eb9", "level": "error", "message": {"text": "Dangling fetch: POST /api/purchase-orders/${poId}/${endpoint} (client/src/pages/PurchaseOrderDetail.tsx:1422)"}, "properties": {"repobilityId": "340c98f2e0331e43", "scanner": "scanner-primary", "fingerprint": "88dfec525d222eb9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-65a03f0f4eaebaee", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/vendors?${params} (client/src/pages/VendorList.tsx:65)"}, "properties": {"repobilityId": "f657c8f4557ba4bf", "scanner": "scanner-primary", "fingerprint": "65a03f0f4eaebaee", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2d4672284b0f5211", "level": "error", "message": {"text": "Dangling fetch: POST /api/vendor/auth/login (client/src/lib/vendor-auth.tsx:88)"}, "properties": {"repobilityId": "0bff43d1ed2927ab", "scanner": "scanner-primary", "fingerprint": "2d4672284b0f5211", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7497ef1312fe570e", "level": "error", "message": {"text": "Dangling fetch: POST /api/vendor/auth/logout (client/src/lib/vendor-auth.tsx:108)"}, "properties": {"repobilityId": "88fd80ca62e3f693", "scanner": "scanner-primary", "fingerprint": "7497ef1312fe570e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7438863fe7b2adcc", "level": "error", "message": {"text": "Dangling fetch: POST /api/vendor/auth/register (client/src/lib/vendor-api.ts:26)"}, "properties": {"repobilityId": "9949d926d6257022", "scanner": "scanner-primary", "fingerprint": "7438863fe7b2adcc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-526e96e807107bc8", "level": "note", "message": {"text": "Unused endpoint: POST /api/shipstation/webhooks/ship-notify"}, "properties": {"repobilityId": "124ca708db262afa", "scanner": "scanner-primary", "fingerprint": "526e96e807107bc8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b1424b3fdb2e0a16", "level": "note", "message": {"text": "Unused endpoint: GET /api/ebay/webhooks/order"}, "properties": {"repobilityId": "ee30c472ef10bd33", "scanner": "scanner-primary", "fingerprint": "b1424b3fdb2e0a16", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d4208a809ef6494a", "level": "note", "message": {"text": "Unused endpoint: POST /api/ebay/webhooks/order"}, "properties": {"repobilityId": "adf2b2b008ce4095", "scanner": "scanner-primary", "fingerprint": "d4208a809ef6494a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1ef6347c08aed48b", "level": "note", "message": {"text": "Unused endpoint: POST /api/admin/ebay/reingest"}, "properties": {"repobilityId": "7e500d48c1b8a95e", "scanner": "scanner-primary", "fingerprint": "1ef6347c08aed48b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c61f51b02928ba2d", "level": "note", "message": {"text": "Unused endpoint: GET /api/path"}, "properties": {"repobilityId": "beec1986aa73e375", "scanner": "scanner-primary", "fingerprint": "c61f51b02928ba2d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c7f4bfeaca98b795", "level": "note", "message": {"text": "Unused endpoint: USE /prefix"}, "properties": {"repobilityId": "6c2997707282649f", "scanner": "scanner-primary", "fingerprint": "c7f4bfeaca98b795", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7e79314830906ef4", "level": "note", "message": {"text": "Unused endpoint: GET /path"}, "properties": {"repobilityId": "e4742f80a91fd9b9", "scanner": "scanner-primary", "fingerprint": "7e79314830906ef4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7822abfd4e7e14aa", "level": "note", "message": {"text": "Unused endpoint: POST /api/dropship/shipping/quote"}, "properties": {"repobilityId": "1bf7e3c6d7e34d50", "scanner": "scanner-primary", "fingerprint": "7822abfd4e7e14aa", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8db8e63c016ca43f", "level": "note", "message": {"text": "Unused endpoint: GET /api/dropship/admin/order-intake"}, "properties": {"repobilityId": "c1fce984b624f154", "scanner": "scanner-primary", "fingerprint": "8db8e63c016ca43f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9380abc64053191e", "level": "note", "message": {"text": "Unused endpoint: GET /api/dropship/admin/order-intake/:intakeId"}, "properties": {"repobilityId": "389fedd84d2a09c7", "scanner": "scanner-primary", "fingerprint": "9380abc64053191e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1b9dda3e12df42b3", "level": "note", "message": {"text": "Unused endpoint: POST /api/dropship/admin/order-intake/:intakeId/process"}, "properties": {"repobilityId": "5ba5b1615fea6954", "scanner": "scanner-primary", "fingerprint": "1b9dda3e12df42b3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-36083a5770832b8f", "level": "note", "message": {"text": "Unused endpoint: POST /api/dropship/admin/order-intake/:intakeId/retry"}, "properties": {"repobilityId": "3c0fa80f382f07a6", "scanner": "scanner-primary", "fingerprint": "36083a5770832b8f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-32271d74c5783bac", "level": "note", "message": {"text": "Unused endpoint: POST /api/dropship/admin/order-intake/:intakeId/retry-cancellation"}, "properties": {"repobilityId": "bff30f5ea0d18bc6", "scanner": "scanner-primary", "fingerprint": "32271d74c5783bac", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fb9eb9d879c2f29e", "level": "note", "message": {"text": "Unused endpoint: POST /api/dropship/admin/order-intake/:intakeId/retry-wms-sync"}, "properties": {"repobilityId": "f43d63f76b777550", "scanner": "scanner-primary", "fingerprint": "fb9eb9d879c2f29e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cf589c812a32fb81", "level": "note", "message": {"text": "Unused endpoint: POST /api/dropship/admin/order-intake/:intakeId/exception"}, "properties": {"repobilityId": "f6b7f756b872b712", "scanner": "scanner-primary", "fingerprint": "cf589c812a32fb81", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-af2e81e4c0c9f5e9", "level": "note", "message": {"text": "Unused endpoint: GET /api/dropship/catalog/selection-rules"}, "properties": {"repobilityId": "05600435ecab75d8", "scanner": "scanner-primary", "fingerprint": "af2e81e4c0c9f5e9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-12da847ab1a4af50", "level": "note", "message": {"text": "Unused endpoint: PUT /api/dropship/catalog/selection-rules"}, "properties": {"repobilityId": "cc9c5107aaa510ae", "scanner": "scanner-primary", "fingerprint": "12da847ab1a4af50", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7fc863b6e2394f1e", "level": "note", "message": {"text": "Unused endpoint: GET /api/dropship/catalog"}, "properties": {"repobilityId": "e5c37738dfbb80a1", "scanner": "scanner-primary", "fingerprint": "7fc863b6e2394f1e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a24ab5663e014a8a", "level": "note", "message": {"text": "Unused endpoint: POST /api/dropship/auth/bootstrap/start"}, "properties": {"repobilityId": "ed6c61d5324cc1f0", "scanner": "scanner-primary", "fingerprint": "a24ab5663e014a8a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-91eb1145e8a60930", "level": "note", "message": {"text": "Unused endpoint: POST /api/dropship/auth/bootstrap/complete"}, "properties": {"repobilityId": "9164f57426630432", "scanner": "scanner-primary", "fingerprint": "91eb1145e8a60930", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a95b15fbec16fe1c", "level": "note", "message": {"text": "Unused endpoint: POST /api/dropship/auth/login/password"}, "properties": {"repobilityId": "750ccc5ed4d8b617", "scanner": "scanner-primary", "fingerprint": "a95b15fbec16fe1c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-70e0b67e1107011c", "level": "note", "message": {"text": "Unused endpoint: POST /api/dropship/auth/login/passkey/start"}, "properties": {"repobilityId": "1748c6ed43aa9d24", "scanner": "scanner-primary", "fingerprint": "70e0b67e1107011c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4905bc235cd533dc", "level": "note", "message": {"text": "Unused endpoint: POST /api/dropship/auth/login/passkey/complete"}, "properties": {"repobilityId": "706599d5bbe9811e", "scanner": "scanner-primary", "fingerprint": "4905bc235cd533dc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-50095a10e0dff328", "level": "note", "message": {"text": "Unused endpoint: POST /api/dropship/auth/logout"}, "properties": {"repobilityId": "7629730986d67047", "scanner": "scanner-primary", "fingerprint": "50095a10e0dff328", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5aea7d17d7f12dff", "level": "note", "message": {"text": "Unused endpoint: GET /api/dropship/auth/me"}, "properties": {"repobilityId": "4d492324cc49251b", "scanner": "scanner-primary", "fingerprint": "5aea7d17d7f12dff", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-56591690778c3c20", "level": "note", "message": {"text": "Unused endpoint: POST /api/dropship/auth/passkeys/register/start"}, "properties": {"repobilityId": "10d7839d9ca9fa8f", "scanner": "scanner-primary", "fingerprint": "56591690778c3c20", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ba8e1b87e3ef90af", "level": "note", "message": {"text": "Unused endpoint: POST /api/dropship/auth/passkeys/register/complete"}, "properties": {"repobilityId": "f5d12248c778d4db", "scanner": "scanner-primary", "fingerprint": "ba8e1b87e3ef90af", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6c7edb7ddf5d513e", "level": "note", "message": {"text": "Unused endpoint: POST /api/dropship/auth/sensitive-actions/challenge/start"}, "properties": {"repobilityId": "7eefef8e7fdeb560", "scanner": "scanner-primary", "fingerprint": "6c7edb7ddf5d513e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2c9170ef6bbdac9a", "level": "note", "message": {"text": "Unused endpoint: POST /api/dropship/auth/sensitive-actions/challenge/verify"}, "properties": {"repobilityId": "2d76628bdcd43a09", "scanner": "scanner-primary", "fingerprint": "2c9170ef6bbdac9a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b63675144e9042c1", "level": "note", "message": {"text": "Unused endpoint: POST /api/dropship/auth/sensitive-actions/passkey/start"}, "properties": {"repobilityId": "15f34e6be7788f95", "scanner": "scanner-primary", "fingerprint": "b63675144e9042c1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-96b88934de83527d", "level": "note", "message": {"text": "Unused endpoint: POST /api/dropship/auth/sensitive-actions/passkey/verify"}, "properties": {"repobilityId": "5a2fc6939074c3f9", "scanner": "scanner-primary", "fingerprint": "96b88934de83527d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1737b58854403c2b", "level": "note", "message": {"text": "Unused endpoint: POST /api/dropship/listings/preview"}, "properties": {"repobilityId": "b4f9aad9a40d37ef", "scanner": "scanner-primary", "fingerprint": "1737b58854403c2b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-82e30396d3fed69d", "level": "note", "message": {"text": "Unused endpoint: POST /api/dropship/listing-push-jobs"}, "properties": {"repobilityId": "2647d6b11683aa5b", "scanner": "scanner-primary", "fingerprint": "82e30396d3fed69d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ca439d73f63f3180", "level": "note", "message": {"text": "Unused endpoint: GET /api/dropship/settings"}, "properties": {"repobilityId": "32a7a967f6ba190f", "scanner": "scanner-primary", "fingerprint": "ca439d73f63f3180", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7cd10b8349427925", "level": "note", "message": {"text": "Unused endpoint: GET /api/dropship/admin/ops/overview"}, "properties": {"repobilityId": "91818756b6a12978", "scanner": "scanner-primary", "fingerprint": "7cd10b8349427925", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-223b1aee3c6d94a3", "level": "note", "message": {"text": "Unused endpoint: GET /api/dropship/admin/audit-events"}, "properties": {"repobilityId": "877aaed2d09763e4", "scanner": "scanner-primary", "fingerprint": "223b1aee3c6d94a3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-21576c5e72bfd7a0", "level": "note", "message": {"text": "Unused endpoint: GET /api/dropship/admin/dogfood-readiness"}, "properties": {"repobilityId": "34a5089462ae3af7", "scanner": "scanner-primary", "fingerprint": "21576c5e72bfd7a0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5c0c53c220af89f2", "level": "note", "message": {"text": "Unused endpoint: GET /api/dropship/admin/dogfood-smoke"}, "properties": {"repobilityId": "a7fad3a6bc61bd25", "scanner": "scanner-primary", "fingerprint": "5c0c53c220af89f2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-91c6d1703c5b4f01", "level": "note", "message": {"text": "Unused endpoint: GET /api/dropship/admin/dogfood-launch-status"}, "properties": {"repobilityId": "3418a8146e2a31fe", "scanner": "scanner-primary", "fingerprint": "91c6d1703c5b4f01", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c2bccd2ba6e1e7a5", "level": "note", "message": {"text": "Unused endpoint: POST /api/dropship/webhooks/shopify/orders/paid"}, "properties": {"repobilityId": "cfb3496ddcd969a9", "scanner": "scanner-primary", "fingerprint": "c2bccd2ba6e1e7a5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-033fc29dae0a72e4", "level": "note", "message": {"text": "Unused endpoint: POST /api/dropship/webhooks/shopify/orders/create"}, "properties": {"repobilityId": "518b300fb96727fb", "scanner": "scanner-primary", "fingerprint": "033fc29dae0a72e4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3e0dd1a43d3361fd", "level": "note", "message": {"text": "Unused endpoint: POST /api/dropship/webhooks/shopify/app/uninstalled"}, "properties": {"repobilityId": "35c78cc181648daf", "scanner": "scanner-primary", "fingerprint": "3e0dd1a43d3361fd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f9d473dda1be4d4f", "level": "note", "message": {"text": "Unused endpoint: GET /api/dropship/store-connections"}, "properties": {"repobilityId": "59522b31bc7b6f94", "scanner": "scanner-primary", "fingerprint": "f9d473dda1be4d4f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a3620bb11f3ddc76", "level": "note", "message": {"text": "Unused endpoint: POST /api/dropship/store-connections/oauth/start"}, "properties": {"repobilityId": "ab6034caa23883ab", "scanner": "scanner-primary", "fingerprint": "a3620bb11f3ddc76", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6e90bc8ef7c88805", "level": "note", "message": {"text": "Unused endpoint: GET /api/dropship/store-connections/oauth/callback"}, "properties": {"repobilityId": "1c2ff4ce6d83a67c", "scanner": "scanner-primary", "fingerprint": "6e90bc8ef7c88805", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9fbf994dc076b9e0", "level": "note", "message": {"text": "Unused endpoint: POST /api/dropship/store-connections/:storeConnectionId/disconnect"}, "properties": {"repobilityId": "65d29dfe1a90f9a9", "scanner": "scanner-primary", "fingerprint": "9fbf994dc076b9e0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fc4fdc05b953ab70", "level": "note", "message": {"text": "Unused endpoint: GET /api/dropship/admin/oms-channel-config"}, "properties": {"repobilityId": "6f8317fb96e5e66d", "scanner": "scanner-primary", "fingerprint": "fc4fdc05b953ab70", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e4b2769468f7b8fc", "level": "note", "message": {"text": "Unused endpoint: PUT /api/dropship/admin/oms-channel-config"}, "properties": {"repobilityId": "29255eed47982725", "scanner": "scanner-primary", "fingerprint": "e4b2769468f7b8fc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f32220383ff7f9bd", "level": "note", "message": {"text": "Unused endpoint: POST /api/dropship/admin/oms-channel-config/default-source"}, "properties": {"repobilityId": "41d8090e7cea4b37", "scanner": "scanner-primary", "fingerprint": "f32220383ff7f9bd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-782f917adca1cc64", "level": "note", "message": {"text": "Unused endpoint: POST /api/dropship/admin/worker-sweeps/:worker/run"}, "properties": {"repobilityId": "ed7e954efccdf414", "scanner": "scanner-primary", "fingerprint": "782f917adca1cc64", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}