{"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-2b6066abb92e6364", "name": "Stray `console.log` in TS/JS \u2014 test-orcid-popup.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-orcid-popup.js: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-7cd9d93fc9b25ded", "name": "Stray `console.log` in TS/JS \u2014 fix-remaining-errors.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 fix-remaining-errors.js: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-a05f014379daff81", "name": "Stray `console.log` in TS/JS \u2014 test-live-search-quality.js:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-live-search-quality.js:18"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa13b6a13699879f", "name": "Stray `console.log` in TS/JS \u2014 test-enterprise-search-v4.js:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-enterprise-search-v4.js:18"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cc136b1982920dd6", "name": "Stray `console.log` in TS/JS \u2014 test-phase-10-92-e2e.js:172", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-phase-10-92-e2e.js:172"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-87de7bb8bf98e9ca", "name": "Stray `console.log` in TS/JS \u2014 test-literature-api.js:95", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-literature-api.js:95"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49944661f096b81f", "name": "Stray `console.log` in TS/JS \u2014 phase-6.94-final-zero.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 phase-6.94-final-zero.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-0c2a558d52fd8429", "name": "Stray `console.log` in TS/JS \u2014 diagnostic-token-inspection.js:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 diagnostic-token-inspection.js:13"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ef6c5afd62e90c46", "name": "Stray `console.log` in TS/JS \u2014 test-semantic-scholar-direct.js:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-semantic-scholar-direct.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-3d36c3753e1dae47", "name": "Stray `console.log` in TS/JS \u2014 phase-6.94-layer3-enterprise.js:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 phase-6.94-layer3-enterprise.js:68"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-16ec5a7750c0a970", "name": "Stray `console.log` in TS/JS \u2014 test-all-sources-backend.js:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-all-sources-backend.js:45"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-27f85d17683e449d", "name": "Stray `console.log` in TS/JS \u2014 final-check.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 final-check.js: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-cb36fb17639385de", "name": "Stray `console.log` in TS/JS \u2014 test-paper-counts.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-paper-counts.js: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-952cf24d0e14e969", "name": "Stray `console.log` in TS/JS \u2014 test-familiarization-fulltext.js:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-familiarization-fulltext.js:32"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f0083d733722c51f", "name": "Stray `console.log` in TS/JS \u2014 final-zero-errors.js:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 final-zero-errors.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-0258699864613921", "name": "Stray `console.log` in TS/JS \u2014 phase-6.94-layer4-final.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 phase-6.94-layer4-final.js: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-bc92612a3cb379c7", "name": "Stray `console.log` in TS/JS \u2014 test-enrichment-direct.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-enrichment-direct.js:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0ccfbbefebed9616", "name": "Stray `console.log` in TS/JS \u2014 test-login-flow.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-login-flow.js: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-27511eb37218825f", "name": "Stray `console.log` in TS/JS \u2014 test-e2e-scenarios.js:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-e2e-scenarios.js:66"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-45c6a29557237d82", "name": "Stray `console.log` in TS/JS \u2014 test-source-aggregation.js:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-source-aggregation.js: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-9b63549f63cf68b3", "name": "Stray `console.log` in TS/JS \u2014 test-smart-resolver.js:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-smart-resolver.js: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-f364aed256bf42bc", "name": "Stray `console.log` in TS/JS \u2014 fix-typescript-errors.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 fix-typescript-errors.js: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-c120fd1f459e1ba2", "name": "Stray `console.log` in TS/JS \u2014 test-search-metadata.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-search-metadata.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-0efdd5c7a3b804b1", "name": "Stray `console.log` in TS/JS \u2014 test-search-quality-fixes.js:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-search-quality-fixes.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-9021f8ea51e259ce", "name": "Stray `console.log` in TS/JS \u2014 test-search-engine-complete.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-search-engine-complete.js:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-05f7b0fb952e81dc", "name": "Stray `console.log` in TS/JS \u2014 check-errors.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check-errors.js:5"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-60ac7893d9d83a35", "name": "Stray `console.log` in TS/JS \u2014 test-week2-logic.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-week2-logic.js: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-1b6998cbb5d71e28", "name": "Stray `console.log` in TS/JS \u2014 test-lenient-scoring.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-lenient-scoring.js:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e41768151fe3f1a1", "name": "Stray `console.log` in TS/JS \u2014 test-improvement-cap-e2e-simple.js:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-improvement-cap-e2e-simple.js:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3c13b98ac4fa69dc", "name": "Stray `console.log` in TS/JS \u2014 phase-6.94-layer2-fix.js:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 phase-6.94-layer2-fix.js:51"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6fc066e493245767", "name": "Stray `console.log` in TS/JS \u2014 find-search-logic.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 find-search-logic.js: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-8d0092eb814fa7c7", "name": "Stray `console.log` in TS/JS \u2014 test-fulltext-edge-cases.js:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-fulltext-edge-cases.js: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-54e507a900df5ebf", "name": "Stray `console.log` in TS/JS \u2014 test-literature-search-e2e.js:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-literature-search-e2e.js: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-2c463c9c07c0dfc1", "name": "Stray `console.log` in TS/JS \u2014 __tests__/literature-to-theme-extraction-flow.test.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 __tests__/literature-to-theme-extraction-flow.test.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-aa9b38a682700e48", "name": "Stray `console.log` in TS/JS \u2014 frontend/test-ui-components.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/test-ui-components.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-1cd81c68d36e56ac", "name": "Stray `console.log` in TS/JS \u2014 frontend/__tests__/e2e-study-creation.test.tsx:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/__tests__/e2e-study-creation.test.tsx: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-f1b75038822b0d2d", "name": "Stray `console.log` in TS/JS \u2014 frontend/tests/image-upload-test-suite.js:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/tests/image-upload-test-suite.js:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8450ca8f45fd7378", "name": "Stray `console.log` in TS/JS \u2014 frontend/tests/console-cancellation-test.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/tests/console-cancellation-test.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-e76f6c22d753fb68", "name": "Stray `console.log` in TS/JS \u2014 frontend/tests/console-test-suite.js:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/tests/console-test-suite.js:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aaf4c6c3575c64b2", "name": "Stray `console.log` in TS/JS \u2014 frontend/tests/request-cancellation-e2e.test.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/tests/request-cancellation-e2e.test.ts:53"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f2eaee9ca39bb2b0", "name": "Stray `console.log` in TS/JS \u2014 frontend/test/utils/test-helpers.ts:263", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/test/utils/test-helpers.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-cd3aca90af9275e9", "name": "Stray `console.log` in TS/JS \u2014 frontend/scripts/fix-unused-vars.js:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/scripts/fix-unused-vars.js:30"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-26165d291b0cc21a", "name": "Stray `console.log` in TS/JS \u2014 frontend/scripts/zero-error-setup.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/scripts/zero-error-setup.js: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-517541646a92fde0", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/components/study-creation/ParticipantPreview.tsx:147", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/components/study-creation/ParticipantPreview.tsx:147"}, "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-15f64ae601868405", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ai/DrOnionChatPanel.tsx:1416", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ai/DrOnionChatPanel.tsx:1416"}, "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-5b8536412f7eae59", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ai/SourcePassageSidebar.tsx:113", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ai/SourcePassageSidebar.tsx:113"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6df854a86d4a07ec", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ai/SmartValidator.tsx:845", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ai/SmartValidator.tsx:845"}, "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-81ca744efb002818", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ai/DrOnionContextPanel.tsx:180", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ai/DrOnionContextPanel.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-f49b951994925cbc", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ai/DrOnionMentionAutocomplete.tsx:202", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ai/DrOnionMentionAutocomplete.tsx:202"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-95252c47db9479b4", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ai/ToolConfirmationCard.tsx:166", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ai/ToolConfirmationCard.tsx:166"}, "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-86cd4f1e16c13270", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ai/CitationChip.tsx:119", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ai/CitationChip.tsx:119"}, "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-da536f0594db3efd", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ai/DrOnionActionExecutor.tsx:244", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ai/DrOnionActionExecutor.tsx:244"}, "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-6c1ae14862185cdd", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/components/hub/sections/VisualizationCenter.tsx:648", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/components/hub/sections/VisualizationCenter.tsx:648"}, "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-020d3b695963af53", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/navigation/UserProfileMenu.tsx:135", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/navigation/UserProfileMenu.tsx:135"}, "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-51d9016f4fa7de28", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/navigation/AppBar.tsx:157", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/navigation/AppBar.tsx:157"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3f0802d9620aa320", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/navigation/UnifiedSidebar.tsx:100", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/navigation/UnifiedSidebar.tsx:100"}, "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-9728834685b3c9d8", "name": "TODO/FIXME marker in shipping code \u2014 frontend/components/navigation/TabletSidebar.tsx:27", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/components/navigation/TabletSidebar.tsx:27"}, "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-8fa9ceb82d3c71a1", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/navigation/Breadcrumbs.tsx:248", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/navigation/Breadcrumbs.tsx:248"}, "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-cca280aa761a921d", "name": "TODO/FIXME marker in shipping code \u2014 frontend/components/navigation/PhaseProgressIndicator.tsx:17", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/components/navigation/PhaseProgressIndicator.tsx:17"}, "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-7e824b265152a1f2", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/questionnaire/QuestionnaireBuilderPro.tsx:187", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/questionnaire/QuestionnaireBuilderPro.tsx:187"}, "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-4064a4e95a3e2a3f", "name": "TODO/FIXME marker in shipping code \u2014 frontend/components/questionnaire/ScreeningQuestionnaire.tsx:63", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/components/questionnaire/ScreeningQuestionnaire.tsx:63"}, "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-b2371a54e1562906", "name": "React Flow <MiniMap> without dark background \u2014 frontend/components/questionnaire/VisualSkipLogicBuilder.tsx:322", "shortDescription": {"text": "React Flow <MiniMap> without dark background \u2014 frontend/components/questionnaire/VisualSkipLogicBuilder.tsx:322"}, "fullDescription": {"text": "A bare <MiniMap> renders with the vendor's white default in dark themes. Wrap the canvas in a class that overrides `.react-flow__minimap` background, or pass an explicit `style`/`maskColor`/`bgColor`.\n\nWhy: P1 in CHECKLIST.md \u2014 vendor defaults bleed light through.\nRule id: fq.minimap.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5a172d96bed334ca", "name": "React Flow <Controls> without dark theming \u2014 frontend/components/questionnaire/VisualSkipLogicBuilder.tsx:321", "shortDescription": {"text": "React Flow <Controls> without dark theming \u2014 frontend/components/questionnaire/VisualSkipLogicBuilder.tsx:321"}, "fullDescription": {"text": "`<Controls>` ships with white buttons. Override `.react-flow__controls` and `.react-flow__controls-button` in your stylesheet or pass a styled wrapper.\n\nWhy: P1 in CHECKLIST.md \u2014 vendor defaults bleed light through.\nRule id: fq.controls.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-95790bb2469f6d84", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/questionnaire/ThemeImportModal.tsx:408", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/questionnaire/ThemeImportModal.tsx:408"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-999cc772df80dd22", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/questionnaire/ImportSourceSelector.tsx:254", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/questionnaire/ImportSourceSelector.tsx:254"}, "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-43dd0e6964cc9d9d", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/questionnaire/theme-import/ThemeSelector.tsx:10", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/questionnaire/theme-import/ThemeSelector.tsx:108"}, "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-1791a239b58779cb", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/questionnaire/mobile/MobileQuestionnaireWrapper", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/questionnaire/mobile/MobileQuestionnaireWrapper.tsx:329"}, "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-d224d34958cd34b3", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/questionnaire/logic/QuestionPoolManager.tsx:741", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/questionnaire/logic/QuestionPoolManager.tsx:741"}, "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-82bdafa5e3213669", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/components/ui/AutoPipelineToast.tsx:147", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/components/ui/AutoPipelineToast.tsx:147"}, "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-ba2d5581a441fc66", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/visualizations/dashboards/DashboardWidget.tsx:2", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/visualizations/dashboards/DashboardWidget.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-bcc0e934f55e5868", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/visualizations/dashboards/DashboardLayout.tsx:4", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/visualizations/dashboards/DashboardLayout.tsx:499"}, "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-f0c0481bee2278cd", "name": "Icon-only button without accessible name \u2014 frontend/components/visualizations/dashboards/WidgetLibrary.tsx:403", "shortDescription": {"text": "Icon-only button without accessible name \u2014 frontend/components/visualizations/dashboards/WidgetLibrary.tsx:403"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49b2b917bd306898", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/grid/AIGridDesignAssistant.tsx:575", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/grid/AIGridDesignAssistant.tsx:575"}, "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-91e2d0ad65302bc6", "name": "TODO/FIXME marker in shipping code \u2014 frontend/components/repository/AnnotationPanel.tsx:120", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/components/repository/AnnotationPanel.tsx:120"}, "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-d654e6a93383bbcb", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/repository/ResearchCorpusPanel.tsx:295", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/repository/ResearchCorpusPanel.tsx:295"}, "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-85361ea0e114af94", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/auto-trigger/AutoTriggerProgressToast.tsx:146", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/auto-trigger/AutoTriggerProgressToast.tsx:146"}, "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-f3dabf80a715bf94", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/components/literature/FullTextExcerptPanel.tsx:76", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/components/literature/FullTextExcerptPanel.tsx:76"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-29611a82eaa3acd7", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/EnhancedThemeExtractionProgress.tsx:", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/EnhancedThemeExtractionProgress.tsx:1240"}, "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-0dc63164ee4121e4", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/components/literature/TranscriptionsTab.tsx:359", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/components/literature/TranscriptionsTab.tsx:359"}, "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-9aa0705098b368a5", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/GeneratedSurveyPreview.tsx:273", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/GeneratedSurveyPreview.tsx:273"}, "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-623de275f8b9043f", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/InstagramVideoCard.tsx:222", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/InstagramVideoCard.tsx:222"}, "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-88c386477cbdd1ec", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/SessionResumeBanner.tsx:121", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/SessionResumeBanner.tsx:121"}, "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-d09684d2c0c26235", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/PipelineProgressDashboard.tsx:76", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/PipelineProgressDashboard.tsx:76"}, "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-8628d95114338602", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/SemanticBridgeDisplay.tsx:211", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/SemanticBridgeDisplay.tsx:211"}, "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-270447a0858f6969", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/CorpusManagementPanel.tsx:271", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/CorpusManagementPanel.tsx:271"}, "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-2c1b5c5af6432b4a", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/TikTokVideoCard.tsx:238", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/TikTokVideoCard.tsx:238"}, "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-cefbe32d833720db", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/SynthesisResultsPanel.tsx:111", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/SynthesisResultsPanel.tsx:111"}, "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-b77530c5e2c5a944", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/ExportButton.tsx:158", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/ExportButton.tsx:158"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9dc6857a012fa61a", "name": "Stray `console.log` in TS/JS \u2014 frontend/components/literature/citation-validation/CitationValidationPanel.tsx:591", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/components/literature/citation-validation/CitationValidationPanel.tsx:591"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-48b087bdcc5986b9", "name": "Stray `console.log` in TS/JS \u2014 frontend/components/literature/prisma/PRISMAChecklist.tsx:563", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/components/literature/prisma/PRISMAChecklist.tsx:563"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8f8cb7706fef01bd", "name": "Stray `console.log` in TS/JS \u2014 frontend/components/literature/prisma/PRISMAFlowDiagram.tsx:501", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/components/literature/prisma/PRISMAFlowDiagram.tsx:501"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a3d5ea722af99061", "name": "TODO/FIXME marker in shipping code \u2014 frontend/components/literature/prisma/__tests__/PRISMAFlowDiagram.export.test.tsx:4", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/components/literature/prisma/__tests__/PRISMAFlowDiagram.export.test.tsx:4"}, "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-5249ff202d2f9f7d", "name": "Stray `console.log` in TS/JS \u2014 frontend/components/literature/ai-research-question/AIResearchQuestionAssistant.tsx:1850", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/components/literature/ai-research-question/AIResearchQuestionAssistant.tsx:1850"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-92fb5fd8214145d8", "name": "TODO/FIXME marker in shipping code \u2014 frontend/components/literature/ai-research-question/__tests__/integration.test.tsx:", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/components/literature/ai-research-question/__tests__/integration.test.tsx:301"}, "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-d0bb6062ecf85914", "name": "Stray `console.log` in TS/JS \u2014 frontend/components/literature/ai-research-question/__tests__/integration.test.tsx:253", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/components/literature/ai-research-question/__tests__/integration.test.tsx:253"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-79143e3b2993bb6c", "name": "TODO/FIXME marker in shipping code \u2014 frontend/components/literature/ai-research-question/__tests__/AIResearchQuestionAss", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/components/literature/ai-research-question/__tests__/AIResearchQuestionAssistant.test.tsx:177"}, "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-199b71fc60d75bf5", "name": "Stray `console.log` in TS/JS \u2014 frontend/components/literature/sentence-provenance/SentenceProvenanceViewer.tsx:666", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/components/literature/sentence-provenance/SentenceProvenanceViewer.tsx:666"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1cdfa02714f751ea", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/progress/ThemeExtractionProgress.tsx", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/progress/ThemeExtractionProgress.tsx:317"}, "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-04f19fee080598da", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/evidence/RoBV1Strip.tsx:149", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/evidence/RoBV1Strip.tsx:149"}, "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-6219d11e22d4a9aa", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/evidence/UnifiedEvidencePanel.tsx:23", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/evidence/UnifiedEvidencePanel.tsx:238"}, "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-b61b9766082bcf3b", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/evidence/StudySnapshotChip.tsx:172", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/evidence/StudySnapshotChip.tsx:172"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e0751e621ca96136", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/evidence/ThemeChip.tsx:143", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/evidence/ThemeChip.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-44d4894ee32c3fab", "name": "TODO/FIXME marker in shipping code \u2014 frontend/components/interpretation/ThemeExtractionPanel.tsx:42", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/components/interpretation/ThemeExtractionPanel.tsx:42"}, "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-9143d88e2ce65d2a", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/interpretation/RecommendationEngine.tsx:733", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/interpretation/RecommendationEngine.tsx:733"}, "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-67301f1fa167f9d0", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/interpretation/QuoteMiner.tsx:653", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/interpretation/QuoteMiner.tsx:653"}, "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-b8772688a426922d", "name": "TODO/FIXME marker in shipping code \u2014 frontend/components/interpretation/CrossFactorSynthesisPanel.tsx:47", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/components/interpretation/CrossFactorSynthesisPanel.tsx:47"}, "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-6df67737382bdb45", "name": "TODO/FIXME marker in shipping code \u2014 frontend/components/interpretation/FactorNarrativePanel.tsx:57", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/components/interpretation/FactorNarrativePanel.tsx:57"}, "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-688858ed0b76f4d0", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/stimuli/UploadProgressTracker.tsx:264", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/stimuli/UploadProgressTracker.tsx:264"}, "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-ebabb487c9443d9d", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/stimuli/StimuliUploadSystemV3.tsx:663", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/stimuli/StimuliUploadSystemV3.tsx:663"}, "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-d0aa05c88565e844", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/stimuli/StimuliUploadSystem.tsx:383", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/stimuli/StimuliUploadSystem.tsx:383"}, "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-c0b56ee75037e5c6", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/EdgeProvenanceDrawer.tsx:221", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/EdgeProvenanceDrawer.tsx:221"}, "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-a0b17e7bbcd0a828", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/KnowledgeMapShell.tsx:1319", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/KnowledgeMapShell.tsx:1319"}, "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-f59b333cdad72e80", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/CorpusSnapshotPanel.tsx:366", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/CorpusSnapshotPanel.tsx:366"}, "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-c9160211f899bd39", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/panels/MetricsPanel.tsx:635", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/panels/MetricsPanel.tsx:635"}, "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-6affed186eb4c7ce", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/panels/NodeDetailPanel.tsx:822", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/panels/NodeDetailPanel.tsx:822"}, "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-cc0bc079754d49b8", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/panels/FilterPanel.tsx:446", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/panels/FilterPanel.tsx:446"}, "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-b45d4f04994ddbaf", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/panels/ClusterBrowserPanel.tsx:1108", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/panels/ClusterBrowserPanel.tsx:1108"}, "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-bbf378cd159b9c17", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/panels/ProductivityDashboard.tsx:663", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/panels/ProductivityDashboard.tsx:663"}, "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-f9faf0f057fc9c22", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/panels/CitationTraversalPanel.tsx:234", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/panels/CitationTraversalPanel.tsx:234"}, "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-369cc0c0fcacba60", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/panels/CommunityDetailPanel.tsx:409", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/panels/CommunityDetailPanel.tsx:409"}, "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-95f1c943c01f6546", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/panels/InterdisciplinarityPanel.tsx:7", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/panels/InterdisciplinarityPanel.tsx:712"}, "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-a455be3516bdcd83", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/renderers/NodeTooltip.tsx:180", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/renderers/NodeTooltip.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-cec062c0e76507d8", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/renderers/CommunityTreemap.tsx:706", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/renderers/CommunityTreemap.tsx:706"}, "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-fe6106f65317ac6a", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/share/ShareLinkManager.tsx:192", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/share/ShareLinkManager.tsx:192"}, "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-f184e566e51d3133", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/toolbar/PurposeSwitcher.tsx:190", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/toolbar/PurposeSwitcher.tsx:190"}, "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-ce80f4b3f48bcdb2", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/toolbar/DiscoverNav.tsx:264", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/toolbar/DiscoverNav.tsx:264"}, "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-9021bd8ff1a17f65", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/toolbar/CrossViewNav.tsx:47", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/toolbar/CrossViewNav.tsx:47"}, "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-760a71bdfc72aaf2", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/views/FieldMapView.tsx:1995", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/views/FieldMapView.tsx:1995"}, "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-ef5a424e25d146e6", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/views/gap-dashboard/ControversyExplor", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/views/gap-dashboard/ControversyExplorer.tsx:97"}, "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-7d6db999bc8b1ea4", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/multimedia/MultiMediaThemeExplorer.tsx:377", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/multimedia/MultiMediaThemeExplorer.tsx:377"}, "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-915ff997abe6ab66", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/app/canonical-host-script.tsx:51", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/app/canonical-host-script.tsx:51"}, "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-cbe1ba99049a73c3", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/app/theme-script.tsx:17", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/app/theme-script.tsx:17"}, "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-87c63c26c7072c99", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/app/purpose-tint-script.tsx:69", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/app/purpose-tint-script.tsx:69"}, "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-46b3c7e9feb373fb", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/preview-ai-suggestions/page.tsx:227", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/preview-ai-suggestions/page.tsx:227"}, "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-e5b21956924b1f23", "name": "TODO/FIXME marker in shipping code \u2014 frontend/app/(participant)/study/[surveyId]/layout.tsx:145", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/app/(participant)/study/[surveyId]/layout.tsx:145"}, "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-41efa12b2c1356e1", "name": "TODO/FIXME marker in shipping code \u2014 frontend/app/(participant)/study/post-survey/page.tsx:136", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/app/(participant)/study/post-survey/page.tsx:136"}, "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-dd4c334caba22a63", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/dashboard/page.tsx:590", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/dashboard/page.tsx:590"}, "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-c8a54aaaa35a55dc", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/studies/create/page.tsx:1506", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/studies/create/page.tsx:1506"}, "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-a0df1215299d31a8", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/meta-analysis/MetaAnalysisPanel.", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/meta-analysis/MetaAnalysisPanel.tsx:190"}, "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-ea71c1233d9e1f9c", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/meta-analysis/ForestPlotChart.ts", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/meta-analysis/ForestPlotChart.tsx:233"}, "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-17280ff4d43a705c", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/meta-analysis/page.tsx:113", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/meta-analysis/page.tsx:113"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1415b5f2ccb6b43f", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/meta-analysis/PublicationBiasPan", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/meta-analysis/PublicationBiasPanel.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-82e0e58d3db0cd8f", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/cross-study/components/StudySele", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/cross-study/components/StudySelector.tsx:220"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-92d75f1777276880", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/PRISMAScre", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/PRISMAScreeningLog.tsx:269"}, "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-bfa81d255208a067", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/Bibliometr", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/BibliometricInsights.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-fd782a300e38a84f", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/SearchArti", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/SearchArtifactVerifyPanel.tsx:299"}, "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-291becc66ee90f1c", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/Enrichment", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/EnrichmentProgressBar.tsx:65"}, "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-d4222049f41843fd", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/AddByIdent", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/AddByIdentifierModal.tsx:366"}, "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-d715db5cf31205b5", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/PaperCard.", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/PaperCard.tsx:328"}, "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-07edafd907e2f19c", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/ReferenceS", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/ReferenceSidebar.tsx:242"}, "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-8a2c7b0e3eb4bbfb", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/SmartColle", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/SmartCollectionEditor.tsx:261"}, "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-04e800a730bf67ba", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/PaperDetai", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/PaperDetailDrawer.tsx:121"}, "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-c5ed64998509b657", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/ClaimSearc", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/ClaimSearchResults.tsx:151"}, "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-7ffc15e28f7e4331", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/tabs/LibraryTabConten", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/tabs/LibraryTabContent.tsx:228"}, "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-8246652f74f5a358", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/themes/components/ThemeSidebar.t", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/themes/components/ThemeSidebar.tsx:189"}, "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-62d2a1f390b5f550", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/themes/components/ThemeMergeDial", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/themes/components/ThemeMergeDialog.tsx:158"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-523837f1375a1d01", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/themes/components/ThemeEvidenceP", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/themes/components/ThemeEvidencePanel.tsx:110"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9bfa57fe1eecb6cb", "name": "TODO/FIXME marker in shipping code \u2014 frontend/app/(researcher)/discover/literature/error.tsx:36", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/app/(researcher)/discover/literature/error.tsx:36"}, "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-a22d8033bcbb776c", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/prisma/page.tsx:268", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/prisma/page.tsx:268"}, "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-6551cf0032884139", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/CodeHighli", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/CodeHighlighter.tsx:391"}, "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-352d4054429bfe1d", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/PrepareFor", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/PrepareForAnalysisCTA.tsx:136"}, "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-45b642641ba49625", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/PaperCard.", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/PaperCard.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-d2a6a98685efe126", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/PurposeBan", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/PurposeBanner.tsx:173"}, "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-e6378ceaa26a5533", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/UnifiedSea", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/UnifiedSearchHero.tsx:5361"}, "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-607714e1872e10c8", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/ShareStudy", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/ShareStudyPanel.tsx:113"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-37e3795432b21bcf", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/Institutio", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/InstitutionSelector.tsx:151"}, "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-ff0113f4dd093fe7", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/CorpusSnap", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/CorpusSnapshotCTA.tsx:26"}, "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-aaedb4ce6cbdd26a", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/ResearchAc", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/ResearchAccessMenu.tsx:700"}, "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-8b1f6229dffb4581", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/paper-card", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/paper-card/PaperCardErrorBoundary.tsx:133"}, "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-8898c8d63043c09a", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/paper-card", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/paper-card/PaperMetadata.tsx:130"}, "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-3a6ce8ee6ded5dda", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/q-methodol", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/q-methodology/ThemeDistributionChart.tsx:106"}, "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-dbbba1b62005b4da", "name": "TODO/FIXME marker in shipping code \u2014 frontend/app/(researcher)/discover/literature/components/q-methodology/ControversyC", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/app/(researcher)/discover/literature/components/q-methodology/ControversyCoveragePanel.tsx:539"}, "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-45ada1a89d28bf15", "name": "Stray `console.log` in TS/JS \u2014 frontend/app/(researcher)/discover/literature/components/q-methodology/QSortInstructionBu", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/app/(researcher)/discover/literature/components/q-methodology/QSortInstructionBuilder.tsx:127"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3623f1b51bab6d14", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/q-methodol", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/q-methodology/ThemeCoherencePanel.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-3907e74c73db5199", "name": "TODO/FIXME marker in shipping code \u2014 frontend/app/(researcher)/discover/literature/components/q-methodology/__tests__/Th", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/app/(researcher)/discover/literature/components/q-methodology/__tests__/ThemeDiversityPanel.test.tsx:592"}, "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-84dbcff1566cb525", "name": "TODO/FIXME marker in shipping code \u2014 frontend/app/(researcher)/discover/literature/components/q-methodology/QSortInstruc", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/app/(researcher)/discover/literature/components/q-methodology/QSortInstructionBuilder/Step4_PreviewExport.tsx:207"}, "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-b15000529ff17819", "name": "TODO/FIXME marker in shipping code \u2014 frontend/app/(researcher)/discover/literature/components/social-media/TikTokSearchS", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/app/(researcher)/discover/literature/components/social-media/TikTokSearchSection.tsx:117"}, "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-1b0085df0c287526", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/PipelineOr", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/SearchPipelineOrchestra.tsx:221"}, "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-b39e15cabd50e220", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/PipelineOr", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/MinimizedPipelineBar.tsx:55"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-584882ecaf56b485", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/PipelineOr", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/PipelineSummaryBanner.tsx:142"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-50c4b5df8ac661ef", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/PipelineOr", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/StageDetailPanel.tsx:409"}, "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-228c490b70dfea46", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/PipelineOr", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/MethodologyReport.tsx:768"}, "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-5a7f23eeff2fa554", "name": "TODO/FIXME marker in shipping code \u2014 frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/hooks/__", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/hooks/__tests__/useCountStabilization.test.ts:108"}, "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-45b7efaf6b1a7528", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/citations/page.tsx:62", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/citations/page.tsx:620"}, "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-1ad0bea3c95335f6", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/coding/components/Cod", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/coding/components/CodeCooccurrenceView.tsx:242"}, "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-39f7c1a6cc1b9e5c", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/coding/components/Cod", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/coding/components/CodeFrequencyMatrix.tsx:197"}, "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-49b620db3801e30e", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/risk-of-bias/page.tsx", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/risk-of-bias/page.tsx:214"}, "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-016280548a421f19", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/screening/page.tsx:14", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/screening/page.tsx:1478"}, "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-9b23ed0309fa859c", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/transcriptions/page.t", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/transcriptions/page.tsx:238"}, "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-6d0f6c49fe2a5e03", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/collaboration/compone", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/collaboration/components/ConflictResolutionPanel.tsx:96"}, "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-b048bb56e3da939e", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/collaboration/compone", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/collaboration/components/ReliabilityDashboard.tsx:286"}, "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-bc23827551897850", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapEvolutionView", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapEvolutionView.tsx:408"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e2fb45073ccf2bf9", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapAuditDrawer.t", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapAuditDrawer.tsx:601"}, "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-f572826d90737884", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapSnapshotHisto", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapSnapshotHistory.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-064ea79ff0e7721c", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapRadar.tsx:253", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapRadar.tsx:253"}, "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-ea27d31b9e4606ca", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapRefinementFlo", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapRefinementFlow.tsx:1316"}, "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-1cf5cc3c35ab6682", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapForestPlot.ts", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapForestPlot.tsx:1180"}, "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-44500db6676c7799", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/ResultRunDetails", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/ResultRunDetailsDrawer.tsx:106"}, "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-cee283a4a3850568", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/TimeToSignalHero", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/TimeToSignalHero.tsx:495"}, "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-89ffde98d954f362", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapPortfolioView", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapPortfolioView.tsx:119"}, "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-7ba72c93bbf351f1", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapReviewPanel.t", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapReviewPanel.tsx:360"}, "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-5173047d3567d102", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/MinimizedGapPipe", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/MinimizedGapPipelineBar.tsx:69"}, "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-a6deb439150888a7", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapsPageHeader.t", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapsPageHeader.tsx:156"}, "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-9baf850183d1849f", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapLandscape.tsx", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapLandscape.tsx:796"}, "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-24eabb657fa024ec", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/PaperTracePanel.", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/PaperTracePanel.tsx:1757"}, "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-c5045291520d224d", "name": "TODO/FIXME marker in shipping code \u2014 frontend/app/(researcher)/discover/gaps/hooks/useGapAnalysisPipeline.ts:3356", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/app/(researcher)/discover/gaps/hooks/useGapAnalysisPipeline.ts:3356"}, "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-b3a45b9d67430cb2", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/home/page.tsx:496", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/home/page.tsx:496"}, "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-b1d1c7edda820c38", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/dev-landing-preview/page.tsx:392", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/dev-landing-preview/page.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-53062b32355b8c86", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/app/(researcher)/reports/[studyId]/page.tsx:547", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/app/(researcher)/reports/[studyId]/page.tsx:547"}, "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-7610983286a9d277", "name": "Stray `console.log` in TS/JS \u2014 frontend/lib/stores/__tests__/constants-parity.test.ts:361", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/lib/stores/__tests__/constants-parity.test.ts:361"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-54f09e1a526990e9", "name": "TODO/FIXME marker in shipping code \u2014 frontend/lib/api/services/analysis.service.ts:217", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/lib/api/services/analysis.service.ts:217"}, "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-139ed2876bba5bbc", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/lib/utils/sanitize-html.ts:318", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/lib/utils/sanitize-html.ts:318"}, "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-c92d518c63a261a3", "name": "Stray `console.log` in TS/JS \u2014 frontend/lib/viz/__tests__/perf-harness.test.ts:245", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/lib/viz/__tests__/perf-harness.test.ts:245"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-499b8f9fddf28606", "name": "TODO/FIXME marker in shipping code \u2014 frontend/lib/react-query/config.ts:386", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/lib/react-query/config.ts:386"}, "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-d79cec58a9c5f6ca", "name": "TODO/FIXME marker in shipping code \u2014 frontend/lib/hooks/useThemeApiHandlers.ts:562", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/lib/hooks/useThemeApiHandlers.ts:562"}, "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-a2b1f46d109edc3f", "name": "TODO/FIXME marker in shipping code \u2014 frontend/lib/services/search-suggestions.service.ts:1060", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/lib/services/search-suggestions.service.ts:1060"}, "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-d3eca81c164f5efd", "name": "TODO/FIXME marker in shipping code \u2014 frontend/lib/services/study-metrics.service.ts:80", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/lib/services/study-metrics.service.ts:80"}, "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-3b7c635fb037cf41", "name": "TODO/FIXME marker in shipping code \u2014 frontend/lib/services/auth-metrics.service.ts:183", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/lib/services/auth-metrics.service.ts:183"}, "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-342d9c7589282a1e", "name": "Stray `console.log` in TS/JS \u2014 frontend/lib/accessibility/__tests__/eslint-a11y-test.tsx:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/lib/accessibility/__tests__/eslint-a11y-test.tsx: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-5e92bf28a7e15157", "name": "TODO/FIXME marker in shipping code \u2014 frontend/hooks/useParticipantFlow.ts:538", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/hooks/useParticipantFlow.ts:538"}, "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-72f03687bd5fe4fd", "name": "Stray `console.log` in TS/JS \u2014 frontend/public/service-worker.js:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/public/service-worker.js:28"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1d56f68087cf8e78", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/rollback-testing.spec.ts:317", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/rollback-testing.spec.ts:317"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0c330c7361a4132a", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/manual-ai-suggestions-429-check.spec.ts:74", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/manual-ai-suggestions-429-check.spec.ts:74"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b8e3bbb459195e52", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/sgr-live-inspection.spec.ts:84", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/sgr-live-inspection.spec.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-6125cd3d434b8746", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/scientific-ux-proof.spec.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/scientific-ux-proof.spec.ts:32"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-093f09be17a183a3", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/real-proof.spec.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/real-proof.spec.ts:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-df66b9f0a6ba2f33", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/orcid-enterprise-flow.spec.ts:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/orcid-enterprise-flow.spec.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-555d75a0b9446b40", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/lit-to-km-pipeline.spec.ts:99", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/lit-to-km-pipeline.spec.ts:99"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-27769dc9f1743d50", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/particle-persist-refine.spec.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/particle-persist-refine.spec.ts:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-91269586156de590", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/search-hero-accessibility.spec.ts:108", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/search-hero-accessibility.spec.ts:108"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b05557d4086c398f", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/sgr-with-papers.spec.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/sgr-with-papers.spec.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-02e52ae264ce2796", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/load-testing.spec.ts:194", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/load-testing.spec.ts:194"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-16df145563116675", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/phase-10970-refinement-loop.spec.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/phase-10970-refinement-loop.spec.ts:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8d1e681c9a621162", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/auto-refresh-pipeline.spec.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/auto-refresh-pipeline.spec.ts:52"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-37281233b042a99e", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/source-retry-flow.spec.ts:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/source-retry-flow.spec.ts:58"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8cfe44328c9fd9de", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/moat-verification.spec.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/moat-verification.spec.ts:24"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a370f69a25678e49", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/orcid-login.spec.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/orcid-login.spec.ts:10"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6db27d0014555ca0", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/literature-page-smoke.spec.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/literature-page-smoke.spec.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-2bdb3db879200c76", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/theme-extraction-performance.spec.ts:247", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/theme-extraction-performance.spec.ts:247"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-db12f44982f51665", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/orcid-login-paper-fetch.spec.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/orcid-login-paper-fetch.spec.ts:53"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5ac773dab9bc3409", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/d1-truncation-banner.spec.ts:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/d1-truncation-banner.spec.ts:43"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-62c87ec7662f3afe", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gaps-page-full-audit.spec.ts:123", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gaps-page-full-audit.spec.ts:123"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cdd4917731e1bf1c", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/moat-complete-analysis.spec.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/moat-complete-analysis.spec.ts:21"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f3a1ee4f22592c5f", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/theme-extraction-error-injection.spec.ts:306", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/theme-extraction-error-injection.spec.ts:306"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6ead7180b6dd46f0", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/fresh-loop-proof.spec.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/fresh-loop-proof.spec.ts:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8540d441ee38097f", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/orcid-complete-dataflow.spec.ts:124", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/orcid-complete-dataflow.spec.ts:124"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aca200a700ced87b", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/global-setup.ts:199", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/global-setup.ts:199"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-90c46c7e475bae7d", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/orcid-full-flow.spec.ts:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/orcid-full-flow.spec.ts:58"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-670f62a3a5608671", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/references-export-dropdown.spec.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/references-export-dropdown.spec.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-e0db24d9a77fcbbb", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/cross-browser-theme-extraction.spec.ts:362", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/cross-browser-theme-extraction.spec.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-2db54d33385826b7", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/progressive-search-animation.spec.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/progressive-search-animation.spec.ts:50"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e37b77f13da4522b", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/decay-pill.spec.ts:191", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/decay-pill.spec.ts:191"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ce04f49cd8cac3ad", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/time-to-signal.spec.ts:454", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/time-to-signal.spec.ts:454"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c1f9d56deafef8e0", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/contradicting-evidence.spec.ts:248", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/contradicting-evidence.spec.ts:248"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e2c93e4a2510c9c1", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/forest-plot.spec.ts:248", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/forest-plot.spec.ts:248"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e2870af34cdeb5b5", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/runtime-contracts.spec.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/runtime-contracts.spec.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-5daa045c10d12b38", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/portfolio-matrix.spec.ts:335", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/portfolio-matrix.spec.ts:335"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-924ff7489b8626f0", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/ui-cold-load.spec.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/ui-cold-load.spec.ts:65"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2f84fdd2c502e9e4", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/reproducibility.spec.ts:435", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/reproducibility.spec.ts:435"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4a8d6232b581e6a5", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/wave6-ux-audit.spec.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/wave6-ux-audit.spec.ts:24"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b9fcd0ec6a75d460", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/count-consistency.spec.ts:115", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/count-consistency.spec.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-5a2d7e30657e9cd7", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/top-1-exit-criteria.spec.ts:281", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/top-1-exit-criteria.spec.ts:281"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b2185c2e5b7dd354", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/user-journey-create-study-to-gaps.spec.ts:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/user-journey-create-study-to-gaps.spec.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-6c3312e2a4011f32", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/wave6-browser-verify.spec.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/wave6-browser-verify.spec.ts:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e0db9dc72fe1b644", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/fixtures/seed-gap-run.smoke.spec.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/fixtures/seed-gap-run.smoke.spec.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-8f3c3b1fe304290e", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/fixtures/seed-gap-run.ts:642", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/fixtures/seed-gap-run.ts:642"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ec26945aebf76b9", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-b6208591.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-b6208591.spec.ts:7"}, "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-4a9745c1cf7fcd2e", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-60a1da8f.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-60a1da8f.spec.ts:7"}, "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-2ab672016d7491ec", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-d6e61c1c.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-d6e61c1c.spec.ts:7"}, "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-00a053f44bb6eeb6", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-ae8cb716.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-ae8cb716.spec.ts:7"}, "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-16d54ccad8cfad38", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-a66ec508.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-a66ec508.spec.ts:7"}, "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-7b247f7e757da22e", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-3444d139.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-3444d139.spec.ts:7"}, "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-6acdb0734b9293a3", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-68e4c2fe.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-68e4c2fe.spec.ts:7"}, "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-91c17a3fd4bb5e07", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-1e68faa4.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-1e68faa4.spec.ts:7"}, "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-b65b65167277a475", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-fdf2de2d.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-fdf2de2d.spec.ts:7"}, "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-166dae12ab30a643", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-1fdda98d.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-1fdda98d.spec.ts:7"}, "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-caccc2f2a2b01271", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-ef55d1aa.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-ef55d1aa.spec.ts:7"}, "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-a09bdabdd64733a5", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-91414307.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-91414307.spec.ts:7"}, "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-6739f0433adfb2f0", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/action_button-action_button-433c0070.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/action_button-action_button-433c0070.spec.ts:7"}, "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-be203ca560ee6acf", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-24e45a49.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-24e45a49.spec.ts:7"}, "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-3334c2bec5302f74", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-8996ec34.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-8996ec34.spec.ts:7"}, "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-4082f9cf53b0d11d", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-7f0c8851.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-7f0c8851.spec.ts:7"}, "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-ea2ed0814caacb50", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-985992e4.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-985992e4.spec.ts:7"}, "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-5e715424d9d750ed", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-7e2cefba.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-7e2cefba.spec.ts:7"}, "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-d7054375835ec1ef", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-d2f7c396.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-d2f7c396.spec.ts:7"}, "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-ec860f7657240e5f", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-54820cc3.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-54820cc3.spec.ts:7"}, "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-98afe03893ace05d", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-7131b95c.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-7131b95c.spec.ts:7"}, "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-ed3d60c41e9c492f", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-01c44ff3.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-01c44ff3.spec.ts:7"}, "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-c8eed77238a33b1d", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-027c6799.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-027c6799.spec.ts:7"}, "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-8ca08699862355f5", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-18b64b78.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-18b64b78.spec.ts:7"}, "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-e806c039e6546f88", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-b47ae093.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-b47ae093.spec.ts:7"}, "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-a286533a684b472b", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-4dbc8b37.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-4dbc8b37.spec.ts:7"}, "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-ce65859e88e32d0c", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-7b70004d.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-7b70004d.spec.ts:7"}, "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-0f38a5d15a155e1f", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-eebae3be.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-eebae3be.spec.ts:7"}, "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-1d73a11702158339", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-b36dc6e0.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-b36dc6e0.spec.ts:7"}, "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-56c2beb42af02b1a", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-3904fc29.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-3904fc29.spec.ts:7"}, "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-4e3d6242f5098f85", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-c92254f2.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-c92254f2.spec.ts:7"}, "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-4386cdc74e8cc38b", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-5279634c.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-5279634c.spec.ts:7"}, "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-9d66e66b81b935f8", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-f75c1d4e.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-f75c1d4e.spec.ts:7"}, "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-cb6e1baf5d4268a9", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-98d98a8f.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-98d98a8f.spec.ts:7"}, "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-451f1492503310e1", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-ab9d0d3a.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-ab9d0d3a.spec.ts:7"}, "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-792d1b0f4ed4328b", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-4607ddcf.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-4607ddcf.spec.ts:7"}, "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-f259b4990272f24f", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-6e0d4cb2.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-6e0d4cb2.spec.ts:7"}, "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-6c9c22b47e8d6694", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-a72a78e1.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-a72a78e1.spec.ts:7"}, "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-0b49709c07adc748", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-310c89d4.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-310c89d4.spec.ts:7"}, "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-19d05f7a1efbef17", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-0d6054af.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-0d6054af.spec.ts:7"}, "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-00a95974d7f238d9", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-109938a4.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-109938a4.spec.ts:7"}, "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-4fa270e0fb73d51c", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-3429c6c8.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-3429c6c8.spec.ts:7"}, "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-10f7e7ab4e4b0f16", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-66b3d6ab.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-66b3d6ab.spec.ts:7"}, "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-5abfc92c0abda1f4", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-9c736d04.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-9c736d04.spec.ts:7"}, "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-d09a973d332827be", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-cbbd4bd4.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-cbbd4bd4.spec.ts:7"}, "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-f61f5f9d2d23f5f5", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-323f3bad.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-323f3bad.spec.ts:7"}, "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-3ba12c1266869fbe", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-a80af22e.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-a80af22e.spec.ts:7"}, "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-0e40f570511d5279", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-5edffeae.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-5edffeae.spec.ts:7"}, "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-6caf0cef62aba265", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-c9b64aa1.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-c9b64aa1.spec.ts:7"}, "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-0adb750286b40231", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-5fa4d704.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-5fa4d704.spec.ts:7"}, "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-32859fd7d4511061", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-fd2de3ab.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-fd2de3ab.spec.ts:7"}, "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-cb64f32496a8b62d", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-20d1d555.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-20d1d555.spec.ts:7"}, "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-3ad9b1f333fcb222", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-91677148.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-91677148.spec.ts:7"}, "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-a8c29f29ace03205", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-1d26b1a9.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-1d26b1a9.spec.ts:7"}, "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-47390e9f595114f7", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-5d65fcf4.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-5d65fcf4.spec.ts:7"}, "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-c2d89274eb4e3e1e", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-7a80bf26.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-7a80bf26.spec.ts:7"}, "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-d94b3c84e25fa750", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-4490b00f.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-4490b00f.spec.ts:7"}, "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-42a1153de5a98a14", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/action_button-action_button-a4d3a676.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/action_button-action_button-a4d3a676.spec.ts:7"}, "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-c52c5e4880e80d09", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-5f503ba2.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-5f503ba2.spec.ts:7"}, "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-e668f9d7ea37f5aa", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-aa10250e.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-aa10250e.spec.ts:7"}, "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-e9379a0ab47a9ef8", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-3d99955d.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-3d99955d.spec.ts:7"}, "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-5e81bac582978a84", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-b6ccab71.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-b6ccab71.spec.ts:7"}, "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-095057eec20e139d", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-f269c685.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-f269c685.spec.ts:7"}, "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-01334d0bc2fbf069", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-adc4f2e5.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-adc4f2e5.spec.ts:7"}, "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-1bb0f2df83afc035", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-9abb607d.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-9abb607d.spec.ts:7"}, "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-573a76aff8b31826", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-7a4a572b.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-7a4a572b.spec.ts:7"}, "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-dafbc42553043235", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-33373989.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-33373989.spec.ts:7"}, "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-be14292a4f63af0f", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-8a64b91e.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-8a64b91e.spec.ts:7"}, "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-da141c3ce5fce1d4", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-f7840957.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-f7840957.spec.ts:7"}, "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-d6ab7a06bfa84324", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-26b70e49.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-26b70e49.spec.ts:7"}, "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-8a6348c541b8cf8a", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-9791ee84.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-9791ee84.spec.ts:7"}, "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-86d7228318c672c2", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-a418e0cd.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-a418e0cd.spec.ts:7"}, "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-0072fafa9e782560", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-7ab1aff0.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-7ab1aff0.spec.ts:7"}, "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-a78d9ba1a59bfb55", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-3b391ab9.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-3b391ab9.spec.ts:7"}, "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-b4190ec8bbd62e93", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-ad338815.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-ad338815.spec.ts:7"}, "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-49e9f74199ed9ad6", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-bcb08d01.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-bcb08d01.spec.ts:7"}, "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-cfa75c23d7b4599f", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-8ea28ac9.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-8ea28ac9.spec.ts:7"}, "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-f841e29427cfc463", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-48502335.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-48502335.spec.ts:7"}, "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-f951d4bfd5706366", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-ec7b85d7.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-ec7b85d7.spec.ts:7"}, "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-16f19abcd8b2f54a", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-f0d24e8d.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-f0d24e8d.spec.ts:7"}, "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-d9366830b684a3b9", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-20efaf0d.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-20efaf0d.spec.ts:7"}, "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-873b766afcb8e7b2", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-08c9b088.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-08c9b088.spec.ts:7"}, "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-f93a4fa7d182b0c1", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-df743596.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-df743596.spec.ts:7"}, "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-7a15dc1124c451ef", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-36523c9d.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-36523c9d.spec.ts:7"}, "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-92f52904f85453f8", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-784eabaf.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-784eabaf.spec.ts:7"}, "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-20d72e069f6b6fa0", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-f0260893.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-f0260893.spec.ts:7"}, "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-a55a0836e198da03", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-d7b5c69e.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-d7b5c69e.spec.ts:7"}, "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-86ed407ce27f4c0a", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-2ae404c7.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-2ae404c7.spec.ts:7"}, "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-8eeec9cefd0547b3", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-c5ef17c8.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-c5ef17c8.spec.ts:7"}, "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-2567b5844cd3cd7e", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-919b83ad.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-919b83ad.spec.ts:7"}, "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-077b3ffdd3bc02f2", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-ab9a8966.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-ab9a8966.spec.ts:7"}, "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-2b66619aeee8424d", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-11684fd5.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-11684fd5.spec.ts:7"}, "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-c1aeac722d7ba690", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-77b4df47.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-77b4df47.spec.ts:7"}, "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-6ed5c8e025a2cfc4", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-a67d7f22.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-a67d7f22.spec.ts:7"}, "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-c21798b24cdad03d", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-02c2d26e.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-02c2d26e.spec.ts:7"}, "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-636651d582804301", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-b28eccf7.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-b28eccf7.spec.ts:7"}, "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-079d40ed4cf679a8", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/action_button-action_button-125e9083.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/action_button-action_button-125e9083.spec.ts:7"}, "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-219c77b3a1bf20bd", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-f669b884.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-f669b884.spec.ts:7"}, "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-8888622eb0d76889", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-a6758169.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-a6758169.spec.ts:7"}, "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-4be2e9e0437cf7d0", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-08109106.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-08109106.spec.ts:7"}, "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-e0777adb62305fb7", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-e5a4a0de.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-e5a4a0de.spec.ts:7"}, "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-a663752408de787e", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/action_button-action_button-0d2a4b54.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/action_button-action_button-0d2a4b54.spec.ts:7"}, "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-ad7c01737f03b764", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/action_button-action_button-6244899a.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/action_button-action_button-6244899a.spec.ts:7"}, "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-3b0890ce8a6b2827", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-a5ae48ba.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-a5ae48ba.spec.ts:7"}, "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-e73364481a4685bf", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-0f3ce752.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-0f3ce752.spec.ts:7"}, "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-b024a34789936ec8", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-06be1313.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-06be1313.spec.ts:7"}, "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-6767727be1e361a3", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/action_button-action_button-cbac69f3.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/action_button-action_button-cbac69f3.spec.ts:7"}, "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-b602468592a41fff", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-570d54cf.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-570d54cf.spec.ts:7"}, "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-9e51442bb40df2f9", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-b3806e8c.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-b3806e8c.spec.ts:7"}, "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-d0899e470096078e", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-ccf84a2e.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-ccf84a2e.spec.ts:7"}, "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-6b0e852b08245004", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-509eaf9b.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-509eaf9b.spec.ts:7"}, "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-7e1c555982ff174d", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-92e8e1d1.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-92e8e1d1.spec.ts:7"}, "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-19776a721531c3ab", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-b92d9a67.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-b92d9a67.spec.ts:7"}, "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-6f2c0ec95482cc78", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/action_button-action_button-d54cc7f3.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/action_button-action_button-d54cc7f3.spec.ts:7"}, "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-e4e2d0eabed17a1a", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-ae5f048a.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-ae5f048a.spec.ts:7"}, "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-576059540c6f0166", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-49293c36.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-49293c36.spec.ts:7"}, "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-f47f1a9cf01febe7", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-0d03b1eb.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-0d03b1eb.spec.ts:7"}, "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-3ebd63b69a2279e5", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-3649e57f.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-3649e57f.spec.ts:7"}, "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-8bda3d670c56f94a", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-f0b07433.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-f0b07433.spec.ts:7"}, "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-86b2ee556c952485", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-bc6ec15b.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-bc6ec15b.spec.ts:7"}, "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-def60e21fa75d61e", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-e4e73428.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-e4e73428.spec.ts:7"}, "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-6d0004f35e5e01c9", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-f9ed6475.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-f9ed6475.spec.ts:7"}, "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-0ef71be854f23a2d", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-b28598a3.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-b28598a3.spec.ts:7"}, "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-97990ec4dcb7fc43", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-b5e40c63.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-b5e40c63.spec.ts:7"}, "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-6cfeee6dc3c9ef7b", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-89567a95.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-89567a95.spec.ts:7"}, "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-44969c3bd6014288", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-64050c4f.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-64050c4f.spec.ts:7"}, "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-cb1796e0ca0e3cc8", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-e587a001.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-e587a001.spec.ts:7"}, "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-88a30f24d780d4a0", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-520b36ac.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-520b36ac.spec.ts:7"}, "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-2314f950f73ebd81", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-95042cf9.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-95042cf9.spec.ts:7"}, "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-5fe648f24ea3ae66", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-5b5ee1c4.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-5b5ee1c4.spec.ts:7"}, "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-7062ed8f2aee2e5c", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-e80ed871.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-e80ed871.spec.ts:7"}, "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-2af90c9fbd894e6c", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-abac1162.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-abac1162.spec.ts:7"}, "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-6ad376340de6df5b", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-d62ec026.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-d62ec026.spec.ts:7"}, "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-2634ebd850ab818e", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-dd3257e6.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-dd3257e6.spec.ts:7"}, "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-3b787a08fd107a81", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-27f56a67.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-27f56a67.spec.ts:7"}, "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-1f72cf5802f84bab", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-ee9fd96c.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-ee9fd96c.spec.ts:7"}, "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-fe427736a93f9989", "name": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/action_button-action_button-c35c5ea1.spec.ts:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/action_button-action_button-c35c5ea1.spec.ts:7"}, "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-ad22f0b13eeaa09b", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/test-utils/helpers.ts:196", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/test-utils/helpers.ts:196"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-40e7c6ca17dcf1dc", "name": "Stray `console.log` in TS/JS \u2014 scripts/comprehensive-a++-test.js:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/comprehensive-a++-test.js: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-e5a01e471462ff11", "name": "Stray `console.log` in TS/JS \u2014 scripts/simple-modal-test.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/simple-modal-test.js:5"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8f8e3356ea62d800", "name": "Stray `console.log` in TS/JS \u2014 scripts/callback-test.js:4", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/callback-test.js:4"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-214af9d9d497bb74", "name": "Stray `console.log` in TS/JS \u2014 scripts/edge-case-tests.js:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/edge-case-tests.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-07082b5a2a0ef3e9", "name": "Stray `console.log` in TS/JS \u2014 scripts/dev-startup-guard.js:170", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev-startup-guard.js:170"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ba12bcae61966766", "name": "Stray `console.log` in TS/JS \u2014 scripts/dev-zombie-killer.js:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev-zombie-killer.js: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-ae530f0a47c3c8d3", "name": "Stray `console.log` in TS/JS \u2014 scripts/browser-inspector.js:79", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/browser-inspector.js:79"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a403957aebed57ed", "name": "Stray `console.log` in TS/JS \u2014 scripts/connect-orcid.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/connect-orcid.js: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-16dcff10569db317", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-login-frontend.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-login-frontend.js: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-d55913c7ed37549e", "name": "Stray `console.log` in TS/JS \u2014 scripts/browser-search-test.js:4", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/browser-search-test.js:4"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-56160bcad386ac62", "name": "Stray `console.log` in TS/JS \u2014 scripts/file-watcher.js:134", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/file-watcher.js:134"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e29700d56a864052", "name": "Stray `console.log` in TS/JS \u2014 scripts/orcid-dom-error-test.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/orcid-dom-error-test.js:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be153d94d54a7268", "name": "Stray `console.log` in TS/JS \u2014 scripts/dev-stop.js:314", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev-stop.js:314"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-40be03faca1ef68c", "name": "Stray `console.log` in TS/JS \u2014 scripts/dev-status.js:144", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev-status.js:144"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-55e15f7d872e8c60", "name": "Stray `console.log` in TS/JS \u2014 scripts/orcid-e2e-test.js:4", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/orcid-e2e-test.js:4"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-52d62e8645c907a1", "name": "Stray `console.log` in TS/JS \u2014 scripts/debug-login.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/debug-login.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-e518ced56f678ba3", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-ai-assistant-modal.js:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-ai-assistant-modal.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-eb7f8ba1bcb232d9", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-all-pages.ts:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-all-pages.ts:54"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-665f18c65598d591", "name": "Stray `console.log` in TS/JS \u2014 scripts/live-test.js:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/live-test.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-aa03613f55910d88", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-browser-login.js:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-browser-login.js:6"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ee91732301c57dc9", "name": "Stray `console.log` in TS/JS \u2014 scripts/comprehensive-search-test.js:225", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/comprehensive-search-test.js: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-99e2e3ed87dcfbbb", "name": "Stray `console.log` in TS/JS \u2014 scripts/simulate-search-pipeline.js:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/simulate-search-pipeline.js:58"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0675e8769c94de38", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-orcid-success-page.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-orcid-success-page.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-9a9bb77c0b491205", "name": "Stray `console.log` in TS/JS \u2014 scripts/pw-search-debug.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pw-search-debug.js: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-d53f8311bf26c67c", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-orcid-sources.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-orcid-sources.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-b9fd86f657f20412", "name": "Stray `console.log` in TS/JS \u2014 scripts/dev-netflix.js:253", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev-netflix.js:253"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c8ce86bea755967a", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-apple-ui-imports.js:83", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-apple-ui-imports.js: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-7563ec72652dd96e", "name": "Stray `console.log` in TS/JS \u2014 scripts/dev-process-guardian.js:118", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev-process-guardian.js: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-56bc6dae32d4b527", "name": "Stray `console.log` in TS/JS \u2014 scripts/stop-ultimate.js:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/stop-ultimate.js: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-dcf627be85fba781", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-file-placement.js:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-file-placement.js: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-c2d8557ffdae157a", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-ai-modal.js:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-ai-modal.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-ec4ce6ff337dfeb7", "name": "Stray `console.log` in TS/JS \u2014 scripts/orcid-comprehensive-e2e.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/orcid-comprehensive-e2e.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-e75844b5335b35b5", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-orcid-comprehensive-login.js:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-orcid-comprehensive-login.js: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-7600832101840e96", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-navigation.ts:105", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-navigation.ts:105"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-92ef901d256095df", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-env-v2.js:287", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-env-v2.js:287"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-059a22cc9e9845b0", "name": "Stray `console.log` in TS/JS \u2014 scripts/orcid-a-plus-plus-plus-test.js:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/orcid-a-plus-plus-plus-test.js: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-dde0ed2aba9e11f0", "name": "Stray `console.log` in TS/JS \u2014 scripts/comprehensive-test.js:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/comprehensive-test.js: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-d78f5122acf988f2", "name": "TODO/FIXME marker in shipping code \u2014 scripts/health-monitor.js:158", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 scripts/health-monitor.js:158"}, "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-21dfecf3ab94d053", "name": "Stray `console.log` in TS/JS \u2014 scripts/health-monitor.js:156", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/health-monitor.js:156"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fcb05230594fa1bc", "name": "Stray `console.log` in TS/JS \u2014 scripts/browser-inspector.ts:114", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/browser-inspector.ts:114"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4cccc467ddf49bc6", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-jest-to-vitest.js:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-jest-to-vitest.js:82"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c322bb13dcd8e1eb", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-orcid-full-journey.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-orcid-full-journey.js:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ac8205a883abfe9c", "name": "Stray `console.log` in TS/JS \u2014 scripts/memory-guardian.js:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/memory-guardian.js:54"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-157a482450bd8001", "name": "Stray `console.log` in TS/JS \u2014 scripts/analyze-orcid-error.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/analyze-orcid-error.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-105a510262d6ab25", "name": "Stray `console.log` in TS/JS \u2014 scripts/search-test.js:4", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/search-test.js:4"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5dc96f8dc7947218", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-orcid-pipeline.js:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-orcid-pipeline.js: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-5ebdcc2b218a81bb", "name": "Stray `console.log` in TS/JS \u2014 scripts/live-orcid-test.js:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/live-orcid-test.js: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-62a757e9ef03e22d", "name": "Stray `console.log` in TS/JS \u2014 scripts/comprehensive-architecture-audit.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/comprehensive-architecture-audit.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-3a936091ee48e71d", "name": "Stray `console.log` in TS/JS \u2014 scripts/simulate-orcid-connection.js:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/simulate-orcid-connection.js:20"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-40a4a18417e6852d", "name": "Stray `console.log` in TS/JS \u2014 scripts/forensic-arxiv-deep.js:130", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/forensic-arxiv-deep.js:130"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-47ce3a01e6294576", "name": "Stray `console.log` in TS/JS \u2014 scripts/extract-orcid-profile.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-orcid-profile.js: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-929668f09f8c4534", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-orcid-live.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-orcid-live.js: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-481d918c85ab5f63", "name": "Stray `console.log` in TS/JS \u2014 scripts/dev-netflix-v2.js:204", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev-netflix-v2.js:204"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b920b9e3c510e38f", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-metrics-series.js:286", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-metrics-series.js:286"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fbe149f22e92b2c8", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-orcid-automated.js:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-orcid-automated.js:32"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0550a9f7010e7e31", "name": "Stray `console.log` in TS/JS \u2014 scripts/design-language-lint.js:562", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/design-language-lint.js:562"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-368bcd6bbc842b63", "name": "Stray `console.log` in TS/JS \u2014 scripts/click-test.js:4", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/click-test.js:4"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fd73cfc12b151376", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-structure.js:118", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-structure.js: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-0450326559d733ce", "name": "Stray `console.log` in TS/JS \u2014 scripts/apple-hig-sweep.js:328", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apple-hig-sweep.js:328"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5eb74f7da0ef7234", "name": "Stray `console.log` in TS/JS \u2014 scripts/integration-test.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/integration-test.js:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-50ad67528f86a05d", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-orcid-complete.js:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-orcid-complete.js: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-9f78070fd46c8c87", "name": "Stray `console.log` in TS/JS \u2014 scripts/forensic-eric-audit.js:138", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/forensic-eric-audit.js:138"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-66e7781d54fd178c", "name": "Stray `console.log` in TS/JS \u2014 scripts/monitor.js:242", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/monitor.js:242"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b806047e10cf52a3", "name": "Stray `console.log` in TS/JS \u2014 scripts/watch-orcid-logs.js:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/watch-orcid-logs.js: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-b24932561b226092", "name": "Stray `console.log` in TS/JS \u2014 scripts/find-shortcuts-ui.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/find-shortcuts-ui.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-d5f03b3eef83f7de", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e-orcid-search-test.js:78", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e-orcid-search-test.js:78"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-53c84c5e24c14a71", "name": "Stray `console.log` in TS/JS \u2014 scripts/forensic-arxiv-audit.js:138", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/forensic-arxiv-audit.js:138"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-448a78f6e9bbdcaf", "name": "Stray `console.log` in TS/JS \u2014 scripts/diagnose-orcid-profile.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/diagnose-orcid-profile.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-ac000ca9845e4825", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-search-overclaims.js:248", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-search-overclaims.js:248"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e0145cc599148caa", "name": "Stray `console.log` in TS/JS \u2014 scripts/quick-ai-test.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/quick-ai-test.js:5"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-91204ad50079c061", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-login-flow.js:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-login-flow.js:18"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-95b81b66fa494f03", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-authz.js:184", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-authz.js: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-fac43936c6dd8976", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-fulltext-per-source.js:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-fulltext-per-source.js: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-066eb1f73ef4817f", "name": "Stray `console.log` in TS/JS \u2014 scripts/quick-svg-test.js:4", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/quick-svg-test.js:4"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0df8d06681dc97df", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-lit-review-orcid.js:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-lit-review-orcid.js:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8faf4047895ea985", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-mock-data.ts:226", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-mock-data.ts:226"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7bd13cdb5c04c221", "name": "Stray `console.log` in TS/JS \u2014 scripts/auto-organize.js:156", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/auto-organize.js:156"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-52cb0c2852e39830", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-phase-10240-streaming.js:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-phase-10240-streaming.js: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-ac89664f420a55b5", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-env.js:108", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-env.js:108"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cf2c29338ba84f6f", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-jest-to-vitest-v2.js:199", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-jest-to-vitest-v2.js:199"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-86ba24a62c4d6566", "name": "Stray `console.log` in TS/JS \u2014 scripts/apple-design-validate.js:168", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apple-design-validate.js:168"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8a6389f86cda2123", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-auth-flow.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-auth-flow.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-8f385fc6a3c53056", "name": "Stray `console.log` in TS/JS \u2014 scripts/pw-debug.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pw-debug.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-19b1efd34c678861", "name": "Stray `console.log` in TS/JS \u2014 scripts/login-test.js:4", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/login-test.js:4"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fdc2538ddf2ad8ab", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-hook-dependencies.js:409", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-hook-dependencies.js:409"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3934841369f121fe", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-login-functionality.js:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-login-functionality.js:72"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3060af0177f7bb5f", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-integration.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-integration.ts:34"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-03fe447cadc4c29c", "name": "Stray `console.log` in TS/JS \u2014 scripts/browser-oauth-test.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/browser-oauth-test.js:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-437b3ea3cad0a2e3", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-fulltext-search.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-fulltext-search.js: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-9adcd953e5671c49", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-dev-manager-v2.js:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-dev-manager-v2.js: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-b850a5a4619c4fa2", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e-orcid-paper-fetch-journey.js:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e-orcid-paper-fetch-journey.js:43"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b5a90d02bb7b1a0f", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-with-login.js:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-with-login.js:13"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-38d77ace81d98f88", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-qsort-persistence.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-qsort-persistence.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-6a5b279a8b3c7945", "name": "Stray `console.log` in TS/JS \u2014 scripts/sync-collab-protocol.js:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sync-collab-protocol.js:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fed0c71521a91e6a", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-orcid-behavior.js:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-orcid-behavior.js:34"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-401c7e11c0628e42", "name": "Stray `console.log` in TS/JS \u2014 scripts/debug-orcid-callback.js:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/debug-orcid-callback.js:18"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6b80bfa807db98a8", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-cors-ports.js:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-cors-ports.js: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-64e5a1841a20ecb7", "name": "Stray `console.log` in TS/JS \u2014 scripts/create-file.js:562", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-file.js:562"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-68973a988365c678", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-backend-connectivity.ts:78", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-backend-connectivity.ts:78"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-104565e2d130bdd2", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-fulltext-word-count.js:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-fulltext-word-count.js:64"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5646669ac5b0f280", "name": "Stray `console.log` in TS/JS \u2014 scripts/vscode-browser-test.js:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/vscode-browser-test.js: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-7a19325cc8c43920", "name": "Stray `console.log` in TS/JS \u2014 scripts/smoke-test.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/smoke-test.js: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-ec967496a3b6e1ee", "name": "Stray `console.log` in TS/JS \u2014 scripts/quick-orcid-flow-test.js:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/quick-orcid-flow-test.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-9ff6a10b51f9f1fd", "name": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-ultimate-v4-day11.js:114", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-ultimate-v4-day11.js:114"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-17857e7b26ce6f9b", "name": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-ultimate.js:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-ultimate.js: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-9e1eb3f52e9a28d9", "name": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/stop-enterprise.js:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/stop-enterprise.js: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-eecf39622f9e20ac", "name": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-ultimate-v4.js:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-ultimate-v4.js:66"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a70fee5b03eff3b0", "name": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/stop-ultimate.js:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/stop-ultimate.js:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9c3382e37bc074a4", "name": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-ultimate-v3.js:97", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-ultimate-v3.js:97"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b037c680c23a4c84", "name": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-enterprise-strict.js:118", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-enterprise-strict.js: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-e9a8a9ae7d6a03b2", "name": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-ultimate-v2.js:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-ultimate-v2.js: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-a00787ec1fefb68c", "name": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-manager-v5-protected.js:133", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-manager-v5-protected.js:133"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ecd27db1f644018b", "name": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-ultimate-original.js:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-ultimate-original.js: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-96d194a3e86522e3", "name": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-ultimate-v3-enhanced.js:97", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-ultimate-v3-enhanced.js:97"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f180a59ea01338d9", "name": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-enterprise.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-enterprise.js: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-cfcb0610c1e04f3c", "name": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-lite.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-lite.js: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-534977de9d703843", "name": "Stray `console.log` in TS/JS \u2014 public/service-worker.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 public/service-worker.js: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-04e8a2787e5a5d0b", "name": "Stray `console.log` in TS/JS \u2014 backend/test-type-guard.js:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-type-guard.js:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-73e9f6384311e1bc", "name": "Stray `console.log` in TS/JS \u2014 backend/test-progressive-funnel-e2e.js:84", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-progressive-funnel-e2e.js: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-e0e577782775871f", "name": "Stray `console.log` in TS/JS \u2014 backend/test-with-new-user.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-with-new-user.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-e25b9881a910d3b5", "name": "Stray `console.log` in TS/JS \u2014 backend/test-grobid-integration.js:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-grobid-integration.js:92"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0425dbb51d85eb07", "name": "Stray `console.log` in TS/JS \u2014 backend/test-theme-extraction.js:77", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-theme-extraction.js:77"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ac07d9d7cb876f35", "name": "Stray `console.log` in TS/JS \u2014 backend/test-edge-cases-zero-results.js:108", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-edge-cases-zero-results.js:108"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e574c58dd962d3cb", "name": "Stray `console.log` in TS/JS \u2014 backend/test-bm25-relevance-filtering.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-bm25-relevance-filtering.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-e6c76eadd9bf7822", "name": "Stray `console.log` in TS/JS \u2014 backend/test-theme-extraction.ts:178", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-theme-extraction.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-3768ded33766c2ac", "name": "Stray `console.log` in TS/JS \u2014 backend/test-phase-10.98-e2e.js:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-phase-10.98-e2e.js: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-760f99f6b1c62d6c", "name": "Stray `console.log` in TS/JS \u2014 backend/test-get-library.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-get-library.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-34cd105e4db0a3a6", "name": "Stray `console.log` in TS/JS \u2014 backend/venue-scoring-walkthrough.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/venue-scoring-walkthrough.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-f538891744ba0f81", "name": "Stray `console.log` in TS/JS \u2014 backend/test-journal-metrics.js:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-journal-metrics.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-8ef7aee19dd1575f", "name": "Stray `console.log` in TS/JS \u2014 backend/test-save-paper.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-save-paper.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-2678ce7a41be266f", "name": "Stray `console.log` in TS/JS \u2014 backend/test-q-statement-endpoint.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-q-statement-endpoint.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-2c88dec57171aa7a", "name": "Stray `console.log` in TS/JS \u2014 backend/test-extraction.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-extraction.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-3501448221dc1a99", "name": "Stray `console.log` in TS/JS \u2014 backend/test-auth-api.ts:4", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-auth-api.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-eedcc0e52e9b118f", "name": "Stray `console.log` in TS/JS \u2014 backend/test-dimension-compatibility.js:124", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-dimension-compatibility.js:124"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1daf1318c57dca0f", "name": "Stray `console.log` in TS/JS \u2014 backend/test-purpose-validation-only.js:95", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-purpose-validation-only.js:95"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-28a24736a50eb44f", "name": "Stray `console.log` in TS/JS \u2014 backend/test-grobid-edge-cases.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-grobid-edge-cases.js:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4f0f93f6262864f5", "name": "Stray `console.log` in TS/JS \u2014 backend/test-springer-integration.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-springer-integration.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-77a96f324939ea71", "name": "Stray `console.log` in TS/JS \u2014 backend/test-quality-threshold-filter.js:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-quality-threshold-filter.js:61"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-601f6c31b821bea3", "name": "Stray `console.log` in TS/JS \u2014 backend/test-grobid-real-papers.js:173", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-grobid-real-papers.js:173"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-189efd6ef8dfe297", "name": "Stray `console.log` in TS/JS \u2014 backend/check-user-status.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/check-user-status.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-e04e7569a80b3d8d", "name": "Stray `console.log` in TS/JS \u2014 backend/test-grobid-parse.js:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-grobid-parse.js:30"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-62ceade3cc8f4583", "name": "Stray `console.log` in TS/JS \u2014 backend/test-collection-audit.js:119", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-collection-audit.js: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-5b901a1ee939a2b1", "name": "Stray `console.log` in TS/JS \u2014 backend/integration-test-fulltext-adaptive.ts:145", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/integration-test-fulltext-adaptive.ts:145"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0e73874dd098ab2c", "name": "Stray `console.log` in TS/JS \u2014 backend/fix-types.js:130", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/fix-types.js:130"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f8f75636093377ae", "name": "Stray `console.log` in TS/JS \u2014 backend/test-sciencedirect-extraction.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-sciencedirect-extraction.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-2b5c1611ed6ae966", "name": "Stray `console.log` in TS/JS \u2014 backend/test-sciencedirect-simple.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-sciencedirect-simple.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-482762f27bd64a7c", "name": "Stray `console.log` in TS/JS \u2014 backend/test-ncbi-api-key.js:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-ncbi-api-key.js:13"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-30f6a12385bf6f29", "name": "Stray `console.log` in TS/JS \u2014 backend/test-phase-10.102-phase-2-complete.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-phase-10.102-phase-2-complete.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-760246fc503d9813", "name": "Stray `console.log` in TS/JS \u2014 backend/test-xml-parsing.js:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-xml-parsing.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-c42aa345e1de05a1", "name": "Stray `console.log` in TS/JS \u2014 backend/test-direct-extraction.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-direct-extraction.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-f9b4059dd491b3ae", "name": "Stray `console.log` in TS/JS \u2014 backend/test-xml-with-text-node.js:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-xml-with-text-node.js: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-45c3663ee68ee899", "name": "Stray `console.log` in TS/JS \u2014 backend/test-search-with-filtering.js:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-search-with-filtering.js: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-eecbff32bef6d23d", "name": "Stray `console.log` in TS/JS \u2014 backend/test-excerpt-extraction-simple.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-excerpt-extraction-simple.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-bedd028752d45538", "name": "Stray `console.log` in TS/JS \u2014 backend/test-sciencedirect-extraction-with-output.js:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-sciencedirect-extraction-with-output.js: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-04aa0fc5f5a78e20", "name": "Stray `console.log` in TS/JS \u2014 backend/test-phase-10.94-complete-e2e.js:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-phase-10.94-complete-e2e.js:92"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2ee5b007a9cae254", "name": "Stray `console.log` in TS/JS \u2014 backend/test-admin-login.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-admin-login.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-7c8ff151853612d1", "name": "Stray `console.log` in TS/JS \u2014 backend/test-phase-10.98-all-fixes-e2e.js:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-phase-10.98-all-fixes-e2e.js: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-40f6b5c872abeea8", "name": "Stray `console.log` in TS/JS \u2014 backend/test-text-extraction-waterfall.js:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-text-extraction-waterfall.js: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-cfe647f46eb0f785", "name": "Stray `console.log` in TS/JS \u2014 backend/test-phase-10.99-critical-fixes.js:179", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-phase-10.99-critical-fixes.js:179"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5bc382e03c27888c", "name": "Stray `console.log` in TS/JS \u2014 backend/test/integration/teardown-testcontainers.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/integration/teardown-testcontainers.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-e4576dd32ae4c3ab", "name": "Stray `console.log` in TS/JS \u2014 backend/test/integration/literature-pipeline.integration.spec.ts:125", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/integration/literature-pipeline.integration.spec.ts:125"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6f5362fd18c23ed9", "name": "Stray `console.log` in TS/JS \u2014 backend/test/integration/setup-testcontainers.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/integration/setup-testcontainers.ts:45"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b26e2eb7bf227120", "name": "Stray `console.log` in TS/JS \u2014 backend/test/performance/ws-search-concurrency.harness.js:106", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/ws-search-concurrency.harness.js:106"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7ad0a942bb569bf7", "name": "Stray `console.log` in TS/JS \u2014 backend/test/performance/opt3-tier-stream-probe.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/opt3-tier-stream-probe.js: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-c8a0984c8e4d4a32", "name": "Stray `console.log` in TS/JS \u2014 backend/test/performance/k6-mixed-workload.js:247", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/k6-mixed-workload.js:247"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e047d5229503ec92", "name": "Stray `console.log` in TS/JS \u2014 backend/test/performance/k6-theme-extraction.js:201", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/k6-theme-extraction.js:201"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a548de2d4a9f65fb", "name": "Stray `console.log` in TS/JS \u2014 backend/test/performance/k6-stress-test.js:104", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/k6-stress-test.js:104"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-79bcaad3fecac8bf", "name": "Stray `console.log` in TS/JS \u2014 backend/test/performance/item6-pdf-pool-probe.js:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/item6-pdf-pool-probe.js: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-ccc664a76ed8e5a4", "name": "Stray `console.log` in TS/JS \u2014 backend/test/performance/eff8-event-loop-lag-probe.js:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/eff8-event-loop-lag-probe.js: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-4221374f0a96b731", "name": "Stray `console.log` in TS/JS \u2014 backend/test/performance/result-cache-twouser-probe.js:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/result-cache-twouser-probe.js:28"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-650f37baca3d3210", "name": "Stray `console.log` in TS/JS \u2014 backend/test/performance/literature-performance.spec.ts:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/literature-performance.spec.ts:92"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-088ead7bd3dd7100", "name": "Stray `console.log` in TS/JS \u2014 backend/test/performance/k6-literature-search.js:145", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/k6-literature-search.js:145"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7423d91c13b4fcd9", "name": "Stray `console.log` in TS/JS \u2014 backend/test/performance/k6-wave9-load-test.js:288", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/k6-wave9-load-test.js:288"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6e921d14019fa9fd", "name": "Stray `console.log` in TS/JS \u2014 backend/test/performance/k6-wave9-soak-test.js:132", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/k6-wave9-soak-test.js:132"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5e9d00acb4f5b3e5", "name": "Stray `console.log` in TS/JS \u2014 backend/test/performance/k6-pr-smoke.js:127", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/k6-pr-smoke.js:127"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-175d94c99fd30ee9", "name": "Stray `console.log` in TS/JS \u2014 backend/test/performance/eff8-rerank-byte-identity-probe.js:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/eff8-rerank-byte-identity-probe.js: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-9e18c6788389d6ab", "name": "Stray `console.log` in TS/JS \u2014 backend/test/performance/k6-sprint12-load-test.js:503", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/k6-sprint12-load-test.js:503"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4514bfbf69e6aae2", "name": "Stray `console.log` in TS/JS \u2014 backend/test/edge-cases/edge-case-validation.e2e-spec.ts:111", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/edge-cases/edge-case-validation.e2e-spec.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-dd21d4a8ee7229b1", "name": "Stray `console.log` in TS/JS \u2014 backend/test/contract/api-provider.pact.spec.ts:177", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/contract/api-provider.pact.spec.ts:177"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d0e1e6bd9e7f7d3c", "name": "Stray `console.log` in TS/JS \u2014 backend/test/manual/cohens-kappa-calculator.js:97", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/manual/cohens-kappa-calculator.js:97"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1fb2811cffef59cb", "name": "Stray `console.log` in TS/JS \u2014 backend/test/chaos/ws-disconnect-chaos.js:304", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/chaos/ws-disconnect-chaos.js:304"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2f51500fb2039abd", "name": "Stray `console.log` in TS/JS \u2014 backend/test/e2e/literature-critical-path.e2e-spec.ts:119", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/e2e/literature-critical-path.e2e-spec.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-f98110b8c45d41e8", "name": "Stray `console.log` in TS/JS \u2014 backend/test/e2e/refine-stage-validation.e2e-spec.ts:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/e2e/refine-stage-validation.e2e-spec.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-97092c3688af5354", "name": "Stray `console.log` in TS/JS \u2014 backend/test/e2e/search-stream-300-papers.e2e-spec.ts:148", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/e2e/search-stream-300-papers.e2e-spec.ts:148"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9f369126a124e4cc", "name": "Stray `console.log` in TS/JS \u2014 backend/test/e2e/failure-scenarios.e2e-spec.ts:140", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/e2e/failure-scenarios.e2e-spec.ts:140"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5ff4e1c586ec3fb1", "name": "Stray `console.log` in TS/JS \u2014 backend/test/e2e/literature-comprehensive.e2e-spec.ts:123", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/e2e/literature-comprehensive.e2e-spec.ts:123"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eaa07cc1afc275c1", "name": "Stray `console.log` in TS/JS \u2014 backend/test/e2e/performance.e2e-spec.ts:192", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/e2e/performance.e2e-spec.ts:192"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ba892c670acad4dc", "name": "Stray `console.log` in TS/JS \u2014 backend/test/e2e/purpose-aware-search.e2e-spec.ts:147", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/e2e/purpose-aware-search.e2e-spec.ts:147"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ce4507a06e39b319", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/quality-profile-compare.ts:93", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/quality-profile-compare.ts:93"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-07dfbe70c06599df", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/benchmark-literature-sources.ts:124", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/benchmark-literature-sources.ts:124"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4da581997453b78d", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/refresh-orcid-token.ts:120", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/refresh-orcid-token.ts:120"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ed0a1222fb864b4d", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/source-health-check.ts:77", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/source-health-check.ts:77"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6ca4110c95f9613b", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-request-cancellation.ts:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-request-cancellation.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-8ee28b5f0a17d70e", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/analyze-fulltext-success-rate.ts:85", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/analyze-fulltext-success-rate.ts:85"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c173df14cf6c540a", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-source-limits.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-source-limits.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-4c22179b0558ce64", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/load-test-literature.ts:165", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/load-test-literature.ts:165"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b27b7795a5d727ed", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/mh06-citation-coverage-audit.ts:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/mh06-citation-coverage-audit.ts:43"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2b042db7caf0ef96", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/retraction-watch-sync.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/retraction-watch-sync.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-4e4e2069febd4f61", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-unwired-controllers.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-unwired-controllers.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-feca0de061b99b3c", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-pipeline-refine-stage.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-pipeline-refine-stage.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-83013d58cb0a0759", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/diagnose-journal-metrics.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/diagnose-journal-metrics.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-5c30792a9d41ced1", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/diagnose-quality-scores.js:246", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/diagnose-quality-scores.js:246"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2f7551caf9bc9d1a", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/build-fulltext-ground-truth.js:135", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/build-fulltext-ground-truth.js:135"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fe2e15432bdcb0cc", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-grobid-extraction-e2e.ts:99", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-grobid-extraction-e2e.ts:99"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6c75906698aa16b0", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-source-balance-e2e.ts:166", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-source-balance-e2e.ts:166"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3030cf7dd5eaaf56", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/dev-login-helper.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/dev-login-helper.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-bd840d20151c2eac", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/citation-enrichment-backfill.ts:74", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/citation-enrichment-backfill.ts:74"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1cd5d10090a1ef46", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/pipeline-checkpoint-arxiv.ts:228", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/pipeline-checkpoint-arxiv.ts:228"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cc14fe01520f0847", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/add-orcid-publications.ts:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/add-orcid-publications.ts:70"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-24884038ce5f967d", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/pipeline-validate-profiles.ts:206", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/pipeline-validate-profiles.ts:206"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-222d92ebe52d0e4b", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/verify-orcid-config.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/verify-orcid-config.js:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3f9a28c606cda73e", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/diagnose-search.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/diagnose-search.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-c50b3d991ff65134", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/source-isolation-probe.ts:96", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/source-isolation-probe.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-12ba536a135fe2a2", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-youtube-api.js:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-youtube-api.js:13"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-24cd1f2ac826077e", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-fulltext-success-rate.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-fulltext-success-rate.ts:45"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-87087ae1d899167a", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/warm-cache.ts:109", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/warm-cache.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-24c5b5f645997c19", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/source-error-detail.ts:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/source-error-detail.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-de3b73b2e066abf2", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/reranker-probe.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/reranker-probe.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-ceddb50c57910b96", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/reset-user-state.ts:177", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/reset-user-state.ts:177"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a33d255f1c52c7b0", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/check-orcid-tokens.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/check-orcid-tokens.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-73ec527aad3b8df1", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/benchmark-social-media.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/benchmark-social-media.ts:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e541d3b5b525fd4e", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/phase-10.711-migration-mark-existing-users-verified.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/phase-10.711-migration-mark-existing-users-verified.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-411e03075d16b547", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/benchmark-pipeline.ts:350", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/benchmark-pipeline.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-6476e19afd565606", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/audit-paper-titles.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/audit-paper-titles.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-9a749e04c4c1b100", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/pipeline-validate-all-sources.ts:254", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/pipeline-validate-all-sources.ts:254"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5580712dce1d7097", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/analyze-papers-from-db.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/analyze-papers-from-db.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-2e1b002ced625205", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/create-test-report.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/create-test-report.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-2edebd996aa45936", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-journal-prestige-calculation.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-journal-prestige-calculation.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-8ebaada794ccc984", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/replace-console-with-logger.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/replace-console-with-logger.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-617c3b795c67c18d", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/staging-silhouette-distribution.ts:205", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/staging-silhouette-distribution.ts:205"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e74b99beffe4b378", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/floor-cosine-probe.ts:86", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/floor-cosine-probe.ts:86"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9fbda2e032bf276f", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/check-orcid-user.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/check-orcid-user.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-03638f6c0080e8ae", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/migrate-normalize-paper-titles.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/migrate-normalize-paper-titles.ts:53"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c94ec2f98e41ed8c", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/check-route-parity.ts:169", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/check-route-parity.ts:169"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c57bb6aebf66c579", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-search-pipeline-e2e.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-search-pipeline-e2e.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-2e90c7b47ff6de82", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/simple-detection-test.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/simple-detection-test.ts:65"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3888e26d7193f448", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/live-detection-test.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/live-detection-test.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-9e90b8ef987da9c2", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/pipeline-validate-source.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/pipeline-validate-source.ts:51"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5532ee091323c0fa", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/eval/generate-smoke-fixture.ts:565", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/eval/generate-smoke-fixture.ts:565"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e8333f5aa6298053", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/eval/rebaseline.ts:102", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/eval/rebaseline.ts:102"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6de207980a4aa082", "name": "Stray `console.log` in TS/JS \u2014 backend/scripts/eval/run-beir.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/eval/run-beir.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-4f37a61bc6099e7b", "name": "Stray `console.log` in TS/JS \u2014 backend/prisma/reset-password.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/prisma/reset-password.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-e6f1bf074f831c8e", "name": "Stray `console.log` in TS/JS \u2014 backend/prisma/seed.ts:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/prisma/seed.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-c39a478eabc63173", "name": "Stray `console.log` in TS/JS \u2014 backend/prisma/check-users.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/prisma/check-users.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-42c88135bde95fc0", "name": "Stray `console.log` in TS/JS \u2014 backend/prisma/test-login.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/prisma/test-login.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-98024c0eea028432", "name": "Stray `console.log` in TS/JS \u2014 backend/prisma/test-admin.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/prisma/test-admin.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-4513c9a8d0de989e", "name": "Stray `console.log` in TS/JS \u2014 backend/prisma/reset-admin-password.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/prisma/reset-admin-password.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-1af38764a70f0f64", "name": "Stray `console.log` in TS/JS \u2014 backend/prisma/seed-simple.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/prisma/seed-simple.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-3ba07a400c1a1345", "name": "Stray `console.log` in TS/JS \u2014 backend/src/generate-openapi.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/generate-openapi.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-a326fb254b27e894", "name": "Stray `console.log` in TS/JS \u2014 backend/src/common/security/types/authenticated-socket.types.ts:128", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/common/security/types/authenticated-socket.types.ts:128"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b842996c938613a6", "name": "Stray `console.log` in TS/JS \u2014 backend/src/common/utils/json-utils.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/common/utils/json-utils.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-6a4d46cd2805e348", "name": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/batch-process-papers.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/batch-process-papers.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-9b071d2fc6eb1725", "name": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/migrate-pmid-and-queue.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/migrate-pmid-and-queue.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-14481f571895ddde", "name": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/check-papers.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/check-papers.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-c649f52d5e75b37b", "name": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/validate-phase-1-results.ts:103", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/validate-phase-1-results.ts:103"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-595f005dec1e1a6f", "name": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/backfill-paper-collections.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/backfill-paper-collections.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-47c672c1ed3e8133", "name": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/phase-10.106-test-runner.ts:259", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/phase-10.106-test-runner.ts:259"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cc78f97334511dc5", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/ai/services/dr-onionstein-proactive.service.ts:747", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/ai/services/dr-onionstein-proactive.service.ts:747"}, "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-286955a57b96c85f", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/navigation/navigation-state.service.ts:120", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/navigation/navigation-state.service.ts:120"}, "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-e9a6ea4e46e25917", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/auth/services/audit.service.ts:232", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/auth/services/audit.service.ts:232"}, "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-4bd344c661d20c65", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/q-sort/services/viewpoint-balance.service.ts:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/q-sort/services/viewpoint-balance.service.ts:72"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2a16dcdd3690eb91", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/repository/services/research-repository.service.ts:1080", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/repository/services/research-repository.service.ts:1080"}, "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-e0cedb088525f650", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/study/study.service.ts:919", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/study/study.service.ts:919"}, "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-77a6a3ba6836f34b", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/literature.service.ts:1088", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/literature.service.ts:1088"}, "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-5ae873c917cacfce", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/types/fulltext-progress.types.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/types/fulltext-progress.types.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-10c28158399f9730", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/benchmarks/orchestration-performance.benchmark.ts:1389", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/benchmarks/orchestration-performance.benchmark.ts:1389"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5415872e3d8b0b00", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/benchmarks/cache-performance.benchmark.ts:114", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/benchmarks/cache-performance.benchmark.ts:114"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-86c0cd00ed243383", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/benchmarks/coherence-performance.benchmark.ts:330", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/benchmarks/coherence-performance.benchmark.ts:330"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-60087a8811abaaf0", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/evaluation/import-synergy-gold-set.ts:159", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/evaluation/import-synergy-gold-set.ts:159"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-02efe839aee214d0", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/evaluation/run-retrieval-eval.ts:113", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/evaluation/run-retrieval-eval.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-a27c5f4ec4d52476", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/evaluation/publish-benchmark.ts:274", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/evaluation/publish-benchmark.ts:274"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-43dd43079a5f10e6", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/evaluation/__tests__/gold-set-eval.spec.ts:88", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/evaluation/__tests__/gold-set-eval.spec.ts:88"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-449d961badcef98e", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/interfaces/theme-extraction-options.interface.ts:99", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/interfaces/theme-extraction-options.interface.ts:99"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cbe91506817e0529", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/interfaces/result.interface.ts:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/interfaces/result.interface.ts:43"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c0cdf443c993fce4", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/workers/ranking.worker.ts:215", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/workers/ranking.worker.ts:215"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1fcdeddc9df92805", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/workers/embedding.worker.ts:97", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/workers/embedding.worker.ts:97"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-58d4a42a9d911441", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/workers/kmeans.worker.ts:232", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/workers/kmeans.worker.ts:232"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-373320413bb67a7b", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/workers/embedding-microservice.ts:97", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/workers/embedding-microservice.ts:97"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-235289f84da9177a", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/workers/cross-encoder.worker.ts:97", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/workers/cross-encoder.worker.ts:97"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-90e1d1578836f578", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/controllers/collaborative-screening.controller.ts:54", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/controllers/collaborative-screening.controller.ts:541"}, "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-ec5db156f30cf263", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/controllers/fulltext.controller.ts:340", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/controllers/fulltext.controller.ts:340"}, "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-4c3ced92c9025928", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/qualitative-analysis-pipeline.service.ts:135", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/qualitative-analysis-pipeline.service.ts:135"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-867eb01c423ec2aa", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/http-client-config.service.ts:245", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/http-client-config.service.ts:245"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c93538c1d2030bca", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/paper-permissions.service.ts:95", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/paper-permissions.service.ts:95"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8f46b118f5d82503", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/unified-theme-extraction.service.ts:4309", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/unified-theme-extraction.service.ts:4309"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eb990427d2f46a58", "name": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 backend/src/modules/literature/services/theo", "shortDescription": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 backend/src/modules/literature/services/theoretical-sampling.service.ts:399"}, "fullDescription": {"text": "React Flow edge labels render with a white rectangle behind the text by default, which scatters bright boxes across a dark canvas. Either drop the label, or override `.react-flow__edge-textbg` and `.react-flow__edge-text` in your stylesheet.\n\nWhy: P-H in CHECKLIST.md \u2014 vendor edge labels bleed white through a dark canvas.\nRule id: fq.edge-label.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-27443e79cc348356", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/survey-construction-pipeline.service.ts:120", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/survey-construction-pipeline.service.ts:120"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b6be9d674d556f55", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/api-quota-monitor.service.ts:500", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/api-quota-monitor.service.ts:500"}, "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-1346025d97573bee", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/openalex-enrichment.service.ts:963", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/openalex-enrichment.service.ts:963"}, "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-472e15c5e663e598", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/theme-to-statement.service.ts:572", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/theme-to-statement.service.ts:572"}, "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-ab1778cf61a3d9ed", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/memory-aware-partial-results.ts:179", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/memory-aware-partial-results.ts:179"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e2148f42afac8f7b", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/scopus.service.ts:134", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/scopus.service.ts:134"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ff9be35123f740a1", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/ssrn.service.ts:157", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/ssrn.service.ts:157"}, "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-ae2107e4bcf55df3", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/paper-database.service.ts:375", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/paper-database.service.ts:375"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c48da3a3abffd69e", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/social-media-intelligence.service.ts:305", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/social-media-intelligence.service.ts:305"}, "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-48ae427d31018f31", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/paper-metadata.service.ts:171", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/paper-metadata.service.ts:171"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6c49e392174f1241", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/alternative-sources.service.ts:304", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/alternative-sources.service.ts:304"}, "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-79b3ceb5980fcb72", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/batch-extraction-orchestrator.service.ts:203", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/batch-extraction-orchestrator.service.ts:203"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b00471f79bc48b86", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/intelligent-fulltext-detection.service.ts:3", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/intelligent-fulltext-detection.service.ts:3505"}, "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-570ae031f3994835", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/screening-auto-trigger-circuit-breaker.serv", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/screening-auto-trigger-circuit-breaker.service.ts:275"}, "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-acb666f49691f330", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/claim-extraction-circuit-breaker.service.ts", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/claim-extraction-circuit-breaker.service.ts:275"}, "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-9446537a127cbdd5", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/semantic-scholar.service.ts:577", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/semantic-scholar.service.ts:577"}, "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-67cd58956fd55870", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/theme-extraction-progress.service.ts:515", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/theme-extraction-progress.service.ts:515"}, "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-c64f7788220b6873", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/__tests__/eric.service.spec.ts:525", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/__tests__/eric.service.spec.ts:525"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-40a908972833f915", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/__tests__/request-cancellation.integration.spec.t", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/__tests__/request-cancellation.integration.spec.ts:414"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8724d56e94cf3178", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/__tests__/real-data-flow.spec.ts:252", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/__tests__/real-data-flow.spec.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-640e501501b56782", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/__tests__/phase-2-patent-validation.e2e.spe", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/__tests__/phase-2-patent-validation.e2e.spec.ts:699"}, "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-a29c6f6dcc95b5bf", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/__tests__/pipeline-audit.service.example.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/__tests__/pipeline-audit.service.example.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-e109c780cb5a4ff1", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/__tests__/intelligent-fulltext-orcid-integr", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/__tests__/intelligent-fulltext-orcid-integration.spec.ts:251"}, "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-82493d4155d2216d", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/__tests__/paper-analyzer.example.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/__tests__/paper-analyzer.example.ts: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-9da63ac97ad56b40", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/__tests__/fulltext-ground-truth.spec.ts:128", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/__tests__/fulltext-ground-truth.spec.ts:128"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8b0f98f9a436e8e7", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/__tests__/lsh-similarity.service.spec.ts:280", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/__tests__/lsh-similarity.service.spec.ts:280"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-375bd299701b422f", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/bibliometric/link-prediction.algorithm.ts:188", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/bibliometric/link-prediction.algorithm.ts:188"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5ef29454c0e5c662", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/bibliometric/wall-clock-budget.ts:195", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/bibliometric/wall-clock-budget.ts:195"}, "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-598a92bea6bf5295", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/theme-extraction/coherence-calculation.service.ts", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/theme-extraction/coherence-calculation.service.ts:1655"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7c394500ee2c0e29", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/theme-extraction/validation-strategy.service.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/theme-extraction/validation-strategy.service.ts:965"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f31d0af8a072a299", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/theme-extraction/saturation-analysis.service.spec", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/theme-extraction/saturation-analysis.service.spec.ts:1494"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8afe75da582e9429", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/community-detection/__benchmarks__/sbm-vs-leiden.", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/community-detection/__benchmarks__/sbm-vs-leiden.bench.ts:329"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dc481cbacbe372c2", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/iterative-fetch/__tests__/per-source-yield-evalua", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/iterative-fetch/__tests__/per-source-yield-evaluation.integration.spec.ts:320"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9475deb9a377679d", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/regression.spec.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/regression.spec.ts:34"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d4f67763419158ba", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/basic-integration.spec.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/basic-integration.spec.ts:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5807f7c1c5f94457", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/e2e-simulation.spec.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/e2e-simulation.spec.ts:30"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f65d95d137f1d0db", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/performance/response-time.performance.spec.ts:131", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/performance/response-time.performance.spec.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-ac5782f10dbfc232", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/performance/stress-testing.performance.spec.ts:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/performance/stress-testing.performance.spec.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-e1ab162d65a7297f", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/performance/scalability.performance.spec.ts:173", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/performance/scalability.performance.spec.ts:173"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a88b9c470f2d39fb", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/performance/memory-usage.performance.spec.ts:127", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/performance/memory-usage.performance.spec.ts:127"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-98dc52584b95887b", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/performance/simple-performance.spec.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/performance/simple-performance.spec.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-cf8ba428a73a8318", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/performance/load-testing.performance.spec.ts:99", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/performance/load-testing.performance.spec.ts:99"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e735c43acb74e929", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/smoke/analysis-pipeline.smoke.spec.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/smoke/analysis-pipeline.smoke.spec.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-13ca77d09b196d92", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/smoke/visualization.smoke.spec.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/smoke/visualization.smoke.spec.ts:53"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-11100aff7d312f44", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/smoke/user-journey.smoke.spec.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/smoke/user-journey.smoke.spec.ts: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-a11d8a2d098caa1f", "name": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/smoke/api-health.smoke.spec.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/smoke/api-health.smoke.spec.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-7ec6c5d1286acbab", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/analysis/services/literature-comparison.service.ts:703", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/analysis/services/literature-comparison.service.ts:703"}, "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-08b1f7eee353cbda", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/analysis/services/__tests__/pqmethod-compatibility.service.spec", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/analysis/services/__tests__/pqmethod-compatibility.service.spec.ts:6"}, "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-6d6fe7e9a9bbab7d", "name": "TODO/FIXME marker in shipping code \u2014 backend/src/services/post-survey.service.ts:94", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/services/post-survey.service.ts:94"}, "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-7138c5589d592cd7", "name": "Privileged port 19 in use", "shortDescription": {"text": "Privileged port 19 in use"}, "fullDescription": {"text": "Port 19 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2ec87378db94401f", "name": "Privileged port 30 in use", "shortDescription": {"text": "Privileged port 30 in use"}, "fullDescription": {"text": "Port 30 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e41883134991f778", "name": "Privileged port 1 in use", "shortDescription": {"text": "Privileged port 1 in use"}, "fullDescription": {"text": "Port 1 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-badab95930a2c8f9", "name": "Privileged port 999 in use", "shortDescription": {"text": "Privileged port 999 in use"}, "fullDescription": {"text": "Port 999 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e48d439634af9ee6", "name": "Privileged port 851 in use", "shortDescription": {"text": "Privileged port 851 in use"}, "fullDescription": {"text": "Port 851 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-244b9a0fa07fc205", "name": "Privileged port 2 in use", "shortDescription": {"text": "Privileged port 2 in use"}, "fullDescription": {"text": "Port 2 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-faa134129e5545ff", "name": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3d2a6283f9ebab24", "name": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a399389f5f17b106", "name": "Runtime dotenv file present in repo: frontend/.env.production", "shortDescription": {"text": "Runtime dotenv file present in repo: frontend/.env.production"}, "fullDescription": {"text": "`frontend/.env.production` looks like a runtime dotenv file. No high-confidence secret value was matched, but runtime dotenv files often drift into live credentials. Move real values to a secret manager and keep only `.env.example` style templates in source control."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-87dd3b407d3b5331", "name": "Insecure pattern 'node_child_process' in fix-remaining-errors.js:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in fix-remaining-errors.js:5"}, "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-64663f6cfb7f47ff", "name": "Insecure pattern 'node_child_process' in phase-6.94-final-zero.js:10", "shortDescription": {"text": "Insecure pattern 'node_child_process' in phase-6.94-final-zero.js:10"}, "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-098bf23d48193df5", "name": "Insecure pattern 'node_child_process' in phase-6.94-layer3-enterprise.js:11", "shortDescription": {"text": "Insecure pattern 'node_child_process' in phase-6.94-layer3-enterprise.js:11"}, "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-48c70abeb536fa5d", "name": "Possible secret in diagnostic-auth-test.sh", "shortDescription": {"text": "Possible secret in diagnostic-auth-test.sh"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-3782ec9e8774143a", "name": "Insecure pattern 'node_child_process' in final-check.js:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in final-check.js: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-bd21b66fddf22ea1", "name": "Insecure pattern 'node_child_process' in final-zero-errors.js:8", "shortDescription": {"text": "Insecure pattern 'node_child_process' in final-zero-errors.js:8"}, "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-5422b85237f2b663", "name": "Insecure pattern 'node_child_process' in phase-6.94-layer4-final.js:11", "shortDescription": {"text": "Insecure pattern 'node_child_process' in phase-6.94-layer4-final.js:11"}, "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-27725ab872ad0b64", "name": "Insecure pattern 'node_child_process' in fix-typescript-errors.js:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in fix-typescript-errors.js:5"}, "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-18b07b6d9516bf53", "name": "Insecure pattern 'node_child_process' in check-errors.js:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in check-errors.js:3"}, "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-4ed8866ab0a55615", "name": "Insecure pattern 'node_child_process' in phase-6.94-layer2-fix.js:11", "shortDescription": {"text": "Insecure pattern 'node_child_process' in phase-6.94-layer2-fix.js:11"}, "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-256acbe842bd484b", "name": "Possible secret in test-fulltext-edge-cases.js", "shortDescription": {"text": "Possible secret in test-fulltext-edge-cases.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-3a853acc70e66522", "name": "Possible secret in test-literature-search-e2e.js", "shortDescription": {"text": "Possible secret in test-literature-search-e2e.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-d1c8dbf6d0f1f0e4", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/__tests__/validation-test.tsx:136", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/__tests__/validation-test.tsx:136"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ce3bda2141d9c965", "name": "Insecure pattern 'node_child_process' in frontend/scripts/fix-unused-vars.js:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in frontend/scripts/fix-unused-vars.js:5"}, "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-2a42da2feaf41dab", "name": "Insecure pattern 'node_child_process' in frontend/scripts/zero-error-setup.js:11", "shortDescription": {"text": "Insecure pattern 'node_child_process' in frontend/scripts/zero-error-setup.js:11"}, "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-4dd6881113899fd1", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/components/study-creation/ParticipantPreview.tsx:147", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/components/study-creation/ParticipantPreview.tsx:147"}, "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-c6afccc3004507ea", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/components/hub/sections/VisualizationCenter.tsx:648", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/components/hub/sections/VisualizationCenter.tsx:648"}, "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-f0e178b83bc8e395", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/components/ui/AutoPipelineToast.tsx:147", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/components/ui/AutoPipelineToast.tsx:147"}, "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-2faa006a7daa77cf", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/components/visualizations/__tests__/export.test.ts:363", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/components/visualizations/__tests__/export.test.ts:363"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-10f3d11ee1db1e96", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/components/literature/FullTextExcerptPanel.tsx:76", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/components/literature/FullTextExcerptPanel.tsx:76"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a6dc1744fc52df86", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/components/literature/TranscriptionsTab.tsx:359", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/components/literature/TranscriptionsTab.tsx:359"}, "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-c21f1f0e09262efe", "name": "Insecure pattern 'local_storage_auth_token' in frontend/components/literature/__tests__/SessionResumeBanner.test.tsx:155", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/components/literature/__tests__/SessionResumeBanner.test.tsx:155"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ba5d0237258ce0db", "name": "Insecure pattern 'local_storage_auth_token' in frontend/components/accessibility/AccessibilityManager.tsx:132", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/components/accessibility/AccessibilityManager.tsx:132"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ad514bc6fe43cd99", "name": "Insecure pattern 'node_child_process' in frontend/components/knowledge/__tests__/KnowledgeMapAnnouncer.test.tsx:600", "shortDescription": {"text": "Insecure pattern 'node_child_process' in frontend/components/knowledge/__tests__/KnowledgeMapAnnouncer.test.tsx:600"}, "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-c183f68afdfbaaf7", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/components/knowledge/hooks/__tests__/useKnowledgeMapKeyboard.", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/components/knowledge/hooks/__tests__/useKnowledgeMapKeyboard.test.ts:54"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4bfc210679570f0a", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/components/knowledge/hooks/__tests__/useGraphInteraction.test", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/components/knowledge/hooks/__tests__/useGraphInteraction.test.ts:111"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ddb5b7f694a80f0e", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/app/canonical-host-script.tsx:51", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/app/canonical-host-script.tsx:51"}, "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-940aefe7d61d8bf6", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/app/theme-script.tsx:17", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/app/theme-script.tsx:17"}, "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-e854fc5b2cb32ad6", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/app/purpose-tint-script.tsx:69", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/app/purpose-tint-script.tsx:69"}, "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-711d8cbbbb0f4ffa", "name": "Possible secret in frontend/app/auth/login/page.tsx", "shortDescription": {"text": "Possible secret in frontend/app/auth/login/page.tsx"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-1e16753e8c459264", "name": "Insecure pattern 'local_storage_auth_token' in frontend/app/auth/oauth/callback/page.tsx:247", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/app/auth/oauth/callback/page.tsx:247"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5fd5318d97454436", "name": "Insecure pattern 'local_storage_auth_token' in frontend/app/auth/register/page.tsx:154", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/app/auth/register/page.tsx:154"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-efb3a678f6c6af4b", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/app/(researcher)/studies/create/page.tsx:368", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/app/(researcher)/studies/create/page.tsx:368"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5d9d3cee3680718e", "name": "Insecure pattern 'local_storage_auth_token' in frontend/app/(researcher)/discover/themes/page.tsx:147", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/app/(researcher)/discover/themes/page.tsx:147"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-34931475c27e69c3", "name": "Insecure pattern 'local_storage_auth_token' in frontend/app/(researcher)/discover/literature/prisma/page.tsx:223", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/app/(researcher)/discover/literature/prisma/page.tsx:223"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-477ca9c1497f9eeb", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/app/(researcher)/discover/literature/lib/__tests__/panel-expo", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/app/(researcher)/discover/literature/lib/__tests__/panel-export.test.ts:100"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-683243105c238f65", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/app/(researcher)/reports/[studyId]/page.tsx:547", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/app/(researcher)/reports/[studyId]/page.tsx:547"}, "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-72b8754ff5a02f78", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/lib/visualization/__tests__/export.test.ts:272", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/lib/visualization/__tests__/export.test.ts:272"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7f00b39a9f382ed2", "name": "Insecure pattern 'local_storage_auth_token' in frontend/lib/api/__tests__/participant-enhanced.test.ts:232", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/lib/api/__tests__/participant-enhanced.test.ts:232"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fa7adec04a11693c", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/lib/utils/__tests__/capture-dom-snapshot.test.ts:6", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/lib/utils/__tests__/capture-dom-snapshot.test.ts:6"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-85e358fcd5d6e240", "name": "Insecure pattern 'document_write' in frontend/lib/hooks/useDrOnionWebSocket.ts:440", "shortDescription": {"text": "Insecure pattern 'document_write' in frontend/lib/hooks/useDrOnionWebSocket.ts:440"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-18942c640c270441", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/lib/service-worker/register.ts:76", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/lib/service-worker/register.ts:76"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-314f9edee5dcafdd", "name": "Insecure pattern 'local_storage_auth_token' in frontend/hooks/useParticipant.ts:41", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/hooks/useParticipant.ts:41"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0108b5bbe917ab89", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/public/test-js.html:13", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/public/test-js.html:13"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-789b74a4ad509a43", "name": "Insecure pattern 'local_storage_auth_token' in frontend/e2e/dr-onionstein-enhanced.spec.ts:174", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/e2e/dr-onionstein-enhanced.spec.ts:174"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7318715f7bde17ca", "name": "Insecure pattern 'local_storage_auth_token' in frontend/e2e/dr-onionstein-e2e.spec.ts:97", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/e2e/dr-onionstein-e2e.spec.ts:97"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-46446bea84745418", "name": "Insecure pattern 'local_storage_auth_token' in frontend/e2e/phase-10999-methodology-live.spec.ts:81", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/e2e/phase-10999-methodology-live.spec.ts:81"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d5b1a11c8bac00cf", "name": "Possible secret in frontend/e2e/orcid-enterprise-flow.spec.ts", "shortDescription": {"text": "Possible secret in frontend/e2e/orcid-enterprise-flow.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-d37e61a443a126d0", "name": "Insecure pattern 'local_storage_auth_token' in frontend/e2e/a-plus-plus-smoke.spec.ts:149", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/e2e/a-plus-plus-smoke.spec.ts:149"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5d07c78857a7d27e", "name": "Possible secret in frontend/e2e/particle-persist-refine.spec.ts", "shortDescription": {"text": "Possible secret in frontend/e2e/particle-persist-refine.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-3bab62777382cb63", "name": "Insecure pattern 'local_storage_auth_token' in frontend/e2e/particle-persist-refine.spec.ts:26", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/e2e/particle-persist-refine.spec.ts:26"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9564cc945a6d0962", "name": "Possible secret in frontend/e2e/phase-10970-refinement-loop.spec.ts", "shortDescription": {"text": "Possible secret in frontend/e2e/phase-10970-refinement-loop.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-78c15d5c5385f77f", "name": "Insecure pattern 'local_storage_auth_token' in frontend/e2e/phase-10999-methodology-export.spec.ts:83", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/e2e/phase-10999-methodology-export.spec.ts:83"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4274fd542d43eed0", "name": "Possible secret in frontend/e2e/orcid-login.spec.ts", "shortDescription": {"text": "Possible secret in frontend/e2e/orcid-login.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-09bc48e50eb69c38", "name": "Possible secret in frontend/e2e/orcid-login-paper-fetch.spec.ts", "shortDescription": {"text": "Possible secret in frontend/e2e/orcid-login-paper-fetch.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-471a4c5992400f0b", "name": "Insecure pattern 'local_storage_auth_token' in frontend/e2e/collaboration-page.spec.ts:262", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/e2e/collaboration-page.spec.ts:262"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5ab31a79d1088322", "name": "Possible secret in frontend/e2e/orcid-complete-dataflow.spec.ts", "shortDescription": {"text": "Possible secret in frontend/e2e/orcid-complete-dataflow.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-e3d54104ed0af087", "name": "Possible secret in frontend/e2e/orcid-full-flow.spec.ts", "shortDescription": {"text": "Possible secret in frontend/e2e/orcid-full-flow.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-3bf0ff5bcf740c91", "name": "Insecure pattern 'local_storage_auth_token' in frontend/e2e/coding-page.spec.ts:163", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/e2e/coding-page.spec.ts:163"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2f652ea9b6678b62", "name": "Insecure pattern 'node_child_process' in frontend/e2e/gap-page/di-ratchet-expansion.spec.ts:29", "shortDescription": {"text": "Insecure pattern 'node_child_process' in frontend/e2e/gap-page/di-ratchet-expansion.spec.ts:29"}, "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-86979183d9755b4e", "name": "Possible secret in scripts/comprehensive-a++-test.js", "shortDescription": {"text": "Possible secret in scripts/comprehensive-a++-test.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-e36efd609942f698", "name": "Insecure pattern 'node_child_process' in scripts/comprehensive-a++-test.js:312", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/comprehensive-a++-test.js:312"}, "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-55b28d7849ba2038", "name": "Possible secret in scripts/test-auth-e2e.sh", "shortDescription": {"text": "Possible secret in scripts/test-auth-e2e.sh"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-875ad9e1d6b7b6ac", "name": "Insecure pattern 'node_child_process' in scripts/dev-startup-guard.js:26", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/dev-startup-guard.js:26"}, "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-9ffc82259a898a9b", "name": "Insecure pattern 'node_child_process' in scripts/dev-zombie-killer.js:26", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/dev-zombie-killer.js:26"}, "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-5da0e2e3364cad35", "name": "Insecure pattern 'node_child_process' in scripts/phase-10.110-e2e-triage.mjs:23", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/phase-10.110-e2e-triage.mjs:23"}, "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-a7d9b4526a42aa5a", "name": "Possible secret in scripts/connect-orcid.js", "shortDescription": {"text": "Possible secret in scripts/connect-orcid.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-4751dd701f678e1c", "name": "Insecure pattern 'node_child_process' in scripts/connect-orcid.js:8", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/connect-orcid.js:8"}, "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-bae61a47c991bcf7", "name": "Possible secret in scripts/test-login-frontend.js", "shortDescription": {"text": "Possible secret in scripts/test-login-frontend.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-30bd21149f637138", "name": "Insecure pattern 'node_child_process' in scripts/dev-stop.js:22", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/dev-stop.js:22"}, "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-845b504bb64660d7", "name": "Insecure pattern 'node_child_process' in scripts/dev-status.js:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/dev-status.js:14"}, "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-91bd3028a6756df4", "name": "Possible secret in scripts/ui-audit-runner.js", "shortDescription": {"text": "Possible secret in scripts/ui-audit-runner.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-a18653d5d831b5ec", "name": "Insecure pattern 'node_child_process' in scripts/ui-audit-runner.js:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ui-audit-runner.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-f5469940797f60eb", "name": "Possible secret in scripts/debug-login.js", "shortDescription": {"text": "Possible secret in scripts/debug-login.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-4589e3261a5840ba", "name": "Insecure pattern 'node_child_process' in scripts/phase-10.110-feature-inventory.mjs:21", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/phase-10.110-feature-inventory.mjs:21"}, "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-59fc568dd908bb65", "name": "Possible secret in scripts/test-browser-login.js", "shortDescription": {"text": "Possible secret in scripts/test-browser-login.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-8d7f0d5eac7c1bf8", "name": "Insecure pattern 'node_child_process' in scripts/test-browser-login.js:96", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/test-browser-login.js:96"}, "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-d0bd3b3d0949d78a", "name": "Insecure pattern 'node_child_process' in scripts/dev-netflix.js:23", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/dev-netflix.js:23"}, "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-042c797f788bf2c4", "name": "Insecure pattern 'node_child_process' in scripts/check-apple-ui-imports.js:12", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/check-apple-ui-imports.js:12"}, "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-8c927aac4cf155da", "name": "Insecure pattern 'node_child_process' in scripts/dev-process-guardian.js:50", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/dev-process-guardian.js:50"}, "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-4d48529d04ffb631", "name": "Insecure pattern 'node_child_process' in scripts/stop-ultimate.js:9", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/stop-ultimate.js:9"}, "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-31311f1fb72d2104", "name": "Possible secret in scripts/orcid-a-plus-plus-plus-test.js", "shortDescription": {"text": "Possible secret in scripts/orcid-a-plus-plus-plus-test.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-8ab32e0a2b5fd415", "name": "Possible secret in scripts/comprehensive-test.js", "shortDescription": {"text": "Possible secret in scripts/comprehensive-test.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-5b7be2b3953abc10", "name": "Insecure pattern 'node_child_process' in scripts/memory-guardian.js:16", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/memory-guardian.js:16"}, "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-b3f20c789bb52d81", "name": "Possible secret in scripts/test-orcid-pipeline.js", "shortDescription": {"text": "Possible secret in scripts/test-orcid-pipeline.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-bbdb33d555f8750f", "name": "Insecure pattern 'node_child_process' in scripts/l9-race-leak-drift.mjs:29", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/l9-race-leak-drift.mjs:29"}, "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-7585e89b9fe8ed44", "name": "Possible secret in scripts/forensic-arxiv-deep.js", "shortDescription": {"text": "Possible secret in scripts/forensic-arxiv-deep.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-6b87ab0fdf328ab2", "name": "Insecure pattern 'node_child_process' in scripts/dev-netflix-v2.js:40", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/dev-netflix-v2.js:40"}, "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-57e6e32b29095480", "name": "Insecure pattern 'node_child_process' in scripts/check-metrics-series.js:37", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/check-metrics-series.js:37"}, "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-f54f9fbe5df8f81c", "name": "Insecure pattern 'node_child_process' in scripts/ensure-sharp.js:28", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ensure-sharp.js:28"}, "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-5669d83f06407a09", "name": "Possible secret in scripts/integration-test.js", "shortDescription": {"text": "Possible secret in scripts/integration-test.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-6ef81d653426baf5", "name": "Possible secret in scripts/forensic-eric-audit.js", "shortDescription": {"text": "Possible secret in scripts/forensic-eric-audit.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-4436eb3f49fa81cd", "name": "Insecure pattern 'node_child_process' in scripts/monitor.js:8", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/monitor.js:8"}, "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-829347f8ea000027", "name": "Possible secret in scripts/quick-integration-test.sh", "shortDescription": {"text": "Possible secret in scripts/quick-integration-test.sh"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-584d1eb11ed4c388", "name": "Insecure pattern 'node_child_process' in scripts/k2-wiring-scaffold.mjs:231", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/k2-wiring-scaffold.mjs:231"}, "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-ae49ba7753325542", "name": "Possible secret in scripts/forensic-arxiv-audit.js", "shortDescription": {"text": "Possible secret in scripts/forensic-arxiv-audit.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-4afccf7106b19cbd", "name": "Possible secret in scripts/test-login-flow.js", "shortDescription": {"text": "Possible secret in scripts/test-login-flow.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-cae27d5321f44090", "name": "Possible secret in scripts/audit-fulltext-per-source.js", "shortDescription": {"text": "Possible secret in scripts/audit-fulltext-per-source.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-6f5a61fe16d312c7", "name": "Possible secret in scripts/test-lit-review-orcid.js", "shortDescription": {"text": "Possible secret in scripts/test-lit-review-orcid.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-773a7ded5b78bc97", "name": "Possible secret in scripts/generate-mock-data.ts", "shortDescription": {"text": "Possible secret in scripts/generate-mock-data.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-a9b64e5171636ebc", "name": "Possible secret in scripts/test-auth-flow.js", "shortDescription": {"text": "Possible secret in scripts/test-auth-flow.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-fdec66958ccc2f6e", "name": "Possible secret in scripts/test-login-functionality.js", "shortDescription": {"text": "Possible secret in scripts/test-login-functionality.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-7725423857e8ec7a", "name": "Possible secret in scripts/test-integration.ts", "shortDescription": {"text": "Possible secret in scripts/test-integration.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-2084eeef6a9e816a", "name": "Possible secret in scripts/browser-oauth-test.js", "shortDescription": {"text": "Possible secret in scripts/browser-oauth-test.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-e4742ab5d6e0840a", "name": "Possible secret in scripts/validate-fulltext-search.js", "shortDescription": {"text": "Possible secret in scripts/validate-fulltext-search.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-b1a47bf2f8697bbb", "name": "Insecure pattern 'node_child_process' in scripts/l4-ws-contract-map.mjs:33", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/l4-ws-contract-map.mjs:33"}, "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-b7060f83ea0efcdb", "name": "Insecure pattern 'node_child_process' in scripts/test-dev-manager-v2.js:15", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/test-dev-manager-v2.js:15"}, "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-2d5debe0718226de", "name": "Insecure pattern 'node_child_process' in scripts/e2e-orcid-paper-fetch-journey.js:20", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/e2e-orcid-paper-fetch-journey.js:20"}, "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-44e825e15002f3ae", "name": "Possible secret in scripts/test-with-login.js", "shortDescription": {"text": "Possible secret in scripts/test-with-login.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-065da3098d2989ce", "name": "Possible secret in scripts/debug-orcid-callback.js", "shortDescription": {"text": "Possible secret in scripts/debug-orcid-callback.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-c1d758cca2ecdd24", "name": "Possible secret in scripts/test-cors-ports.js", "shortDescription": {"text": "Possible secret in scripts/test-cors-ports.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-79363c84443c736e", "name": "Possible secret in scripts/test-backend-connectivity.ts", "shortDescription": {"text": "Possible secret in scripts/test-backend-connectivity.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-ef424da894fc631b", "name": "Possible secret in scripts/vscode-browser-test.js", "shortDescription": {"text": "Possible secret in scripts/vscode-browser-test.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-e73d2db04a61b8e9", "name": "Insecure pattern 'node_child_process' in scripts/vscode-browser-test.js:22", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/vscode-browser-test.js:22"}, "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-634805552922cf96", "name": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-ultimate-v4-day11.js:27", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-ultimate-v4-day11.js:27"}, "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-ae44e06ba979d313", "name": "Insecure pattern 'exec_used' in scripts/archived-managers/dev-ultimate.js:511", "shortDescription": {"text": "Insecure pattern 'exec_used' in scripts/archived-managers/dev-ultimate.js:511"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dab781efbe1a3e65", "name": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-ultimate.js:15", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-ultimate.js:15"}, "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-d26b22806f7166a1", "name": "Insecure pattern 'node_child_process' in scripts/archived-managers/stop-enterprise.js:11", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/archived-managers/stop-enterprise.js:11"}, "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-cac22995950d94bf", "name": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-ultimate-v4.js:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-ultimate-v4.js:14"}, "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-b453c6f269472d1a", "name": "Insecure pattern 'node_child_process' in scripts/archived-managers/stop-ultimate.js:9", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/archived-managers/stop-ultimate.js:9"}, "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-42d8176c3910f2dc", "name": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-ultimate-v3.js:16", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-ultimate-v3.js:16"}, "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-5396343b4b45e516", "name": "Insecure pattern 'exec_used' in scripts/archived-managers/dev-enterprise-strict.js:783", "shortDescription": {"text": "Insecure pattern 'exec_used' in scripts/archived-managers/dev-enterprise-strict.js:783"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a2f0e25045f993e7", "name": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-enterprise-strict.js:20", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-enterprise-strict.js:20"}, "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-1b9f05eb01c3a6db", "name": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-ultimate-v2.js:17", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-ultimate-v2.js:17"}, "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-55006d208d2c06c4", "name": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-manager-v5-protected.js:25", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-manager-v5-protected.js:25"}, "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-adaac2bcbb1e1c29", "name": "Insecure pattern 'exec_used' in scripts/archived-managers/dev-ultimate-original.js:511", "shortDescription": {"text": "Insecure pattern 'exec_used' in scripts/archived-managers/dev-ultimate-original.js:511"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-de0ef9ee694e6f92", "name": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-ultimate-original.js:15", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-ultimate-original.js:15"}, "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-d0b6b87de3edf313", "name": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-ultimate-v3-enhanced.js:16", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-ultimate-v3-enhanced.js:16"}, "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-24d1f893726d42bc", "name": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-enterprise.js:23", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-enterprise.js:23"}, "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-c67bf0de06817b13", "name": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-lite.js:23", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-lite.js:23"}, "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-5c6908475c2416db", "name": "Insecure pattern 'node_child_process' in scripts/ci/flake-rate.mjs:35", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ci/flake-rate.mjs:35"}, "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-afb843f55b541f65", "name": "Possible secret in k8s/README.md", "shortDescription": {"text": "Possible secret in k8s/README.md"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-d02478a8f224e55b", "name": "Possible secret in backend/test-extraction.js", "shortDescription": {"text": "Possible secret in backend/test-extraction.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-bd1d4cb124991dc4", "name": "Possible secret in backend/test-auth-api.ts", "shortDescription": {"text": "Possible secret in backend/test-auth-api.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-d2818bc777db14a1", "name": "Possible secret in backend/test-springer-integration.js", "shortDescription": {"text": "Possible secret in backend/test-springer-integration.js"}, "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-8baa4e73cc94fe97", "name": "Insecure pattern 'node_child_process' in backend/test-ncbi-api-key.js:59", "shortDescription": {"text": "Insecure pattern 'node_child_process' in backend/test-ncbi-api-key.js:59"}, "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-cd61d0bf8e753189", "name": "Possible secret in backend/test/performance/k6-mixed-workload.js", "shortDescription": {"text": "Possible secret in backend/test/performance/k6-mixed-workload.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-242d142970966e0d", "name": "Possible secret in backend/test/performance/literature-performance.spec.ts", "shortDescription": {"text": "Possible secret in backend/test/performance/literature-performance.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-b3b0cd18dab11942", "name": "Possible secret in backend/test/edge-cases/edge-case-validation.e2e-spec.ts", "shortDescription": {"text": "Possible secret in backend/test/edge-cases/edge-case-validation.e2e-spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-e74ea75f976958b7", "name": "Possible secret in backend/test/contract/api-consumer.pact.spec.ts", "shortDescription": {"text": "Possible secret in backend/test/contract/api-consumer.pact.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-634f09204ead9dae", "name": "Possible secret in backend/test/contract/api-provider.pact.spec.ts", "shortDescription": {"text": "Possible secret in backend/test/contract/api-provider.pact.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-eb084cb1601317ad", "name": "Possible secret in backend/test/e2e/startup.e2e-spec.ts", "shortDescription": {"text": "Possible secret in backend/test/e2e/startup.e2e-spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-39e31c26a4b5354c", "name": "Possible secret in backend/test/e2e/collaboration.e2e-spec.ts", "shortDescription": {"text": "Possible secret in backend/test/e2e/collaboration.e2e-spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-d837c36f4a31f22a", "name": "Possible secret in backend/test/e2e/literature-critical-path.e2e-spec.ts", "shortDescription": {"text": "Possible secret in backend/test/e2e/literature-critical-path.e2e-spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-3ebe212084c348ed", "name": "Possible secret in backend/test/e2e/literature-comprehensive.e2e-spec.ts", "shortDescription": {"text": "Possible secret in backend/test/e2e/literature-comprehensive.e2e-spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-a1b9fc1aef7a3f37", "name": "Possible secret in backend/scripts/dev-login-helper.ts", "shortDescription": {"text": "Possible secret in backend/scripts/dev-login-helper.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-13f34c8d7d9f36c4", "name": "Insecure pattern 'node_child_process' in backend/scripts/benchmark-pipeline.ts:44", "shortDescription": {"text": "Insecure pattern 'node_child_process' in backend/scripts/benchmark-pipeline.ts:44"}, "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-c9c19e89f3877f09", "name": "Insecure pattern 'node_child_process' in backend/scripts/free-port.js:24", "shortDescription": {"text": "Insecure pattern 'node_child_process' in backend/scripts/free-port.js:24"}, "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-85c453dd39fc7cfd", "name": "Insecure pattern 'node_child_process' in backend/scripts/eval/rebaseline.ts:20", "shortDescription": {"text": "Insecure pattern 'node_child_process' in backend/scripts/eval/rebaseline.ts:20"}, "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-3b092a08bbc80777", "name": "Possible secret in backend/prisma/reset-admin-password.ts", "shortDescription": {"text": "Possible secret in backend/prisma/reset-admin-password.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-08cd30d40135ecc9", "name": "Insecure pattern 'node_child_process' in backend/src/common/build-info.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in backend/src/common/build-info.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-edf40ee3056b0648", "name": "Possible secret in backend/src/common/__tests__/encryption.service.spec.ts", "shortDescription": {"text": "Possible secret in backend/src/common/__tests__/encryption.service.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-300c65e3434370ac", "name": "Possible secret in backend/src/common/utils/log-sanitizer.ts", "shortDescription": {"text": "Possible secret in backend/src/common/utils/log-sanitizer.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-b7fc5abe55b49484", "name": "Possible secret in backend/src/common/services/secrets.service.ts", "shortDescription": {"text": "Possible secret in backend/src/common/services/secrets.service.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-6e42a0937862df0c", "name": "Insecure pattern 'weak_hash' in backend/src/common/pipes/__tests__/deep-sanitization.pipe.spec.ts:40", "shortDescription": {"text": "Insecure pattern 'weak_hash' in backend/src/common/pipes/__tests__/deep-sanitization.pipe.spec.ts:40"}, "fullDescription": {"text": "Found a known-risky pattern (weak_hash). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-737723da38af3bc4", "name": "Possible secret in backend/src/modules/auth/__tests__/auth.service.spec.ts", "shortDescription": {"text": "Possible secret in backend/src/modules/auth/__tests__/auth.service.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-dcbaf8f5b7bd701f", "name": "Possible secret in backend/src/modules/auth/__tests__/auth-flow.integration.spec.ts", "shortDescription": {"text": "Possible secret in backend/src/modules/auth/__tests__/auth-flow.integration.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-a37db5fa609dfbf9", "name": "Possible secret in backend/src/modules/literature/__tests__/integration/cross-platform-synthesis.integration.spec.ts", "shortDescription": {"text": "Possible secret in backend/src/modules/literature/__tests__/integration/cross-platform-synthesis.integration.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-fcee037ce3f5f127", "name": "Insecure pattern 'node_child_process' in backend/src/modules/literature/evaluation/run-retrieval-eval.ts:54", "shortDescription": {"text": "Insecure pattern 'node_child_process' in backend/src/modules/literature/evaluation/run-retrieval-eval.ts:54"}, "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-463b10203779338b", "name": "Insecure pattern 'node_child_process' in backend/src/modules/literature/services/embedding-proxy.service.ts:25", "shortDescription": {"text": "Insecure pattern 'node_child_process' in backend/src/modules/literature/services/embedding-proxy.service.ts:25"}, "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-74d4bf0ee696b300", "name": "Insecure pattern 'weak_hash' in backend/src/modules/literature/services/instagram-manual.service.spec.ts:413", "shortDescription": {"text": "Insecure pattern 'weak_hash' in backend/src/modules/literature/services/instagram-manual.service.spec.ts:413"}, "fullDescription": {"text": "Found a known-risky pattern (weak_hash). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-90a3e8b60f7f227c", "name": "Insecure pattern 'cors_wildcard' in backend/src/modules/literature/services/wikimedia-pageviews.service.ts:173", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in backend/src/modules/literature/services/wikimedia-pageviews.service.ts:173"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e8d659d8b212131b", "name": "Insecure pattern 'node_child_process' in backend/src/modules/literature/services/bibliometric/reproducibility-manifest.s", "shortDescription": {"text": "Insecure pattern 'node_child_process' in backend/src/modules/literature/services/bibliometric/reproducibility-manifest.service.ts:556"}, "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-dd1fd2bd6e7fc1ef", "name": "Insecure pattern 'node_child_process' in backend/src/modules/literature/services/community-detection/__benchmarks__/sbm-", "shortDescription": {"text": "Insecure pattern 'node_child_process' in backend/src/modules/literature/services/community-detection/__benchmarks__/sbm-vs-leiden.bench.ts:183"}, "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-910a93049fb3d9fc", "name": "Possible secret in backend/src/modules/analysis/__tests__/smoke/user-journey.smoke.spec.ts", "shortDescription": {"text": "Possible secret in backend/src/modules/analysis/__tests__/smoke/user-journey.smoke.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-c7ed9723fcf288ae", "name": "Possible secret in backend/src/modules/analysis/__tests__/e2e/analysis-hub.e2e.spec.ts", "shortDescription": {"text": "Possible secret in backend/src/modules/analysis/__tests__/e2e/analysis-hub.e2e.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-98eac7c7ee5d35f9", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e0662b204e97cff6", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e96c206413ab67cd", "name": "GitHub Action tracks a moving branch", "shortDescription": {"text": "GitHub Action tracks a moving branch"}, "fullDescription": {"text": "snyk/actions/node@master can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2436c819d540d575", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-12c83c906d87723e", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-36fd3c86ff87e5ff", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e44086550b59f1d7", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-node@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-node@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7f1e4527e6fecffa", "name": "GitHub Action tracks a moving branch", "shortDescription": {"text": "GitHub Action tracks a moving branch"}, "fullDescription": {"text": "dependency-check/Dependency-Check_Action@main can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8cc45581fa1fc2e6", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-12520dfa83bf9e0c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-node@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ef10786fff35a1c3", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-85534030b38fb76c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-node@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cdc33f1bcdf90590", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-node@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2a9fd3e62bf951dc", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fd29edafb835ae30", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f54d0d3a389cb4de", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f1fa3dd79d3d1ade", "name": "GitHub Action tracks a moving branch", "shortDescription": {"text": "GitHub Action tracks a moving branch"}, "fullDescription": {"text": "aquasecurity/trivy-action@master can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4724e05098b6722d", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cb639d9a10a47b23", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5c5f519e5dafbf03", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-93dccca1fb7c158a", "name": "Very large file: frontend/components/ai/DrOnionChatPanel.tsx (2027 lines)", "shortDescription": {"text": "Very large file: frontend/components/ai/DrOnionChatPanel.tsx (2027 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-8bd607af8cd4b0b0", "name": "Very large file: frontend/components/hub/sections/ResearchAlignmentMap.tsx (1368 lines)", "shortDescription": {"text": "Very large file: frontend/components/hub/sections/ResearchAlignmentMap.tsx (1368 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-c647f90d17dd2a3d", "name": "Very large file: frontend/components/literature/EnhancedThemeExtractionProgress.tsx (1431 lines)", "shortDescription": {"text": "Very large file: frontend/components/literature/EnhancedThemeExtractionProgress.tsx (1431 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-4261902ee0988e93", "name": "Very large file: frontend/components/literature/PurposeSelectionWizard.tsx (1408 lines)", "shortDescription": {"text": "Very large file: frontend/components/literature/PurposeSelectionWizard.tsx (1408 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-afa89369e0632efb", "name": "Very large file: frontend/components/literature/MethodologyModal.tsx (1291 lines)", "shortDescription": {"text": "Very large file: frontend/components/literature/MethodologyModal.tsx (1291 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-78cb2a64f60e9292", "name": "Very large file: frontend/components/literature/ai-research-question/AIResearchQuestionAssistant.tsx (3606 lines)", "shortDescription": {"text": "Very large file: frontend/components/literature/ai-research-question/AIResearchQuestionAssistant.tsx (3606 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-5e04693c02c4eb44", "name": "Very large file: frontend/components/literature/evidence-table/EvidenceTableBuilder.tsx (1584 lines)", "shortDescription": {"text": "Very large file: frontend/components/literature/evidence-table/EvidenceTableBuilder.tsx (1584 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-9f20bd2b13dfc2c6", "name": "Very large file: frontend/components/stimuli/StimuliUploadSystemV5.tsx (1516 lines)", "shortDescription": {"text": "Very large file: frontend/components/stimuli/StimuliUploadSystemV5.tsx (1516 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-01205a8006d34263", "name": "Very large file: frontend/components/stimuli/StimuliUploadSystemV7.tsx (1554 lines)", "shortDescription": {"text": "Very large file: frontend/components/stimuli/StimuliUploadSystemV7.tsx (1554 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-e2732206a7a8ae28", "name": "Very large file: frontend/components/knowledge/KnowledgeMapShell.tsx (1864 lines)", "shortDescription": {"text": "Very large file: frontend/components/knowledge/KnowledgeMapShell.tsx (1864 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-72e395c4605346e2", "name": "Very large file: frontend/components/knowledge/panels/NodeDetailPanel.tsx (1282 lines)", "shortDescription": {"text": "Very large file: frontend/components/knowledge/panels/NodeDetailPanel.tsx (1282 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-b92d0db34c12d2df", "name": "Very large file: frontend/components/knowledge/renderers/SVGRenderer.tsx (2786 lines)", "shortDescription": {"text": "Very large file: frontend/components/knowledge/renderers/SVGRenderer.tsx (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-55880f179dcbb09a", "name": "Very large file: frontend/components/knowledge/views/BibliometricReportView.tsx (1223 lines)", "shortDescription": {"text": "Very large file: frontend/components/knowledge/views/BibliometricReportView.tsx (1223 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-ea71d53658734939", "name": "Very large file: frontend/components/knowledge/views/FieldMapView.tsx (2795 lines)", "shortDescription": {"text": "Very large file: frontend/components/knowledge/views/FieldMapView.tsx (2795 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-a0597914208b4bf7", "name": "Very large file: frontend/components/knowledge/export/PublicationReportGenerator.ts (1684 lines)", "shortDescription": {"text": "Very large file: frontend/components/knowledge/export/PublicationReportGenerator.ts (1684 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-1e2784fc0bb85217", "name": "Very large file: frontend/app/(researcher)/studies/create/page.tsx (1992 lines)", "shortDescription": {"text": "Very large file: frontend/app/(researcher)/studies/create/page.tsx (1992 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-a48a3bd08c3301e8", "name": "Very large file: frontend/app/(researcher)/design/hypothesis/page.tsx (1415 lines)", "shortDescription": {"text": "Very large file: frontend/app/(researcher)/design/hypothesis/page.tsx (1415 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-703f29b0aab20cae", "name": "Very large file: frontend/app/(researcher)/discover/references/page.tsx (2283 lines)", "shortDescription": {"text": "Very large file: frontend/app/(researcher)/discover/references/page.tsx (2283 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-499561bb100f97c4", "name": "Very large file: frontend/app/(researcher)/discover/literature/components/UnifiedSearchHero.tsx (5732 lines)", "shortDescription": {"text": "Very large file: frontend/app/(researcher)/discover/literature/components/UnifiedSearchHero.tsx (5732 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-1262baf57a5e847a", "name": "Very large file: frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/SearchPipelineOrchestra.tsx ", "shortDescription": {"text": "Very large file: frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/SearchPipelineOrchestra.tsx (1463 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-4e73a1d6fef8661c", "name": "Very large file: frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/OrbitalSourceCons", "shortDescription": {"text": "Very large file: frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/OrbitalSourceConstellation.tsx (1590 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-ef9dbc15c5e1d900", "name": "Very large file: frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/MethodologyReport", "shortDescription": {"text": "Very large file: frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/MethodologyReport.tsx (3082 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-42b6e46d59553065", "name": "Very large file: frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/SourceNode.tsx (1", "shortDescription": {"text": "Very large file: frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/SourceNode.tsx (1261 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-cb07119d45ae69e3", "name": "Very large file: frontend/app/(researcher)/discover/literature/hooks/useLiteraturePageState.ts (1207 lines)", "shortDescription": {"text": "Very large file: frontend/app/(researcher)/discover/literature/hooks/useLiteraturePageState.ts (1207 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-ce6be290dd36e7dc", "name": "Very large file: frontend/app/(researcher)/discover/literature/containers/StreamingSearchSection.tsx (1967 lines)", "shortDescription": {"text": "Very large file: frontend/app/(researcher)/discover/literature/containers/StreamingSearchSection.tsx (1967 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-7a3d9eb325d58a1d", "name": "Very large file: frontend/app/(researcher)/discover/literature/containers/LiteratureSearchContainer.tsx (1765 lines)", "shortDescription": {"text": "Very large file: frontend/app/(researcher)/discover/literature/containers/LiteratureSearchContainer.tsx (1765 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-951bab64087af278", "name": "Very large file: frontend/app/(researcher)/discover/literature/screening/page.tsx (1507 lines)", "shortDescription": {"text": "Very large file: frontend/app/(researcher)/discover/literature/screening/page.tsx (1507 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-bd56a28ee005d535", "name": "Very large file: frontend/app/(researcher)/discover/gaps/GapsPageDataLayer.tsx (4786 lines)", "shortDescription": {"text": "Very large file: frontend/app/(researcher)/discover/gaps/GapsPageDataLayer.tsx (4786 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-09d66a1b55e885de", "name": "Very large file: frontend/app/(researcher)/discover/gaps/components/GapDetailView.tsx (1880 lines)", "shortDescription": {"text": "Very large file: frontend/app/(researcher)/discover/gaps/components/GapDetailView.tsx (1880 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-15194a95138a62d9", "name": "Very large file: frontend/app/(researcher)/discover/gaps/components/GapRefinementFlow.tsx (1850 lines)", "shortDescription": {"text": "Very large file: frontend/app/(researcher)/discover/gaps/components/GapRefinementFlow.tsx (1850 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-8a136955607f9b54", "name": "Very large file: frontend/app/(researcher)/discover/gaps/components/GapCardItem.tsx (1177 lines)", "shortDescription": {"text": "Very large file: frontend/app/(researcher)/discover/gaps/components/GapCardItem.tsx (1177 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-fca012a0ed6d1029", "name": "Very large file: frontend/app/(researcher)/discover/gaps/components/GapForestPlot.tsx (1212 lines)", "shortDescription": {"text": "Very large file: frontend/app/(researcher)/discover/gaps/components/GapForestPlot.tsx (1212 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-5ef8aa592d12dbed", "name": "Very large file: frontend/app/(researcher)/discover/gaps/components/PaperTracePanel.tsx (1915 lines)", "shortDescription": {"text": "Very large file: frontend/app/(researcher)/discover/gaps/components/PaperTracePanel.tsx (1915 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-2bfee8d0de423fbd", "name": "Very large file: frontend/app/(researcher)/discover/gaps/hooks/useGapAnalysisPipeline.ts (4387 lines)", "shortDescription": {"text": "Very large file: frontend/app/(researcher)/discover/gaps/hooks/useGapAnalysisPipeline.ts (4387 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-049ab4155479bd56", "name": "Very large file: frontend/lib/types/search-stream.types.ts (1742 lines)", "shortDescription": {"text": "Very large file: frontend/lib/types/search-stream.types.ts (1742 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-d189387aa4ededc8", "name": "Very large file: frontend/lib/stores/knowledge-map.store.ts (1686 lines)", "shortDescription": {"text": "Very large file: frontend/lib/stores/knowledge-map.store.ts (1686 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-a2325cef3fa03717", "name": "Very large file: frontend/lib/api/services/unified-theme-api.service.ts (1596 lines)", "shortDescription": {"text": "Very large file: frontend/lib/api/services/unified-theme-api.service.ts (1596 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-f2963e763038bb07", "name": "Very large file: frontend/lib/hooks/useWebSocketBase.ts (1806 lines)", "shortDescription": {"text": "Very large file: frontend/lib/hooks/useWebSocketBase.ts (1806 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-3d2de184bfc0d70f", "name": "Very large file: frontend/lib/hooks/useSearchWebSocket.ts (3920 lines)", "shortDescription": {"text": "Very large file: frontend/lib/hooks/useSearchWebSocket.ts (3920 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-b2ecf4f2f2056d69", "name": "Very large file: frontend/lib/hooks/useKnowledgeMapData.ts (1968 lines)", "shortDescription": {"text": "Very large file: frontend/lib/hooks/useKnowledgeMapData.ts (1968 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-c0e3f73dd99ce47b", "name": "Very large file: frontend/lib/hooks/useResearchQuestionWebSocket.ts (1566 lines)", "shortDescription": {"text": "Very large file: frontend/lib/hooks/useResearchQuestionWebSocket.ts (1566 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-7fa7804e27386430", "name": "Very large file: frontend/lib/hooks/useKnowledgeGraphBuildSocket.ts (1096 lines)", "shortDescription": {"text": "Very large file: frontend/lib/hooks/useKnowledgeGraphBuildSocket.ts (1096 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-aefca24848c504dc", "name": "Very large file: frontend/lib/hooks/__tests__/useKnowledgeMapData.test.ts (1528 lines)", "shortDescription": {"text": "Very large file: frontend/lib/hooks/__tests__/useKnowledgeMapData.test.ts (1528 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-e08678d52efcaec4", "name": "Very large file: frontend/lib/services/literature-api.service.ts (6325 lines)", "shortDescription": {"text": "Very large file: frontend/lib/services/literature-api.service.ts (6325 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-bebb814419460910", "name": "Very large file: frontend/lib/services/search-suggestions.service.ts (2571 lines)", "shortDescription": {"text": "Very large file: frontend/lib/services/search-suggestions.service.ts (2571 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-fb4b1cc5bd8297e5", "name": "Very large file: frontend/lib/services/__tests__/search-suggestions.service.test.ts (1908 lines)", "shortDescription": {"text": "Very large file: frontend/lib/services/__tests__/search-suggestions.service.test.ts (1908 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-2c63903a1b6a27a2", "name": "Very large file: frontend/e2e/phase-10930-knowledge-map-science.spec.ts (1179 lines)", "shortDescription": {"text": "Very large file: frontend/e2e/phase-10930-knowledge-map-science.spec.ts (1179 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-afb4f6c71292d0b3", "name": "Very large file: scripts/dev-netflix-v2.js (1719 lines)", "shortDescription": {"text": "Very large file: scripts/dev-netflix-v2.js (1719 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-f02475bc8527891f", "name": "Very large file: backend/src/common/monitoring/enhanced-metrics.service.ts (2258 lines)", "shortDescription": {"text": "Very large file: backend/src/common/monitoring/enhanced-metrics.service.ts (2258 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-12bd02248c6bd651", "name": "Very large file: backend/src/modules/ai/constants/dr-onionstein-golden-questions.constants.ts (1554 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/ai/constants/dr-onionstein-golden-questions.constants.ts (1554 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-5bbdfc6be8482535", "name": "Very large file: backend/src/modules/ai/gateways/dr-onionstein.gateway.ts (1772 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/ai/gateways/dr-onionstein.gateway.ts (1772 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-432f860a20fb4679", "name": "Very large file: backend/src/modules/ai/services/unified-ai.service.ts (2083 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/ai/services/unified-ai.service.ts (2083 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-86fb71e7c4494ec3", "name": "Very large file: backend/src/modules/ai/services/dr-onionstein-study-data.service.ts (1861 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/ai/services/dr-onionstein-study-data.service.ts (1861 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-3974f58ae6166fc1", "name": "Very large file: backend/src/modules/ai/services/dr-onionstein-orchestrator.service.ts (2657 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/ai/services/dr-onionstein-orchestrator.service.ts (2657 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-77fbbe5855c7b06c", "name": "Very large file: backend/src/modules/ai/services/research-question-assistant.service.ts (3970 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/ai/services/research-question-assistant.service.ts (3970 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-6ffa8a5e1db187bc", "name": "Very large file: backend/src/modules/ai/services/query-expansion.service.ts (1290 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/ai/services/query-expansion.service.ts (1290 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-ab5f4d73d225b0f7", "name": "Very large file: backend/src/modules/ai/services/__tests__/research-question-assistant.service.spec.ts (1901 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/ai/services/__tests__/research-question-assistant.service.spec.ts (1901 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-ce4fd8b8e6df9c2d", "name": "Very large file: backend/src/modules/auth/controllers/auth.controller.ts (2910 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/auth/controllers/auth.controller.ts (2910 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-1da833a2246967f8", "name": "Very large file: backend/src/modules/auth/services/auth.service.ts (1688 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/auth/services/auth.service.ts (1688 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-2811bc6ec477a379", "name": "Very large file: backend/src/modules/auth/services/user-deletion.service.ts (1588 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/auth/services/user-deletion.service.ts (1588 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-1c25b119fc476ab8", "name": "Very large file: backend/src/modules/literature/literature.gateway.ts (3891 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/literature.gateway.ts (3891 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-516f9b9515b6f0da", "name": "Very large file: backend/src/modules/literature/literature.module.ts (875 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/literature.module.ts (875 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-5493b3412340b38f", "name": "Very large file: backend/src/modules/literature/literature.service.ts (3091 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/literature.service.ts (3091 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-c86ef609b68e15f9", "name": "Very large file: backend/src/modules/literature/__tests__/integration/e2e-pipeline.integration.spec.ts (1902 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/__tests__/integration/e2e-pipeline.integration.spec.ts (1902 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-1f83f4bd2c29ecab", "name": "Very large file: backend/src/modules/literature/__tests__/integration/theme-extraction-6stage.integration.spec.ts (2227 ", "shortDescription": {"text": "Very large file: backend/src/modules/literature/__tests__/integration/theme-extraction-6stage.integration.spec.ts (2227 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-213cb0a70b8235f9", "name": "Very large file: backend/src/modules/literature/__tests__/integration/lit-review-to-gaps.integration.spec.ts (1472 lines", "shortDescription": {"text": "Very large file: backend/src/modules/literature/__tests__/integration/lit-review-to-gaps.integration.spec.ts (1472 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-373cdfff6c0d0ee0", "name": "Very large file: backend/src/modules/literature/__tests__/integration/adversarial-pipeline.integration.spec.ts (2233 lin", "shortDescription": {"text": "Very large file: backend/src/modules/literature/__tests__/integration/adversarial-pipeline.integration.spec.ts (2233 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-ee4f146fb676f7c6", "name": "Very large file: backend/src/modules/literature/dto/literature.dto.ts (2930 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/dto/literature.dto.ts (2930 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-92538bbc99bd6998", "name": "Very large file: backend/src/modules/literature/controllers/gap-analyze-writes.controller.ts (2089 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/controllers/gap-analyze-writes.controller.ts (2089 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-67b3f1991b1bb1c2", "name": "Very large file: backend/src/modules/literature/controllers/bibliometric-report.controller.ts (1338 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/controllers/bibliometric-report.controller.ts (1338 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-46851a99f8d34266", "name": "Very large file: backend/src/modules/literature/controllers/paper-library.controller.ts (1496 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/controllers/paper-library.controller.ts (1496 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-2c2afe0ea8a8d3c3", "name": "Very large file: backend/src/modules/literature/controllers/corpus-snapshot.controller.ts (1779 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/controllers/corpus-snapshot.controller.ts (1779 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-f4a1a469f66ae9c1", "name": "Very large file: backend/src/modules/literature/controllers/knowledge-graph.controller.ts (3403 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/controllers/knowledge-graph.controller.ts (3403 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-e5548b0bd44ed8b3", "name": "Very large file: backend/src/modules/literature/controllers/theme-extraction-advanced.controller.ts (2400 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/controllers/theme-extraction-advanced.controller.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-e134a9acbd4bd213", "name": "Very large file: backend/src/modules/literature/controllers/__tests__/knowledge-graph.controller.spec.ts (2470 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/controllers/__tests__/knowledge-graph.controller.spec.ts (2470 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-b05423c2c5a552b1", "name": "Very large file: backend/src/modules/literature/controllers/__tests__/corpus-snapshot.controller.spec.ts (1676 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/controllers/__tests__/corpus-snapshot.controller.spec.ts (1676 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-9c226b005433794f", "name": "Very large file: backend/src/modules/literature/controllers/__tests__/gap-analyze-writes.controller.spec.ts (1303 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/controllers/__tests__/gap-analyze-writes.controller.spec.ts (1303 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-8dcf6bcc24edbfb4", "name": "Very large file: backend/src/modules/literature/gateways/screening-workflow.gateway.ts (1494 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/gateways/screening-workflow.gateway.ts (1494 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-5bba3364b5483f0f", "name": "Very large file: backend/src/modules/literature/services/screening-workflow.service.ts (1829 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/screening-workflow.service.ts (1829 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-b8a5567af9d4d09f", "name": "Very large file: backend/src/modules/literature/services/hypothesis-generation-pipeline.service.ts (2585 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/hypothesis-generation-pipeline.service.ts (2585 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-d8226d4c2df2681c", "name": "Very large file: backend/src/modules/literature/services/unified-theme-extraction.service.ts (4589 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/unified-theme-extraction.service.ts (4589 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-19aadd102dbe3ab7", "name": "Very large file: backend/src/modules/literature/services/universal-citation-enrichment.service.ts (1831 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/universal-citation-enrichment.service.ts (1831 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-007d778660543d7f", "name": "Very large file: backend/src/modules/literature/services/gap-persistence.service.ts (2381 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/gap-persistence.service.ts (2381 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-22848eadd99a2f39", "name": "Very large file: backend/src/modules/literature/services/neural-relevance.service.ts (1366 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/neural-relevance.service.ts (1366 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-f8d9d0d3f4f3f3de", "name": "Very large file: backend/src/modules/literature/services/collaborative-screening.service.ts (1811 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/collaborative-screening.service.ts (1811 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-2e8e023ba1ad7578", "name": "Very large file: backend/src/modules/literature/services/sentence-provenance.service.ts (1865 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/sentence-provenance.service.ts (1865 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-ab5ba32e5b7e8374", "name": "Very large file: backend/src/modules/literature/services/evidence-table.service.ts (1891 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/evidence-table.service.ts (1891 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-d4b150b775167c3a", "name": "Very large file: backend/src/modules/literature/services/paper-database.service.ts (2872 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/paper-database.service.ts (2872 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-dbb02c512a86b516", "name": "Very large file: backend/src/modules/literature/services/unified-thematization.service.ts (2176 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/unified-thematization.service.ts (2176 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-04a5329b0c18ff76", "name": "Very large file: backend/src/modules/literature/services/search-pipeline.service.ts (4311 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/search-pipeline.service.ts (4311 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-6bdcd15e1346471b", "name": "Very large file: backend/src/modules/literature/services/theme-extraction.service.ts (2496 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/theme-extraction.service.ts (2496 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-ca2d432d17a5a58e", "name": "Very large file: backend/src/modules/literature/services/intelligent-fulltext-detection.service.ts (3555 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/intelligent-fulltext-detection.service.ts (3555 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-2ab8d8488ac6bdbf", "name": "Very large file: backend/src/modules/literature/services/source-router.service.ts (1330 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/source-router.service.ts (1330 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-cd284453913b0f16", "name": "Very large file: backend/src/modules/literature/services/search-stream.service.ts (9519 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/search-stream.service.ts (9519 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-7a8b2eb6200cec7c", "name": "Very large file: backend/src/modules/literature/services/search-artifact.service.ts (1359 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/search-artifact.service.ts (1359 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-78357e72b1833abf", "name": "Very large file: backend/src/modules/literature/services/html-full-text.service.ts (1541 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/html-full-text.service.ts (1541 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-4c4cd32fd8cc8120", "name": "Very large file: backend/src/modules/literature/services/orcid-works.service.ts (1722 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/orcid-works.service.ts (1722 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-48df40a50261b69b", "name": "Very large file: backend/src/modules/literature/services/claim-extraction.service.ts (2012 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/claim-extraction.service.ts (2012 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-cd1f8c7af827bb8f", "name": "Very large file: backend/src/modules/literature/services/knowledge-graph.service.ts (6189 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/knowledge-graph.service.ts (6189 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-d43c214b08c428cb", "name": "Very large file: backend/src/modules/literature/services/citation-validation.service.ts (2419 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/citation-validation.service.ts (2419 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-557e77a0598aa8f0", "name": "Very large file: backend/src/modules/literature/services/prisma-generator.service.ts (1790 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/prisma-generator.service.ts (1790 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-eb155523f277ac6a", "name": "Very large file: backend/src/modules/literature/services/corpus-snapshot.service.ts (1629 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/corpus-snapshot.service.ts (1629 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-d8cc8d7184deb42a", "name": "Very large file: backend/src/modules/literature/services/structural-gap-resonance.service.ts (1949 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/structural-gap-resonance.service.ts (1949 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-db01a478756b07c7", "name": "Very large file: backend/src/modules/literature/services/pdf-parsing.service.ts (2666 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/pdf-parsing.service.ts (2666 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-afb641d61ceed2e3", "name": "Very large file: backend/src/modules/literature/services/gap-analyzer.service.spec.ts (1830 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/gap-analyzer.service.spec.ts (1830 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-6f4200bb8d2a8672", "name": "Very large file: backend/src/modules/literature/services/__tests__/gap-refinement-loop.service.spec.ts (1633 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/__tests__/gap-refinement-loop.service.spec.ts (1633 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-8d49616728d6f0e0", "name": "Very large file: backend/src/modules/literature/services/__tests__/discourse-triangulation.service.spec.ts (1479 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/__tests__/discourse-triangulation.service.spec.ts (1479 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-7a1e1f770eff817b", "name": "Very large file: backend/src/modules/literature/services/__tests__/evidence-quality-scorer.service.spec.ts (1649 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/__tests__/evidence-quality-scorer.service.spec.ts (1649 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-7a27855db3978854", "name": "Very large file: backend/src/modules/literature/services/__tests__/intelligent-fulltext-detection.service.spec.ts (1643 ", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/__tests__/intelligent-fulltext-detection.service.spec.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-86e9c535e19b0d2a", "name": "Very large file: backend/src/modules/literature/services/__tests__/prisma-generator.service.spec.ts (1374 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/__tests__/prisma-generator.service.spec.ts (1374 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-e0fb95374c1a588e", "name": "Very large file: backend/src/modules/literature/services/__tests__/knowledge-graph.service.spec.ts (2865 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/__tests__/knowledge-graph.service.spec.ts (2865 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-92bfa8fe7c591096", "name": "Very large file: backend/src/modules/literature/services/__tests__/search-pipeline.service.spec.ts (1540 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/__tests__/search-pipeline.service.spec.ts (1540 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-397e8cfd2e69127a", "name": "Very large file: backend/src/modules/literature/services/__tests__/wiley.service.spec.ts (1597 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/__tests__/wiley.service.spec.ts (1597 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-51dff750b774147b", "name": "Very large file: backend/src/modules/literature/services/__tests__/purpose-aware-scoring.service.spec.ts (1520 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/__tests__/purpose-aware-scoring.service.spec.ts (1520 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-70f634460a29096c", "name": "Very large file: backend/src/modules/literature/services/__tests__/openalex.service.spec.ts (1610 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/__tests__/openalex.service.spec.ts (1610 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-0d9a61f1686b4251", "name": "Very large file: backend/src/modules/literature/services/__tests__/concourse-mining.service.spec.ts (1567 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/__tests__/concourse-mining.service.spec.ts (1567 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-b1fe9b55b7aedcc3", "name": "Very large file: backend/src/modules/literature/services/__tests__/ieee.service.spec.ts (1587 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/__tests__/ieee.service.spec.ts (1587 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-e25fb537db76e047", "name": "Very large file: backend/src/modules/literature/services/__tests__/unified-theme-extraction-6stage.service.spec.ts (1778", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/__tests__/unified-theme-extraction-6stage.service.spec.ts (1778 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-70e9c6766121f7ca", "name": "Very large file: backend/src/modules/literature/services/gap-analysis/gap-refinement-loop.service.ts (2189 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/gap-analysis/gap-refinement-loop.service.ts (2189 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-732724734a0215aa", "name": "Very large file: backend/src/modules/literature/services/gap-analysis/gap-detection.service.ts (3109 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/gap-analysis/gap-detection.service.ts (3109 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-bb0fa64622842394", "name": "Very large file: backend/src/modules/literature/services/theme-extraction/coherence-calculation.service.ts (3473 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/theme-extraction/coherence-calculation.service.ts (3473 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-f0999b1b578a6273", "name": "Very large file: backend/src/modules/literature/services/theme-extraction/theme-refinement.service.spec.ts (1362 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/theme-extraction/theme-refinement.service.spec.ts (1362 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-dc9b4d006879ccf1", "name": "Very large file: backend/src/modules/literature/services/theme-extraction/validation-strategy.service.ts (1966 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/theme-extraction/validation-strategy.service.ts (1966 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-77eebe556405f012", "name": "Very large file: backend/src/modules/literature/services/theme-extraction/theme-generation-stage.service.ts (1333 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/theme-extraction/theme-generation-stage.service.ts (1333 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-ab3e32db0d5911eb", "name": "Very large file: backend/src/modules/literature/services/theme-extraction/coherence-calculation.service.spec.ts (4189 li", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/theme-extraction/coherence-calculation.service.spec.ts (4189 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-9ed2d4555a57675c", "name": "Very large file: backend/src/modules/literature/services/theme-extraction/validation-strategy.service.spec.ts (1944 line", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/theme-extraction/validation-strategy.service.spec.ts (1944 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-64b20c9ba331e749", "name": "Very large file: backend/src/modules/literature/services/theme-extraction/saturation-analysis.service.ts (2198 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/theme-extraction/saturation-analysis.service.ts (2198 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-fd296ba98a136841", "name": "Very large file: backend/src/modules/literature/services/theme-extraction/coherence-ensemble.service.ts (1384 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/theme-extraction/coherence-ensemble.service.ts (1384 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-446046a01213957c", "name": "Very large file: backend/src/modules/literature/services/theme-extraction/saturation-analysis.service.spec.ts (1497 line", "shortDescription": {"text": "Very large file: backend/src/modules/literature/services/theme-extraction/saturation-analysis.service.spec.ts (1497 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-414a436ae99ede64", "name": "Very large file: backend/src/modules/report/controllers/report.controller.ts (2402 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/report/controllers/report.controller.ts (2402 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-bf240832b00d6b1d", "name": "Very large file: backend/src/modules/report/services/report-generator.service.ts (3827 lines)", "shortDescription": {"text": "Very large file: backend/src/modules/report/services/report-generator.service.ts (3827 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-91626cccb03092ae", "name": "370 TODO/FIXME markers", "shortDescription": {"text": "370 TODO/FIXME markers"}, "fullDescription": {"text": "High count of TODO/FIXME/HACK markers \u2014 track them as issues so they're not forgotten."}, "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-0e8a76eb13fd3249", "name": "Node manifest has dependencies but no lockfile: frontend/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: frontend/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-14047004e0b8270b", "name": "Node manifest has dependencies but no lockfile: packages/schemas/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/schemas/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3a092b5c39e242a1", "name": "Node manifest has dependencies but no lockfile: backend/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: backend/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "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 7210 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 956 placeholder/mock markers across 373 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-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "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, lockfile. 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, lockfile. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cc55229a7a3c078d", "name": "Agent authority lacks a verifier contract: .mcp.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .mcp.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2c5f98b152cddb6d", "name": "Agent authority lacks a verifier contract: .claude/launch.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/launch.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fabedc9557e3815b", "name": "Agent authority lacks a verifier contract: .claude/commands/collab-refs/MECHANICAL_SWEEP.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/collab-refs/MECHANICAL_SWEEP.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0612aecc07393f21", "name": "`fetch()` without try/.catch or AbortSignal \u2014 __tests__/phase-6.85-integration.test.tsx:253", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 __tests__/phase-6.85-integration.test.tsx:253"}, "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-adcd3368593f5a8e", "name": "Commented-code block (9 lines) in frontend/playwright.config.ts:23", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/playwright.config.ts:23"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a78ef82a73e0d95b", "name": "Commented-code block (5 lines) in frontend/tailwind.config.js:157", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/tailwind.config.js:157"}, "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-137dca2b3d927052", "name": "Commented-code block (9 lines) in frontend/middleware.ts:21", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/middleware.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-bcfad2f732c6e6ed", "name": "Commented-code block (9 lines) in frontend/sentry.client.config.ts:27", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/sentry.client.config.ts:27"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-907333989adfae25", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/__tests__/e2e/participant-flow.spec.ts:413", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/__tests__/e2e/participant-flow.spec.ts:413"}, "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-23f87ab686b94c1e", "name": "Commented-code block (6 lines) in frontend/test/setup.ts:24", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/test/setup.ts:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b3a9f6c87002dc7c", "name": "Commented-code block (6 lines) in frontend/test/auth/auth.test.tsx:68", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/test/auth/auth.test.tsx:68"}, "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-e0d4b67e32af035b", "name": "Commented-code block (5 lines) in frontend/scripts/tier61-km-browser-verify.mjs:11", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/scripts/tier61-km-browser-verify.mjs: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-61a9dcf54b099115", "name": "Commented-code block (6 lines) in frontend/scripts/tier61-e2e-lit-to-km.mjs:335", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/scripts/tier61-e2e-lit-to-km.mjs:335"}, "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-06a69e9161f3353a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/scripts/tier61-e2e-lit-to-km.mjs:282", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/scripts/tier61-e2e-lit-to-km.mjs:282"}, "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-6572db741cbc17e3", "name": "Commented-code block (5 lines) in frontend/components/participant/Commentary.tsx:15", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/participant/Commentary.tsx:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-523ed0382416bea6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/study-creation/ResearcherSignature.tsx:50", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/study-creation/ResearcherSignature.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-25e90ebc38a33047", "name": "Commented-code block (7 lines) in frontend/components/ai/DrOnionChatPanel.tsx:54", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/components/ai/DrOnionChatPanel.tsx:54"}, "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-57c3383dbc3ae91e", "name": "Commented-code block (9 lines) in frontend/components/ai/DrOnionLiquidGlassFab.tsx:65", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/components/ai/DrOnionLiquidGlassFab.tsx:65"}, "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-0dd031e0ee6bd6d2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/ai/AIUsageDashboard.tsx:101", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/ai/AIUsageDashboard.tsx:101"}, "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-c825da496c707a38", "name": "Commented-code block (6 lines) in frontend/components/ai/DrOnionSuggestionCards.tsx:108", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/components/ai/DrOnionSuggestionCards.tsx:108"}, "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-2f15865016593fc8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/hub/sections/VisualizationCenter.tsx:382", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/hub/sections/VisualizationCenter.tsx:382"}, "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-ba8b9b1147fbba83", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/hub/sections/DataExplorer.tsx:118", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/hub/sections/DataExplorer.tsx:118"}, "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-711d780ec25deb13", "name": "Commented-code block (10 lines) in frontend/components/navigation/UnifiedSidebar.tsx:185", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/components/navigation/UnifiedSidebar.tsx:185"}, "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-fa6a7d9320b8bb03", "name": "Commented-code block (6 lines) in frontend/components/navigation/DiscoverStepGuard.tsx:58", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/components/navigation/DiscoverStepGuard.tsx:58"}, "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-1151aff4f3220097", "name": "Commented-code block (5 lines) in frontend/components/auth/TransitionStage.tsx:136", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/auth/TransitionStage.tsx:136"}, "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-d9296653b53e0c28", "name": "Commented-code block (14 lines) in frontend/components/auth/PostLoginTransition.tsx:102", "shortDescription": {"text": "Commented-code block (14 lines) in frontend/components/auth/PostLoginTransition.tsx:102"}, "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-21d3517cdcdf2921", "name": "Commented-code block (8 lines) in frontend/components/questionnaire/QuestionnaireBuilderPro.tsx:65", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/components/questionnaire/QuestionnaireBuilderPro.tsx:65"}, "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-8779b342de50e1b5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/questionnaire/professional/APIAccessManager.tsx:119", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/questionnaire/professional/APIAccessManager.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-6b8ba05ccdb1ebf7", "name": "Commented-code block (10 lines) in frontend/components/ui/dropdown-menu.tsx:75", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/components/ui/dropdown-menu.tsx:75"}, "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-a922fdca2218f632", "name": "Commented-code block (8 lines) in frontend/components/ui/AutoTriggerErrorRecovery.tsx:144", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/components/ui/AutoTriggerErrorRecovery.tsx:144"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-48bfec0de6d04411", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/ui/HealthStatusIndicator.tsx:90", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/ui/HealthStatusIndicator.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-fc038f88dc469bbe", "name": "Commented-code block (6 lines) in frontend/components/visualizations/q-methodology/EigenvalueScreePlot.tsx:187", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/components/visualizations/q-methodology/EigenvalueScreePlot.tsx:187"}, "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-6cef3cdbab91287d", "name": "Commented-code block (5 lines) in frontend/components/visualizations/q-methodology/FactorArraysVisualization.tsx:221", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/visualizations/q-methodology/FactorArraysVisualization.tsx:221"}, "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-82574787a5b44475", "name": "Commented-code block (7 lines) in frontend/components/visualizations/q-methodology/CorrelationHeatmap.tsx:234", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/components/visualizations/q-methodology/CorrelationHeatmap.tsx:234"}, "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-68f8acad85207dbd", "name": "Commented-code block (5 lines) in frontend/components/visualizations/q-methodology/FactorLoadingChart.tsx:299", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/visualizations/q-methodology/FactorLoadingChart.tsx:299"}, "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-6dea25d8ee5b3e31", "name": "Commented-code block (5 lines) in frontend/components/providers/AutoFullTextDetectionProvider.tsx:113", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/providers/AutoFullTextDetectionProvider.tsx:113"}, "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-b83fb1f9fdeb1a80", "name": "Commented-code block (6 lines) in frontend/components/providers/PurposeTintProvider.tsx:44", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/components/providers/PurposeTintProvider.tsx:44"}, "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-1dd961cdcc9e9ac9", "name": "Commented-code block (6 lines) in frontend/components/providers/AuthProvider.tsx:115", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/components/providers/AuthProvider.tsx:115"}, "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-f55483de36471966", "name": "Commented-code block (10 lines) in frontend/components/literature/CitationEnrichmentMonitoringCard.tsx:80", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/components/literature/CitationEnrichmentMonitoringCard.tsx:80"}, "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-8eea0edffa2d95ea", "name": "Commented-code block (7 lines) in frontend/components/literature/StudiesBootstrapper.tsx:82", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/components/literature/StudiesBootstrapper.tsx:82"}, "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-2018a2cb61973783", "name": "Commented-code block (5 lines) in frontend/components/literature/studiesFetchWithRetry.ts:173", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/literature/studiesFetchWithRetry.ts:173"}, "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-e095184a6894c7c8", "name": "Commented-code block (10 lines) in frontend/components/literature/StudyContextBanner.tsx:75", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/components/literature/StudyContextBanner.tsx:75"}, "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-0b3b95111cf576cd", "name": "Commented-code block (5 lines) in frontend/components/literature/CreateStudyModal.tsx:344", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/literature/CreateStudyModal.tsx:344"}, "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-e149864ec711533d", "name": "Commented-code block (5 lines) in frontend/components/literature/TikTokTrendsGrid.tsx:72", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/literature/TikTokTrendsGrid.tsx:72"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fd7296409f7aca45", "name": "Commented-code block (6 lines) in frontend/components/literature/__tests__/MethodologyModal.test.tsx:120", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/components/literature/__tests__/MethodologyModal.test.tsx:120"}, "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-d39fd2df6b8c2553", "name": "Commented-code block (5 lines) in frontend/components/literature/prisma/PRISMAFlowDiagram.tsx:517", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/literature/prisma/PRISMAFlowDiagram.tsx:517"}, "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-722e2e2dd2944938", "name": "Commented-code block (7 lines) in frontend/components/literature/ai-research-question/AIResearchQuestionAssistant.tsx:58", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/components/literature/ai-research-question/AIResearchQuestionAssistant.tsx:581"}, "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-f3d4feacd1830182", "name": "Commented-code block (7 lines) in frontend/components/literature/ai-research-question/QueryIntelligencePanel.tsx:138", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/components/literature/ai-research-question/QueryIntelligencePanel.tsx:138"}, "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-14325c53a2b0435f", "name": "Commented-code block (6 lines) in frontend/components/literature/ai-research-question/__tests__/AIResearchQuestionAssist", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/components/literature/ai-research-question/__tests__/AIResearchQuestionAssistant.test.tsx:184"}, "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-ff2985858afb3a8f", "name": "Commented-code block (5 lines) in frontend/components/literature/sentence-provenance/SentenceProvenanceViewer.tsx:702", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/literature/sentence-provenance/SentenceProvenanceViewer.tsx:702"}, "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-d7cb047f00ff1008", "name": "Commented-code block (6 lines) in frontend/components/literature/evidence/EvidenceTierBadge.tsx:110", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/components/literature/evidence/EvidenceTierBadge.tsx:110"}, "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-2cce8b385ca07f79", "name": "Commented-code block (6 lines) in frontend/components/literature/evidence/derivePaperEvidenceMeta.ts:86", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/components/literature/evidence/derivePaperEvidenceMeta.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-53a0a9ac012dc229", "name": "Commented-code block (8 lines) in frontend/components/literature/evidence/ThemeChip.tsx:104", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/components/literature/evidence/ThemeChip.tsx:104"}, "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-d14e7a19fcff5ed1", "name": "Commented-code block (6 lines) in frontend/components/literature/screening/ConflictResolutionPanel.tsx:54", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/components/literature/screening/ConflictResolutionPanel.tsx:54"}, "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-f1b64f2326f043f6", "name": "Commented-code block (9 lines) in frontend/components/literature/evidence-table/EvidenceTableBuilder.tsx:55", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/components/literature/evidence-table/EvidenceTableBuilder.tsx: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-ac07e38c73ee6893", "name": "Commented-code block (7 lines) in frontend/components/interpretation/AlternativeViewpointGenerator.tsx:106", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/components/interpretation/AlternativeViewpointGenerator.tsx:106"}, "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-824a06ddc34de9c8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/reports/ReportGenerationUI.tsx:8", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/reports/ReportGenerationUI.tsx: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-e4ede723f7016ce9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/stimuli/StimuliUploadSystemV3.tsx:166", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/stimuli/StimuliUploadSystemV3.tsx:166"}, "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-acfe04cb125f7ecf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/stimuli/StimuliUploadSystemV4.tsx:182", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/stimuli/StimuliUploadSystemV4.tsx:182"}, "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-ce84b15094d983cb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/stimuli/StimuliUploadSystem.tsx:138", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/stimuli/StimuliUploadSystem.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-d610b1231b57be8e", "name": "Commented-code block (6 lines) in frontend/components/jobs/GlobalJobSubscribers.tsx:32", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/components/jobs/GlobalJobSubscribers.tsx:32"}, "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-307d15385d49bc36", "name": "Commented-code block (5 lines) in frontend/components/jobs/AutoRunDisclosureBanner.tsx:36", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/jobs/AutoRunDisclosureBanner.tsx:36"}, "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-ddda10dea2f9fce1", "name": "Commented-code block (8 lines) in frontend/components/knowledge/BuildProgressBanner.tsx:82", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/components/knowledge/BuildProgressBanner.tsx:82"}, "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-f79e996e0e51dc94", "name": "Commented-code block (11 lines) in frontend/components/knowledge/KnowledgeMapScopeBar.tsx:264", "shortDescription": {"text": "Commented-code block (11 lines) in frontend/components/knowledge/KnowledgeMapScopeBar.tsx:264"}, "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-7048d1a35c3bf858", "name": "Commented-code block (5 lines) in frontend/components/knowledge/EdgeProvenanceDrawer.tsx:67", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/EdgeProvenanceDrawer.tsx:67"}, "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-37ee4e469e043909", "name": "Commented-code block (5 lines) in frontend/components/knowledge/KnowledgeMapShell.tsx:78", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/KnowledgeMapShell.tsx:78"}, "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-682595e63420db53", "name": "Commented-code block (8 lines) in frontend/components/knowledge/KnowledgeMapAnnouncer.tsx:68", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/components/knowledge/KnowledgeMapAnnouncer.tsx:68"}, "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-277f365f595246c0", "name": "Commented-code block (7 lines) in frontend/components/knowledge/KnowledgeMapStatus.tsx:119", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/KnowledgeMapStatus.tsx:119"}, "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-3372baec9b81f961", "name": "Commented-code block (10 lines) in frontend/components/knowledge/CorpusSnapshotPanel.tsx:93", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/components/knowledge/CorpusSnapshotPanel.tsx:93"}, "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-fd699aef3965e6ca", "name": "Commented-code block (8 lines) in frontend/components/knowledge/__tests__/KnowledgeMapStatus.test.tsx:344", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/components/knowledge/__tests__/KnowledgeMapStatus.test.tsx:344"}, "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-a49b5b3fdf12f8d6", "name": "Commented-code block (5 lines) in frontend/components/knowledge/__tests__/shell-narrowing-helpers.test.ts:20", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/__tests__/shell-narrowing-helpers.test.ts:20"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c025575e8762498e", "name": "Commented-code block (5 lines) in frontend/components/knowledge/__tests__/KnowledgeMapAnnouncer.test.tsx:23", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/__tests__/KnowledgeMapAnnouncer.test.tsx:23"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b9994cbbec226949", "name": "Commented-code block (5 lines) in frontend/components/knowledge/__tests__/CorpusSnapshotPanel.test.tsx:63", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/__tests__/CorpusSnapshotPanel.test.tsx:63"}, "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-0ebdc17e7a2fa7ba", "name": "Commented-code block (7 lines) in frontend/components/knowledge/__tests__/edge-pipeline-integration.test.ts:129", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/__tests__/edge-pipeline-integration.test.ts:129"}, "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-ddf6568a662a179b", "name": "Commented-code block (8 lines) in frontend/components/knowledge/__tests__/EdgeProvenanceDrawer.test.tsx:87", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/components/knowledge/__tests__/EdgeProvenanceDrawer.test.tsx:87"}, "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-538fd89b50e9653a", "name": "Commented-code block (8 lines) in frontend/components/knowledge/__tests__/KnowledgeMapScopeBar.test.tsx:156", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/components/knowledge/__tests__/KnowledgeMapScopeBar.test.tsx:156"}, "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-fe148b38ee3599a4", "name": "Commented-code block (7 lines) in frontend/components/knowledge/panels/MetricsPanel.tsx:77", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/panels/MetricsPanel.tsx:77"}, "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-fdd1b332eb0cc008", "name": "Commented-code block (17 lines) in frontend/components/knowledge/panels/NodeDetailPanel.tsx:206", "shortDescription": {"text": "Commented-code block (17 lines) in frontend/components/knowledge/panels/NodeDetailPanel.tsx:206"}, "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-50f8f9ac56bd8d18", "name": "Commented-code block (6 lines) in frontend/components/knowledge/panels/FilterPanel.tsx:96", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/panels/FilterPanel.tsx:96"}, "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-90480643d687b4e6", "name": "Commented-code block (6 lines) in frontend/components/knowledge/panels/ClusterBrowserPanel.tsx:103", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/panels/ClusterBrowserPanel.tsx:103"}, "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-25a608549d5c0f47", "name": "Commented-code block (12 lines) in frontend/components/knowledge/panels/ProductivityDashboard.tsx:239", "shortDescription": {"text": "Commented-code block (12 lines) in frontend/components/knowledge/panels/ProductivityDashboard.tsx: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-33cab27d4a71af3f", "name": "Commented-code block (6 lines) in frontend/components/knowledge/panels/NormalizationPanel.tsx:72", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/panels/NormalizationPanel.tsx:72"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-122fd47622758aca", "name": "Commented-code block (8 lines) in frontend/components/knowledge/panels/CoverageCard.tsx:103", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/components/knowledge/panels/CoverageCard.tsx:103"}, "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-4e842f1742a926d2", "name": "Commented-code block (6 lines) in frontend/components/knowledge/panels/CommunityDetailPanel.tsx:54", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/panels/CommunityDetailPanel.tsx:54"}, "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-fef14abed56f518a", "name": "Commented-code block (7 lines) in frontend/components/knowledge/panels/InterdisciplinarityPanel.tsx:322", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/panels/InterdisciplinarityPanel.tsx:322"}, "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-72ce71897f68c97d", "name": "Commented-code block (5 lines) in frontend/components/knowledge/panels/__tests__/MetricsPanel.test.tsx:99", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/panels/__tests__/MetricsPanel.test.tsx:99"}, "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-137fd9ae78b1b6cc", "name": "Commented-code block (7 lines) in frontend/components/knowledge/panels/__tests__/sidebar-footer.test.tsx:141", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/panels/__tests__/sidebar-footer.test.tsx:141"}, "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-36899ceb8b1e6348", "name": "Commented-code block (6 lines) in frontend/components/knowledge/panels/__tests__/ClusterBrowserPanel.test.tsx:42", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/panels/__tests__/ClusterBrowserPanel.test.tsx:42"}, "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-fe5266af7e0a553d", "name": "Commented-code block (8 lines) in frontend/components/knowledge/legend/LegendOverlaySection.tsx:54", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/components/knowledge/legend/LegendOverlaySection.tsx:54"}, "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-a51d3a43cc37a39a", "name": "Commented-code block (7 lines) in frontend/components/knowledge/legend/KnowledgeMapLegend.tsx:80", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/legend/KnowledgeMapLegend.tsx:80"}, "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-f92a7dc944a62e83", "name": "Commented-code block (5 lines) in frontend/components/knowledge/legend/__tests__/LegendOverlaySection.visual-contract.te", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/legend/__tests__/LegendOverlaySection.visual-contract.test.tsx:64"}, "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-51abf2d390cf0f7f", "name": "Commented-code block (5 lines) in frontend/components/knowledge/onboarding/KnowledgeMapTour.tsx:25", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/onboarding/KnowledgeMapTour.tsx:25"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a18353179e0ee59f", "name": "Commented-code block (9 lines) in frontend/components/knowledge/hooks/useKnowledgeMapKeyboard.ts:137", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/components/knowledge/hooks/useKnowledgeMapKeyboard.ts:137"}, "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-61be316f40cfef5f", "name": "Commented-code block (12 lines) in frontend/components/knowledge/hooks/useTreemapLayout.ts:378", "shortDescription": {"text": "Commented-code block (12 lines) in frontend/components/knowledge/hooks/useTreemapLayout.ts:378"}, "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-229378f92eccf49e", "name": "Commented-code block (5 lines) in frontend/components/knowledge/hooks/__tests__/useKnowledgeMapKeyboard.test.ts:173", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/hooks/__tests__/useKnowledgeMapKeyboard.test.ts:173"}, "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-ec135c8c2e4b33ee", "name": "Commented-code block (5 lines) in frontend/components/knowledge/hooks/__tests__/useTreemapLayout.test.ts:191", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/hooks/__tests__/useTreemapLayout.test.ts:191"}, "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-c15a705bc491e77c", "name": "Commented-code block (11 lines) in frontend/components/knowledge/renderers/NodeTooltip.tsx:115", "shortDescription": {"text": "Commented-code block (11 lines) in frontend/components/knowledge/renderers/NodeTooltip.tsx:115"}, "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-a4d49b88ccfc4fac", "name": "Commented-code block (5 lines) in frontend/components/knowledge/renderers/SVGRenderer.tsx:73", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/renderers/SVGRenderer.tsx:73"}, "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-00de2fdbe02becc4", "name": "Commented-code block (6 lines) in frontend/components/knowledge/renderers/CommunityTreemap.tsx:67", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/renderers/CommunityTreemap.tsx:67"}, "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-857d2caab7b47986", "name": "Commented-code block (6 lines) in frontend/components/knowledge/renderers/CommunityBubble.tsx:147", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/renderers/CommunityBubble.tsx:147"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-45b1b9d71f90ca7d", "name": "Commented-code block (7 lines) in frontend/components/knowledge/renderers/__tests__/CommunityTreemap.interaction.test.ts", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/renderers/__tests__/CommunityTreemap.interaction.test.tsx:262"}, "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-7fe458aee9bb53c5", "name": "Commented-code block (5 lines) in frontend/components/knowledge/renderers/__tests__/SVGRenderer.visual-contract.test.tsx", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/renderers/__tests__/SVGRenderer.visual-contract.test.tsx:34"}, "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-868010a721db6f73", "name": "Commented-code block (6 lines) in frontend/components/knowledge/share/SharedKmPageClient.tsx:171", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/share/SharedKmPageClient.tsx:171"}, "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-820bef473ae4a52d", "name": "Commented-code block (6 lines) in frontend/components/knowledge/share/__tests__/SharedKmPageClient.test.tsx:428", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/share/__tests__/SharedKmPageClient.test.tsx:428"}, "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-53520bedd36638e7", "name": "Commented-code block (6 lines) in frontend/components/knowledge/toolbar/PurposeSwitcher.tsx:64", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/toolbar/PurposeSwitcher.tsx:64"}, "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-2e4ae8a870103adc", "name": "Commented-code block (11 lines) in frontend/components/knowledge/toolbar/ReportButton.tsx:81", "shortDescription": {"text": "Commented-code block (11 lines) in frontend/components/knowledge/toolbar/ReportButton.tsx:81"}, "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-2be1f1047f8da223", "name": "Commented-code block (5 lines) in frontend/components/knowledge/toolbar/LayoutAlgorithmSelector.tsx:112", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/toolbar/LayoutAlgorithmSelector.tsx:112"}, "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-08093ab5f9dc5b67", "name": "Legacy-named symbol `gv_copy` in frontend/components/knowledge/toolbar/__tests__/ReportButton.test.tsx:494", "shortDescription": {"text": "Legacy-named symbol `gv_copy` in frontend/components/knowledge/toolbar/__tests__/ReportButton.test.tsx:494"}, "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-0361a6c524d8d02d", "name": "Commented-code block (5 lines) in frontend/components/knowledge/toolbar/__tests__/ReportButton.test.tsx:70", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/toolbar/__tests__/ReportButton.test.tsx:70"}, "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-308409734934dbab", "name": "Commented-code block (7 lines) in frontend/components/knowledge/toolbar/__tests__/PurposeSwitcher.regression.test.tsx:10", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/toolbar/__tests__/PurposeSwitcher.regression.test.tsx:106"}, "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-657c88747fc7675c", "name": "Commented-code block (7 lines) in frontend/components/knowledge/accessibility/GraphARIATree.tsx:252", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/accessibility/GraphARIATree.tsx:252"}, "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-c7efc6795f2c63f6", "name": "Commented-code block (5 lines) in frontend/components/knowledge/views/EgoNetworkView.tsx:64", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/views/EgoNetworkView.tsx:64"}, "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-f26496b1e97ab54f", "name": "Commented-code block (7 lines) in frontend/components/knowledge/views/BibliometricReportView.tsx:119", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/views/BibliometricReportView.tsx:119"}, "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-b990e801cdf65591", "name": "Commented-code block (8 lines) in frontend/components/knowledge/views/GapDashboardView.tsx:65", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/components/knowledge/views/GapDashboardView.tsx:65"}, "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-52b2496a61305212", "name": "Commented-code block (6 lines) in frontend/components/knowledge/views/TemporalView.tsx:94", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/views/TemporalView.tsx:94"}, "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-3d5f06da642dfa6d", "name": "Commented-code block (7 lines) in frontend/components/knowledge/views/MatrixView.tsx:70", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/views/MatrixView.tsx:70"}, "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-f0a76f3c58ac480c", "name": "Commented-code block (10 lines) in frontend/components/knowledge/views/StrategicDiagramView.tsx:231", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/components/knowledge/views/StrategicDiagramView.tsx:231"}, "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-094b1c810563bd69", "name": "Commented-code block (5 lines) in frontend/components/knowledge/views/FieldMapView.tsx:97", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/views/FieldMapView.tsx:97"}, "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-1348360e258d5607", "name": "Commented-code block (5 lines) in frontend/components/knowledge/views/BriefingView.tsx:122", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/views/BriefingView.tsx:122"}, "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-bd1f3f1ba6c6e691", "name": "Commented-code block (9 lines) in frontend/components/knowledge/views/__tests__/BibliometricReportView.nulls.dom.test.ts", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/components/knowledge/views/__tests__/BibliometricReportView.nulls.dom.test.tsx:44"}, "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-e0a07926a1082a96", "name": "Commented-code block (7 lines) in frontend/components/knowledge/views/__tests__/TemporalView.aria.test.tsx:140", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/views/__tests__/TemporalView.aria.test.tsx:140"}, "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-ddde683e981c6fc9", "name": "Commented-code block (8 lines) in frontend/components/knowledge/views/__tests__/EgoNetworkView.test.tsx:272", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/components/knowledge/views/__tests__/EgoNetworkView.test.tsx: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-2c1ce7e206f5dcc7", "name": "Commented-code block (6 lines) in frontend/components/knowledge/views/__tests__/strategic-quadrant-coherence.test.tsx:21", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/views/__tests__/strategic-quadrant-coherence.test.tsx: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-67cbf6d620711a15", "name": "Commented-code block (5 lines) in frontend/components/knowledge/views/__tests__/MatrixView.test.tsx:126", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/views/__tests__/MatrixView.test.tsx:126"}, "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-67e56247a1a91987", "name": "Commented-code block (6 lines) in frontend/components/knowledge/views/briefing/__tests__/BriefingView.test.tsx:525", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/views/briefing/__tests__/BriefingView.test.tsx:525"}, "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-2b8c0a9fcbf2d40f", "name": "Commented-code block (7 lines) in frontend/components/knowledge/views/gap-dashboard/GapIntensityBadge.tsx:121", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/views/gap-dashboard/GapIntensityBadge.tsx:121"}, "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-427263d3b9469785", "name": "Commented-code block (7 lines) in frontend/components/knowledge/overlays/OverlayContainer.tsx:117", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/overlays/OverlayContainer.tsx:117"}, "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-9c53a29ffa723b46", "name": "Commented-code block (9 lines) in frontend/components/knowledge/overlays/DensityHeatmap.tsx:67", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/components/knowledge/overlays/DensityHeatmap.tsx:67"}, "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-8ad5beccd4126de0", "name": "Commented-code block (7 lines) in frontend/components/knowledge/overlays/PredictedLinks.tsx:68", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/overlays/PredictedLinks.tsx:68"}, "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-0448bae620844767", "name": "Commented-code block (6 lines) in frontend/components/knowledge/overlays/OverlayToggleBar.tsx:142", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/overlays/OverlayToggleBar.tsx:142"}, "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-fd76120cf76e1a83", "name": "Commented-code block (6 lines) in frontend/components/knowledge/overlays/__tests__/OverlayToggleBar.insights-gating.test", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/overlays/__tests__/OverlayToggleBar.insights-gating.test.tsx:89"}, "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-fb08924390fca923", "name": "Commented-code block (6 lines) in frontend/components/knowledge/export/NetworkStatistics.ts:279", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/export/NetworkStatistics.ts:279"}, "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-9a56660f629fbaf7", "name": "Commented-code block (10 lines) in frontend/components/knowledge/export/ViewTableExporters.ts:25", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/components/knowledge/export/ViewTableExporters.ts:25"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-551dc27545fea2dc", "name": "Commented-code block (5 lines) in frontend/components/knowledge/export/SVGExporter.ts:151", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/export/SVGExporter.ts:151"}, "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-010360961365b81f", "name": "Commented-code block (5 lines) in frontend/components/knowledge/export/PublicationReportGenerator.ts:35", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/export/PublicationReportGenerator.ts:35"}, "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-e73af2ee9c200904", "name": "Commented-code block (5 lines) in frontend/components/knowledge/export/WorkbookExporter.ts:89", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/export/WorkbookExporter.ts:89"}, "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-30216e6e13f357d5", "name": "Commented-code block (7 lines) in frontend/components/knowledge/export/__tests__/PublicationReportGenerator.test.ts:118", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/export/__tests__/PublicationReportGenerator.test.ts:118"}, "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-3f485a806d8297c2", "name": "Commented-code block (6 lines) in frontend/app/auth/login/page.tsx:219", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/auth/login/page.tsx:219"}, "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-2aaf610b7c520ae4", "name": "Commented-code block (5 lines) in frontend/app/auth/oauth/callback/page.tsx:23", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/auth/oauth/callback/page.tsx:23"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2f963bc341699142", "name": "Commented-code block (6 lines) in frontend/app/auth/register/page.tsx:105", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/auth/register/page.tsx:105"}, "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-07d829554be7ff3c", "name": "Commented-code block (5 lines) in frontend/app/dev-visual-baselines/page.tsx:65", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/dev-visual-baselines/page.tsx:65"}, "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-8f76545de2687614", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/api/studies/route.ts:30", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/api/studies/route.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-02eacef31cd8a30b", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/layout.tsx:27", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/layout.tsx:27"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-55cd312f8e29bdae", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/analytics/__tests__/analytics.test.tsx:133", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/analytics/__tests__/analytics.test.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-27343432dba1eba5", "name": "Commented-code block (8 lines) in frontend/app/(researcher)/studies/create/page.tsx:599", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/app/(researcher)/studies/create/page.tsx:599"}, "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-e756a09eee98a23e", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/design/page.tsx:145", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/design/page.tsx:145"}, "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-263e25c92208bc6f", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/design/hypothesis/page.tsx:332", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/design/hypothesis/page.tsx:332"}, "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-884abd352905a0be", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/design/hypothesis/page.tsx:358", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/design/hypothesis/page.tsx:358"}, "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-fda3a477f46bfa10", "name": "Commented-code block (11 lines) in frontend/app/(researcher)/discover/references/page.tsx:410", "shortDescription": {"text": "Commented-code block (11 lines) in frontend/app/(researcher)/discover/references/page.tsx:410"}, "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-af83083bcbba93b8", "name": "Commented-code block (9 lines) in frontend/app/(researcher)/discover/references/components/SearchArtifactVerifyPanel.tsx", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/app/(researcher)/discover/references/components/SearchArtifactVerifyPanel.tsx:132"}, "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-ec44ae2cb2f993d9", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/references/components/ReferenceHeader.tsx:285", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/references/components/ReferenceHeader.tsx:285"}, "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-5ac69bd437b4a082", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/references/hooks/useClaimSearch.ts:45", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/references/hooks/useClaimSearch.ts:45"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-69fbddd3569b6271", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/references/hooks/useProvenanceGraph.ts:35", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/references/hooks/useProvenanceGraph.ts:35"}, "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-5a57b7435c6ca9b0", "name": "Legacy-named symbol `isLegacy` in frontend/app/(researcher)/discover/references/snapshot/[snapshotId]/methodology/page.t", "shortDescription": {"text": "Legacy-named symbol `isLegacy` in frontend/app/(researcher)/discover/references/snapshot/[snapshotId]/methodology/page.tsx:358"}, "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-c0b6f6f7f4c9feca", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/references/snapshot/[snapshotId]/methodology/page.t", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/references/snapshot/[snapshotId]/methodology/page.tsx: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-82747bfcdc5a0112", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/themes/page.tsx:232", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/themes/page.tsx:232"}, "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-dff698df330106c0", "name": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/themes/utils/saturation-percent.ts:37", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/themes/utils/saturation-percent.ts:37"}, "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-7ae14a9e7317bbaa", "name": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/knowledge-map/page.tsx:46", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/knowledge-map/page.tsx:46"}, "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-a5b117b77f3d8708", "name": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/knowledge-map/error.tsx:105", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/knowledge-map/error.tsx:105"}, "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-d0f4046518c22098", "name": "Commented-code block (9 lines) in frontend/app/(researcher)/discover/knowledge-map/__tests__/dro-pii-contract.regression", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/app/(researcher)/discover/knowledge-map/__tests__/dro-pii-contract.regression.test.ts:66"}, "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-c88de5f7bf304531", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/page.tsx:38", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/page.tsx: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-10e7ff0d20949184", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/prisma/page.tsx:359", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/prisma/page.tsx:359"}, "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-dec49cfe5141a285", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/PrepareForAnalysisCTA.tsx:63", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/PrepareForAnalysisCTA.tsx:63"}, "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-c67c25ea2c08b9da", "name": "Commented-code block (9 lines) in frontend/app/(researcher)/discover/literature/components/BulkSaveProgressBanner.tsx:90", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/app/(researcher)/discover/literature/components/BulkSaveProgressBanner.tsx:90"}, "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-743ade9399a6a9e6", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PaperCard.tsx:143", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PaperCard.tsx:143"}, "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-c14aba000229a03f", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PurposeBanner.tsx:49", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PurposeBanner.tsx:49"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2bf7ea3f83244ae8", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/ThemeExtractionActionCard.tsx", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/ThemeExtractionActionCard.tsx:109"}, "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-d6ff0ea1a020e279", "name": "Commented-code block (8 lines) in frontend/app/(researcher)/discover/literature/components/LazyContainers.tsx:21", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/app/(researcher)/discover/literature/components/LazyContainers.tsx:21"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0dbf7f7922e5d2e0", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/UnifiedSearchHero.tsx:124", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/UnifiedSearchHero.tsx:124"}, "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-e78860ab2c3d299d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/discover/literature/components/UnifiedSearchHero", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/discover/literature/components/UnifiedSearchHero.tsx:1575"}, "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-bcc0942685858cf0", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/ResearchAccessMenu.tsx:32", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/ResearchAccessMenu.tsx:32"}, "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-7c65e8872d1f9633", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/__tests__/UnifiedSearchHero.q", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/__tests__/UnifiedSearchHero.query-coach.test.tsx:144"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d1c240e52a2b0981", "name": "Commented-code block (12 lines) in frontend/app/(researcher)/discover/literature/components/__tests__/UnifiedSearchHero.", "shortDescription": {"text": "Commented-code block (12 lines) in frontend/app/(researcher)/discover/literature/components/__tests__/UnifiedSearchHero.integration.test.tsx:598"}, "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-75c94496dd300a02", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/__tests__/UnifiedSearchHero.t", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/__tests__/UnifiedSearchHero.test.tsx:192"}, "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-2168f59b0145fccf", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/paper-card/MatchScoreBadge.ts", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/paper-card/MatchScoreBadge.tsx:161"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fc415a5db4929456", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/paper-card/constants.ts:110", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/paper-card/constants.ts:110"}, "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-a675725a6919fc92", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/paper-card/PaperAccessBadges.", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/paper-card/PaperAccessBadges.tsx:152"}, "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-06ceab9c8dd6de43", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/paper-card/PaperActions.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/paper-card/PaperActions.tsx:161"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-81d8b166e5dd483e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/discover/literature/components/paper-card/PaperA", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/discover/literature/components/paper-card/PaperActions.tsx:258"}, "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-857a8495b0d30c5d", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/paper-card/__tests__/MatchSco", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/paper-card/__tests__/MatchScoreBadge.test.tsx:366"}, "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-6b8769e9ceda0cbd", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/paper-card/__tests__/MatchSco", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/paper-card/__tests__/MatchScoreBadge.memo-regression.test.tsx:48"}, "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-01f990c88c03dcf4", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/SearchSection/index.ts:14", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/SearchSection/index.ts:14"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-af5fc1e72dd17019", "name": "Commented-code block (12 lines) in frontend/app/(researcher)/discover/literature/components/SearchSection/PillMenu.tsx:2", "shortDescription": {"text": "Commented-code block (12 lines) in frontend/app/(researcher)/discover/literature/components/SearchSection/PillMenu.tsx:25"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-73e0b46b9cd07807", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/q-methodology/ViewpointBalanc", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/q-methodology/ViewpointBalancePanel.stories.tsx:120"}, "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-0f2798c9c06d849a", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/social-media/TikTokSearchSect", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/social-media/TikTokSearchSection.tsx:78"}, "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-d64106c739eab375", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/SearchPipel", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/SearchPipelineOrchestra.tsx:382"}, "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-51e55267b44ab65e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/discover/literature/components/PipelineOrchestra", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/types.ts:135"}, "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-7bb14c36cc96d427", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/__tests__/i", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/__tests__/inward-flow-refine.test.tsx:390"}, "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-98ed2a28fd078073", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/discover/literature/components/PipelineOrchestra", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/__tests__/inward-flow-refine.test.tsx: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-d7416ea936561265", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/__tests__/S", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/__tests__/SearchPipelineOrchestra.test.tsx:620"}, "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-82a68f7f4dd6980b", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/PipelineSummaryBanner.tsx:180"}, "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-fe495ef70b9dad72", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/CoverageBiasPanel.tsx:46"}, "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-c4228e1eef40642c", "name": "Commented-code block (10 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/StageFlowParticles.tsx:469"}, "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-fc08ba1758e2cf0d", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/StageDetailPanel.tsx:101"}, "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-305e4c343e6b5890", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/OrbitalSourceConstellation.tsx:353"}, "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-d3e43c436bd809f5", "name": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/MethodologyReport.tsx:77"}, "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-ee44d23997d2c37c", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/RealWorldAttentionPanel.tsx:280"}, "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-aaa2165945e41574", "name": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/SourceNode.tsx:657"}, "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-bf97d07a010fcd13", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/__tests__/CoverageBiasPanel.test.tsx:201"}, "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-0202dde983bce385", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/hooks/usePi", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/hooks/usePipelineState.ts:173"}, "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-51be9072861182e1", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/hooks/__tes", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/hooks/__tests__/usePipelineState.test.ts:419"}, "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-91402c6f82ca5597", "name": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/literature/lib/panel-export.ts:69", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/literature/lib/panel-export.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-11f285cdf5d92713", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/evidence/page.tsx:474", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/evidence/page.tsx:474"}, "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-45e64a7d7b92c540", "name": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/literature/citations/page.tsx:164", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/literature/citations/page.tsx: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-df09f84465b4d874", "name": "Commented-code block (8 lines) in frontend/app/(researcher)/discover/literature/hooks/useLiteraturePageState.ts:212", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/app/(researcher)/discover/literature/hooks/useLiteraturePageState.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-bf0317c869f3bba9", "name": "Commented-code block (10 lines) in frontend/app/(researcher)/discover/literature/containers/ThemeExtractionContainer.tsx", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/app/(researcher)/discover/literature/containers/ThemeExtractionContainer.tsx:200"}, "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-dcde89ef05a60392", "name": "Commented-code block (10 lines) in frontend/app/(researcher)/discover/literature/containers/SearchResultsContainerEnhanc", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/app/(researcher)/discover/literature/containers/SearchResultsContainerEnhanced.tsx:88"}, "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-321f853e545eaebc", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/containers/StreamingSearchSection.tsx:28", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/containers/StreamingSearchSection.tsx:284"}, "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-d9a6b51ad6cd701d", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/containers/LiteratureSearchContainer.tsx", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/containers/LiteratureSearchContainer.tsx:126"}, "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-4be1d44b09d12f72", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/containers/__tests__/SearchResultsContai", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/containers/__tests__/SearchResultsContainerEnhanced.test.tsx:116"}, "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-2bfb2d96c4fc538c", "name": "Legacy-named symbol `yearsOld` in frontend/app/(researcher)/discover/literature/containers/search-results/search-results", "shortDescription": {"text": "Legacy-named symbol `yearsOld` in frontend/app/(researcher)/discover/literature/containers/search-results/search-results-utils.ts:95"}, "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-0622b496a9853258", "name": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/literature/containers/search-results/search-results", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/literature/containers/search-results/search-results-utils.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-f0073dec64ac9801", "name": "Commented-code block (13 lines) in frontend/app/(researcher)/discover/literature/screening/page.tsx:727", "shortDescription": {"text": "Commented-code block (13 lines) in frontend/app/(researcher)/discover/literature/screening/page.tsx:727"}, "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-654acff70e59e433", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/extraction/page.tsx:53", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/extraction/page.tsx: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-1c982f575f5231f7", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/extraction/__tests__/page.test.tsx:71", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/extraction/__tests__/page.test.tsx: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-99f64aa10180c4a3", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/transcriptions/page.tsx:175", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/transcriptions/page.tsx:175"}, "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-a8884de55af97170", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/discover/literature/transcriptions/page.tsx:535", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/discover/literature/transcriptions/page.tsx:535"}, "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-bb111ff0ea2b5c8a", "name": "Commented-code block (9 lines) in frontend/app/(researcher)/discover/gaps/gap-export.utils.ts:64", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/app/(researcher)/discover/gaps/gap-export.utils.ts:64"}, "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-ba241ff2bc9bf631", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/GapsPageDataLayer.tsx:117", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/GapsPageDataLayer.tsx:117"}, "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-5290fcf2aebe2d63", "name": "Commented-code block (11 lines) in frontend/app/(researcher)/discover/gaps/components/GapDependencyDAG.tsx:29", "shortDescription": {"text": "Commented-code block (11 lines) in frontend/app/(researcher)/discover/gaps/components/GapDependencyDAG.tsx:29"}, "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-ba687d59e9c6944c", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/GapAuditDrawer.tsx:91", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/GapAuditDrawer.tsx:91"}, "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-773a5713df53d9ae", "name": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/gaps/components/GapDetailView.tsx:76", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/gaps/components/GapDetailView.tsx: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-a98ce332db31fb91", "name": "Commented-code block (8 lines) in frontend/app/(researcher)/discover/gaps/components/gap-types.ts:269", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/app/(researcher)/discover/gaps/components/gap-types.ts:269"}, "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-4d2e9e05bab57b4b", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/GapStageInspector.tsx:219", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/GapStageInspector.tsx:219"}, "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-924b02458e86fee8", "name": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/gaps/components/GapCategoryList.tsx:163", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/gaps/components/GapCategoryList.tsx:163"}, "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-9948ac0e18922fa7", "name": "Commented-code block (9 lines) in frontend/app/(researcher)/discover/gaps/components/GapDrillDownAskButton.tsx:94", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/app/(researcher)/discover/gaps/components/GapDrillDownAskButton.tsx:94"}, "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-b94dcef3ab94f3d0", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/GapRadar.tsx:32", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/GapRadar.tsx:32"}, "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-6c0c111c69272d32", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/GapRefinementFlow.tsx:124", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/GapRefinementFlow.tsx:124"}, "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-cbd47520634f5b23", "name": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/gaps/components/GapCardItem.tsx:34", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/gaps/components/GapCardItem.tsx:34"}, "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-d77ea355c3c6aecd", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/GapTimeline.tsx:50", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/GapTimeline.tsx:50"}, "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-76e833baa6c62f72", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/GapsPageEmptyState.tsx:71", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/GapsPageEmptyState.tsx: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-e6289f193e5cb3cf", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/CorpusProvenanceBreadcrumb.tsx:87", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/CorpusProvenanceBreadcrumb.tsx:87"}, "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-9680a65266a0ac91", "name": "Commented-code block (10 lines) in frontend/app/(researcher)/discover/gaps/components/GapsListView.tsx:301", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/app/(researcher)/discover/gaps/components/GapsListView.tsx: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-f4e474f5970c015a", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/GapForestPlot.tsx:33", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/GapForestPlot.tsx:33"}, "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-0974c2d8d33a20cc", "name": "Commented-code block (8 lines) in frontend/app/(researcher)/discover/gaps/components/gap-utils.ts:41", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/app/(researcher)/discover/gaps/components/gap-utils.ts:41"}, "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-8399cf5ea1ee50c7", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/GapPortfolioMatrix.tsx:25", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/GapPortfolioMatrix.tsx:25"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d4fb131c14b5c4e0", "name": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/gaps/components/GapBriefView.tsx:21", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/gaps/components/GapBriefView.tsx:21"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-060c585b8fa40088", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/TimeToSignalHero.tsx:60", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/TimeToSignalHero.tsx:60"}, "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-bca023279044a9f8", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/GapSearchPanel.tsx:180", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/GapSearchPanel.tsx:180"}, "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-9a1864bca8b9ba69", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/GapReviewPanel.tsx:24", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/GapReviewPanel.tsx:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e06b61f01ea4a585", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/ReproducibilityReceipt.tsx:191", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/ReproducibilityReceipt.tsx:191"}, "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-3853bb16969d5507", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/ExternalValidationPill.tsx:114", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/ExternalValidationPill.tsx:114"}, "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-45b679f93ae4f342", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/GapRunStatusLine.tsx:35", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/GapRunStatusLine.tsx:35"}, "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-e150667436ac80a6", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/GapsPageHeader.tsx:412", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/GapsPageHeader.tsx:412"}, "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-23cc3152c2308f05", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/GapLandscape.tsx:57", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/GapLandscape.tsx:57"}, "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-926481eba4ff9bd1", "name": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/gaps/components/GapNarrativeView.tsx:97", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/gaps/components/GapNarrativeView.tsx:97"}, "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-02cd5a1fba52b360", "name": "Commented-code block (8 lines) in frontend/app/(researcher)/discover/gaps/components/RoBSummaryTable.tsx:16", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/app/(researcher)/discover/gaps/components/RoBSummaryTable.tsx:16"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4ff1dc22b011912e", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/PaperTracePanel.tsx:129", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/PaperTracePanel.tsx:129"}, "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-c2116fc283b755af", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/__tests__/GapsPageEmptyState.test.t", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/__tests__/GapsPageEmptyState.test.tsx: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-621f4caccc861461", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/__tests__/GapPortfolioMatrix.test.t", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/__tests__/GapPortfolioMatrix.test.tsx:50"}, "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-7c2da56cd2b05e0b", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/__tests__/gap-honesty-fixes.test.ts", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/__tests__/gap-honesty-fixes.test.ts:45"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a510bde0e126fcbf", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/__tests__/GapRefinementFlow.test.ts", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/__tests__/GapRefinementFlow.test.tsx: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-06bbd4b1e690be54", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/__tests__/TimeToSignalHero.test.tsx", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/__tests__/TimeToSignalHero.test.tsx:132"}, "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-172a384681ab7d36", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/__tests__/GapForestPlot.test.tsx:34", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/__tests__/GapForestPlot.test.tsx:342"}, "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-25708bfa7e183868", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/GapDetailView/GapEvidenceSection.ts", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/GapDetailView/GapEvidenceSection.tsx:56"}, "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-942e4b7569ca580c", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/GapDetailView/GapMethodologySection", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/GapDetailView/GapMethodologySection.tsx:41"}, "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-abd491fede795131", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/GapDetailView/GapAdvancedPrediction", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/GapDetailView/GapAdvancedPredictions.tsx:264"}, "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-b22cfba17f602e90", "name": "Commented-code block (8 lines) in frontend/app/(researcher)/discover/gaps/components/GapDetailView/ConfidenceExplainer.t", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/app/(researcher)/discover/gaps/components/GapDetailView/ConfidenceExplainer.tsx:51"}, "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-ab7ceb8832c2d654", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/workflow/__tests__/workflow-presentation.hones", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/workflow/__tests__/workflow-presentation.honesty.test.ts:112"}, "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-3e54243a22636ec6", "name": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/gaps/hooks/useGapAnalysisPipeline.ts:101", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/gaps/hooks/useGapAnalysisPipeline.ts:101"}, "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-de014e5812d1c3f5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/discover/gaps/hooks/useGapAnalysisPipeline.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/discover/gaps/hooks/useGapAnalysisPipeline.ts:1353"}, "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-8aabf1cb77c06aa3", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/hooks/useGapValidation.ts:65", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/hooks/useGapValidation.ts:65"}, "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-c18c615dac22547d", "name": "Commented-code block (16 lines) in frontend/app/(researcher)/discover/gaps/hooks/useGapDecisions.ts:53", "shortDescription": {"text": "Commented-code block (16 lines) in frontend/app/(researcher)/discover/gaps/hooks/useGapDecisions.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-decacd6641c6b1a0", "name": "Commented-code block (10 lines) in frontend/app/(researcher)/discover/gaps/hooks/useGapEvolutionTimeline.ts:37", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/app/(researcher)/discover/gaps/hooks/useGapEvolutionTimeline.ts:37"}, "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-5dcf16474c988439", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/hooks/useCorpusEnrichment.ts:26", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/hooks/useCorpusEnrichment.ts:26"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eca2f8115ccf7d00", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/hooks/useGapCorpusReadiness.ts:35", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/hooks/useGapCorpusReadiness.ts:35"}, "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-a1e12fc43c0d77c4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/discover/gaps/hooks/useGapCorpusReadiness.ts:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/discover/gaps/hooks/useGapCorpusReadiness.ts:23"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fa5d28f560928aa0", "name": "Commented-code block (9 lines) in frontend/app/(researcher)/discover/gaps/hooks/useGapAutoPipeline.ts:216", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/app/(researcher)/discover/gaps/hooks/useGapAutoPipeline.ts:216"}, "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-bbcec84f4db69570", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/discover/gaps/hooks/__tests__/useGapEvolutionTim", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/discover/gaps/hooks/__tests__/useGapEvolutionTimeline.test.ts:89"}, "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-73b13d6678a09002", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/hooks/__tests__/useGapAutoPipeline.test.ts:46", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/hooks/__tests__/useGapAutoPipeline.test.ts:46"}, "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-6569da179c3b9028", "name": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/hooks/__tests__/useGapAnalysisPipeline.test.ts", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/hooks/__tests__/useGapAnalysisPipeline.test.ts:313"}, "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-f63ee7e454ae7901", "name": "Commented-code block (13 lines) in frontend/app/(researcher)/discover/gaps/hooks/__tests__/gap-cache.test.ts:84", "shortDescription": {"text": "Commented-code block (13 lines) in frontend/app/(researcher)/discover/gaps/hooks/__tests__/gap-cache.test.ts:84"}, "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-b9814b0bf5e4ca66", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/home/page.tsx:116", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/home/page.tsx:116"}, "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-2d4ae343a0697bff", "name": "Commented-code block (9 lines) in frontend/app/(researcher)/analysis/q-methodology/components/ExportPanel.tsx:88", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/app/(researcher)/analysis/q-methodology/components/ExportPanel.tsx:88"}, "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-3d6e16f2335e0bc3", "name": "Commented-code block (10 lines) in frontend/app/(researcher)/analysis/q-methodology/hooks/useQAnalysis.ts:78", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/app/(researcher)/analysis/q-methodology/hooks/useQAnalysis.ts:78"}, "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-ccacafe75ca4794c", "name": "Commented-code block (7 lines) in frontend/app/(researcher)/recruit/page.tsx:57", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/recruit/page.tsx:57"}, "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-c558618fabeac43d", "name": "Commented-code block (5 lines) in frontend/app/(researcher)/dev-landing-preview/page.tsx:151", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/dev-landing-preview/page.tsx:151"}, "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-f0f49816a3b5869d", "name": "Commented-code block (7 lines) in frontend/lib/types/knowledge-graph.schema.ts:292", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/lib/types/knowledge-graph.schema.ts:292"}, "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-f2cfe48a0fc17815", "name": "Commented-code block (5 lines) in frontend/lib/types/research-question.types.ts:66", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/types/research-question.types.ts:66"}, "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-7d3e5cee31f5c60c", "name": "Commented-code block (6 lines) in frontend/lib/types/literature-api.types.ts:9", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/lib/types/literature-api.types.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-9ddeb9c8b9b9a915", "name": "Commented-code block (5 lines) in frontend/lib/types/knowledge-graph.types.ts:347", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/types/knowledge-graph.types.ts:347"}, "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-511f4dfcb0c4b7ef", "name": "Commented-code block (5 lines) in frontend/lib/types/search-stream.types.ts:848", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/types/search-stream.types.ts:848"}, "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-729d81121a53aa3f", "name": "Commented-code block (5 lines) in frontend/lib/types/query-intelligence.types.ts:18", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/types/query-intelligence.types.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-21fd3452f75c3630", "name": "Commented-code block (6 lines) in frontend/lib/types/literature.types.ts:151", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/lib/types/literature.types.ts:151"}, "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-4b2b7871b695c6c0", "name": "Commented-code block (6 lines) in frontend/lib/stores/paper-management.store.ts:231", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/lib/stores/paper-management.store.ts:231"}, "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-3ab1b216e6510529", "name": "Commented-code block (5 lines) in frontend/lib/stores/gap-analysis.store.ts:92", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/stores/gap-analysis.store.ts:92"}, "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-00b6fa65640751d8", "name": "Commented-code block (5 lines) in frontend/lib/stores/knowledge-map.store.ts:444", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/stores/knowledge-map.store.ts:444"}, "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-764b74d2b7cb12b7", "name": "Commented-code block (8 lines) in frontend/lib/stores/gap-refinement-status.store.ts:65", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/lib/stores/gap-refinement-status.store.ts:65"}, "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-8f5aa15c8101a6b6", "name": "Commented-code block (5 lines) in frontend/lib/stores/literature-search.store.ts:164", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/stores/literature-search.store.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-d40b46ec3eb8e041", "name": "Commented-code block (15 lines) in frontend/lib/stores/grid-store.ts:111", "shortDescription": {"text": "Commented-code block (15 lines) in frontend/lib/stores/grid-store.ts:111"}, "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-7cd2ecfd6c383dcd", "name": "Commented-code block (7 lines) in frontend/lib/stores/study-context.store.ts:69", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/lib/stores/study-context.store.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-75ad784a869ffeb9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/stores/study-builder-store.ts:417", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/stores/study-builder-store.ts:417"}, "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-cecb12e815139a22", "name": "Commented-code block (5 lines) in frontend/lib/stores/evidence-table.store.ts:686", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/stores/evidence-table.store.ts:686"}, "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-82119f130dbaeec4", "name": "Commented-code block (7 lines) in frontend/lib/stores/theme-extraction.store.ts:746", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/lib/stores/theme-extraction.store.ts:746"}, "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-c579de6a303f93e5", "name": "Commented-code block (5 lines) in frontend/lib/stores/search-session-coordinator.ts:95", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/stores/search-session-coordinator.ts:95"}, "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-fdb14f5b2682beb2", "name": "Commented-code block (10 lines) in frontend/lib/stores/interpretation.store.ts:149", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/lib/stores/interpretation.store.ts:149"}, "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-9f50086dd61f5c9d", "name": "Commented-code block (6 lines) in frontend/lib/stores/research-progress.store.ts:208", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/lib/stores/research-progress.store.ts:208"}, "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-d6b01a5aaf21b894", "name": "Commented-code block (5 lines) in frontend/lib/stores/screening-workflow.store.ts:241", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/stores/screening-workflow.store.ts:241"}, "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-a7d348c47474be9c", "name": "Commented-code block (5 lines) in frontend/lib/stores/__tests__/knowledge-map.store.test.ts:144", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/stores/__tests__/knowledge-map.store.test.ts:144"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e360d2040690f6f5", "name": "Commented-code block (6 lines) in frontend/lib/stores/__tests__/job-registry.store.test.ts:128", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/lib/stores/__tests__/job-registry.store.test.ts:128"}, "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-2cf95535dbcd7ec5", "name": "Commented-code block (8 lines) in frontend/lib/stores/__tests__/study-context.store.test.ts:228", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/lib/stores/__tests__/study-context.store.test.ts:228"}, "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-1c2760e892adfe71", "name": "Commented-code block (6 lines) in frontend/lib/stores/__tests__/constants-parity.test.ts:100", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/lib/stores/__tests__/constants-parity.test.ts:100"}, "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-224b40ab98444dac", "name": "Commented-code block (9 lines) in frontend/lib/stores/helpers/literature-search-helpers.ts:222", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/lib/stores/helpers/literature-search-helpers.ts:222"}, "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-f6ff62a31ce7e9b4", "name": "Commented-code block (6 lines) in frontend/lib/visualization/export.ts:97", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/lib/visualization/export.ts:97"}, "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-47af5b8a32063a82", "name": "Commented-code block (9 lines) in frontend/lib/navigation/route-consolidation.ts:29", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/lib/navigation/route-consolidation.ts:29"}, "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-b4e1c8dbc2110400", "name": "Commented-code block (5 lines) in frontend/lib/navigation/__tests__/route-consolidation.test.ts:45", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/navigation/__tests__/route-consolidation.test.ts:45"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a52b7284be4bf45d", "name": "Commented-code block (7 lines) in frontend/lib/config/feature-flags.ts:112", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/lib/config/feature-flags.ts:112"}, "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-b0a63cd0c03368e2", "name": "Commented-code block (7 lines) in frontend/lib/config/km-palette.ts:188", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/lib/config/km-palette.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-415af9e62127484b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/config/api.config.ts:15", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/config/api.config.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-063a7e6acb1343f3", "name": "Commented-code block (18 lines) in frontend/lib/config/community-colors.config.ts:18", "shortDescription": {"text": "Commented-code block (18 lines) in frontend/lib/config/community-colors.config.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-53d0b2ea408df40b", "name": "Commented-code block (5 lines) in frontend/lib/config/__tests__/km-palette.contrast.test.ts:96", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/config/__tests__/km-palette.contrast.test.ts:96"}, "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-d215e1cfdc034460", "name": "Commented-code block (5 lines) in frontend/lib/auth/api.ts:388", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/auth/api.ts:388"}, "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-86c1a8bfb08d5dcb", "name": "Commented-code block (5 lines) in frontend/lib/auth/utils.ts:46", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/auth/utils.ts:46"}, "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-93e7fea8defb003b", "name": "Commented-code block (11 lines) in frontend/lib/events/paper-events.ts:51", "shortDescription": {"text": "Commented-code block (11 lines) in frontend/lib/events/paper-events.ts:51"}, "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-0be799d6836060b2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/api/unwrap-envelope.ts:2", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/api/unwrap-envelope.ts:2"}, "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-23f09ae3d8547950", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/api/index.ts:29", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/api/index.ts:29"}, "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-48c4ce33ac80d6ac", "name": "Commented-code block (8 lines) in frontend/lib/api/client.ts:99", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/lib/api/client.ts:99"}, "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-f825f05222843704", "name": "Commented-code block (5 lines) in frontend/lib/api/services/auth.service.ts:294", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/api/services/auth.service.ts:294"}, "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-d3d72abd9da94dec", "name": "Commented-code block (5 lines) in frontend/lib/api/services/query-intelligence-api.service.ts:17", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/api/services/query-intelligence-api.service.ts:17"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b11793006e2ec287", "name": "Commented-code block (5 lines) in frontend/lib/api/services/auto-pipeline-api.service.ts:60", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/api/services/auto-pipeline-api.service.ts:60"}, "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-9e19b929c0b45b21", "name": "Commented-code block (5 lines) in frontend/lib/api/services/collection-audit-api.service.ts:111", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/api/services/collection-audit-api.service.ts:111"}, "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-07bd769f7b5fe587", "name": "Commented-code block (5 lines) in frontend/lib/api/services/citation-enrichment-api.service.ts:84", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/api/services/citation-enrichment-api.service.ts:84"}, "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-a718d47e6d16a5a0", "name": "Commented-code block (7 lines) in frontend/lib/api/services/unified-theme-api.service.ts:1315", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/lib/api/services/unified-theme-api.service.ts:1315"}, "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-85ff24c12df95114", "name": "Commented-code block (6 lines) in frontend/lib/api/services/gap-review-api.service.ts:20", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/lib/api/services/gap-review-api.service.ts:20"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ea99441865636757", "name": "Commented-code block (6 lines) in frontend/lib/api/services/pipeline-jobs.service.ts:56", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/lib/api/services/pipeline-jobs.service.ts:56"}, "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-fbc0c05a50df584f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/api/services/paper-yield-api.service.ts:10", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/api/services/paper-yield-api.service.ts:10"}, "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-df2ffc75e28972d3", "name": "Commented-code block (5 lines) in frontend/lib/utils/auto-save-marker.ts:44", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/utils/auto-save-marker.ts:44"}, "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-24d13b24a6a5fffc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/utils/retry.ts:249", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/utils/retry.ts:249"}, "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-3b3b4d2595c39cfa", "name": "Commented-code block (5 lines) in frontend/lib/utils/format-duration.ts:71", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/utils/format-duration.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-051b2cec994a1f79", "name": "Commented-code block (6 lines) in frontend/lib/utils/logger.ts:461", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/lib/utils/logger.ts:461"}, "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-0902b4fe84755d2f", "name": "Commented-code block (7 lines) in frontend/lib/observability/useFrontendMetrics.ts:53", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/lib/observability/useFrontendMetrics.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-d3679c5ce905a802", "name": "Commented-code block (6 lines) in frontend/lib/observability/km-telemetry.ts:62", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/lib/observability/km-telemetry.ts:62"}, "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-ea0fe72825f245f2", "name": "Commented-code block (6 lines) in frontend/lib/viz/briefing-headlines.ts:43", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/lib/viz/briefing-headlines.ts:43"}, "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-3bebb3ba7bf61ab3", "name": "Commented-code block (8 lines) in frontend/lib/viz/provenance.ts:91", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/lib/viz/provenance.ts:91"}, "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-655d0a8318f1e5bb", "name": "Commented-code block (8 lines) in frontend/lib/viz/fisheye.ts:97", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/lib/viz/fisheye.ts:97"}, "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-1531e26387cbc854", "name": "Commented-code block (11 lines) in frontend/lib/viz/uncertainty.ts:83", "shortDescription": {"text": "Commented-code block (11 lines) in frontend/lib/viz/uncertainty.ts:83"}, "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-59e8ce6846e6f05d", "name": "Commented-code block (10 lines) in frontend/lib/viz/power-law.ts:139", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/lib/viz/power-law.ts:139"}, "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-f540c6d786323759", "name": "Commented-code block (7 lines) in frontend/lib/viz/callon-quadrants.ts:93", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/lib/viz/callon-quadrants.ts:93"}, "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-b5d048c16df29ff6", "name": "Commented-code block (5 lines) in frontend/lib/viz/graph-narrowing.ts:136", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/viz/graph-narrowing.ts:136"}, "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-94928b92c88bab88", "name": "Commented-code block (8 lines) in frontend/lib/viz/rao-stirling.ts:116", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/lib/viz/rao-stirling.ts:116"}, "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-bd51af3bf94417f8", "name": "Commented-code block (9 lines) in frontend/lib/viz/__tests__/briefing-headlines.test.ts:418", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/lib/viz/__tests__/briefing-headlines.test.ts:418"}, "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-97c183e504b552ee", "name": "Commented-code block (5 lines) in frontend/lib/viz/__tests__/perf-harness.test.ts:286", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/viz/__tests__/perf-harness.test.ts:286"}, "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-f86686e98eca4ad2", "name": "Commented-code block (6 lines) in frontend/lib/viz/__tests__/power-law.test.ts:120", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/lib/viz/__tests__/power-law.test.ts:120"}, "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-cb2be7148138cdb3", "name": "Commented-code block (5 lines) in frontend/lib/workers/overlap-resolver.worker.ts:125", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/workers/overlap-resolver.worker.ts:125"}, "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-85aa57516383f9df", "name": "Commented-code block (6 lines) in frontend/lib/hooks/useCitationValidation.ts:309", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/lib/hooks/useCitationValidation.ts:309"}, "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-e7b56b7f5b58a963", "name": "Commented-code block (5 lines) in frontend/lib/hooks/useKnowledgeMapLayout.ts:62", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useKnowledgeMapLayout.ts:62"}, "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-015f47753accfd9a", "name": "Commented-code block (7 lines) in frontend/lib/hooks/useQueryIntelligence.ts:35", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/lib/hooks/useQueryIntelligence.ts:35"}, "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-bf169559581ad53e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/hooks/useQueryIntelligence.ts:238", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/hooks/useQueryIntelligence.ts:238"}, "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-0c928d3f8e159db7", "name": "Commented-code block (6 lines) in frontend/lib/hooks/useAuthReady.ts:103", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/lib/hooks/useAuthReady.ts:103"}, "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-5a7d2821bbb35988", "name": "Commented-code block (6 lines) in frontend/lib/hooks/useJobRegistryMirror.ts:71", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/lib/hooks/useJobRegistryMirror.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-825d31b75ce0a660", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/hooks/useAuthorProfile.ts:61", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/hooks/useAuthorProfile.ts: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-0be50c88eadd8a9f", "name": "Commented-code block (5 lines) in frontend/lib/hooks/useExtractionWorkflow.ts:325", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useExtractionWorkflow.ts:325"}, "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-6a012c526e75a65b", "name": "Commented-code block (8 lines) in frontend/lib/hooks/useLayoutTransition.ts:43", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/lib/hooks/useLayoutTransition.ts:43"}, "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-08dca72fd1002d91", "name": "Commented-code block (11 lines) in frontend/lib/hooks/useUnifiedEvidence.ts:137", "shortDescription": {"text": "Commented-code block (11 lines) in frontend/lib/hooks/useUnifiedEvidence.ts:137"}, "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-91cf11a11b3c26a1", "name": "Commented-code block (8 lines) in frontend/lib/hooks/useFieldMapData.ts:64", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/lib/hooks/useFieldMapData.ts:64"}, "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-fd50336bd792aea3", "name": "Commented-code block (9 lines) in frontend/lib/hooks/useClientSideLayout.ts:303", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/lib/hooks/useClientSideLayout.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-64dfedf9b3d5a447", "name": "Commented-code block (11 lines) in frontend/lib/hooks/useSaturationData.ts:127", "shortDescription": {"text": "Commented-code block (11 lines) in frontend/lib/hooks/useSaturationData.ts:127"}, "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-9e01eead1c6199bb", "name": "Commented-code block (5 lines) in frontend/lib/hooks/useKnowledgeMapURLState.ts:66", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useKnowledgeMapURLState.ts:66"}, "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-487e2eea06bd40a5", "name": "Commented-code block (7 lines) in frontend/lib/hooks/useAnalysisWebSocket.ts:307", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/lib/hooks/useAnalysisWebSocket.ts:307"}, "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-46e14ab963c7858c", "name": "Commented-code block (6 lines) in frontend/lib/hooks/useDrOPageReporter.ts:74", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/lib/hooks/useDrOPageReporter.ts:74"}, "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-263c6e7c4bbfb772", "name": "Commented-code block (5 lines) in frontend/lib/hooks/useKeyboardShortcuts.ts:40", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useKeyboardShortcuts.ts:40"}, "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-ecde8d200dbb693b", "name": "Commented-code block (5 lines) in frontend/lib/hooks/useFinishScreeningHandoff.ts:59", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useFinishScreeningHandoff.ts:59"}, "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-370bf0a4d0ab72be", "name": "Commented-code block (8 lines) in frontend/lib/hooks/useWebSocketBase.ts:210", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/lib/hooks/useWebSocketBase.ts:210"}, "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-3ddfc608813750c2", "name": "Commented-code block (6 lines) in frontend/lib/hooks/useAutoFullTextDetection.ts:256", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/lib/hooks/useAutoFullTextDetection.ts:256"}, "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-82e8b76b5cc463d3", "name": "Commented-code block (7 lines) in frontend/lib/hooks/useSearchWebSocket.ts:87", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/lib/hooks/useSearchWebSocket.ts:87"}, "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-f2f9e2c99498e30e", "name": "Commented-code block (6 lines) in frontend/lib/hooks/useStudyDataRestoration.ts:103", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/lib/hooks/useStudyDataRestoration.ts:103"}, "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-b2fd35696ae2432e", "name": "Commented-code block (5 lines) in frontend/lib/hooks/useSearchPersistence.ts:69", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useSearchPersistence.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-7dd2f5c01515e05f", "name": "Commented-code block (5 lines) in frontend/lib/hooks/useJobRegistryBroadcast.ts:211", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useJobRegistryBroadcast.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-e25097ade204226d", "name": "Commented-code block (5 lines) in frontend/lib/hooks/useViewportAnimation.ts:213", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useViewportAnimation.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-df6b57fc2a4a1219", "name": "Commented-code block (6 lines) in frontend/lib/hooks/useThemeApiHandlers.ts:257", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/lib/hooks/useThemeApiHandlers.ts:257"}, "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-e023e070841d83c8", "name": "Commented-code block (6 lines) in frontend/lib/hooks/useResearchQuestionAssistant.ts:617", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/lib/hooks/useResearchQuestionAssistant.ts:617"}, "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-81a4c8a5cc4f8599", "name": "Commented-code block (8 lines) in frontend/lib/hooks/useGapsUrlState.ts:87", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/lib/hooks/useGapsUrlState.ts:87"}, "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-d5fffd1ffbeedf1b", "name": "Commented-code block (5 lines) in frontend/lib/hooks/useResearchProgress.ts:64", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useResearchProgress.ts:64"}, "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-da42b71daccf5cc3", "name": "Commented-code block (5 lines) in frontend/lib/hooks/useBrowserNavGuard.ts:45", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useBrowserNavGuard.ts:45"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7708397af22b4903", "name": "Commented-code block (8 lines) in frontend/lib/hooks/useResearchSessionRestore.ts:40", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/lib/hooks/useResearchSessionRestore.ts:40"}, "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-d3019cfc9a042a86", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/hooks/useFullTextSearch.ts:57", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/hooks/useFullTextSearch.ts:57"}, "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-b45dde4ffaf3f73b", "name": "Commented-code block (8 lines) in frontend/lib/hooks/useKnowledgeMapData.ts:198", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/lib/hooks/useKnowledgeMapData.ts:198"}, "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-281e814e9a6da01b", "name": "Commented-code block (8 lines) in frontend/lib/hooks/useAutoPipelineOnArrival.ts:112", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/lib/hooks/useAutoPipelineOnArrival.ts:112"}, "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-8d4f8a6dc5eba347", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/hooks/useContextAwareHints.ts:144", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/hooks/useContextAwareHints.ts:144"}, "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-4e198788999552fa", "name": "Commented-code block (5 lines) in frontend/lib/hooks/useResearchAlignment.ts:61", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useResearchAlignment.ts:61"}, "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-0a7b6f77667861e5", "name": "Commented-code block (7 lines) in frontend/lib/hooks/useDrOPipelineContext.ts:164", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/lib/hooks/useDrOPipelineContext.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-8e4549b5b61aa13d", "name": "Commented-code block (5 lines) in frontend/lib/hooks/useQSortInstructions.ts:609", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useQSortInstructions.ts:609"}, "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-4458254ab2d8b0dd", "name": "Commented-code block (8 lines) in frontend/lib/hooks/useFieldMapHandlers.ts:198", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/lib/hooks/useFieldMapHandlers.ts:198"}, "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-6aaa64bcb5cfbe80", "name": "Commented-code block (5 lines) in frontend/lib/hooks/useAutoSave.ts:38", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useAutoSave.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-0abbb1ce5ccb1609", "name": "Commented-code block (8 lines) in frontend/lib/hooks/useDrOnionContext.ts:227", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/lib/hooks/useDrOnionContext.ts:227"}, "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-a107e508ae05a0d5", "name": "Commented-code block (8 lines) in frontend/lib/hooks/useKnowledgeMapAnnouncer.ts:257", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/lib/hooks/useKnowledgeMapAnnouncer.ts:257"}, "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-4b5793d488ff3d0e", "name": "Commented-code block (5 lines) in frontend/lib/hooks/useDiscoverRouteGuard.ts:52", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useDiscoverRouteGuard.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-998f7a3ebf08f1b3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/hooks/useTranslation.ts:63", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/hooks/useTranslation.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-6eedadc17b8f167d", "name": "Commented-code block (6 lines) in frontend/lib/hooks/useGapRefinementWebSocket.ts:194", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/lib/hooks/useGapRefinementWebSocket.ts:194"}, "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-7052879e7a56c9eb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/hooks/useCitationGraph.ts:76", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/hooks/useCitationGraph.ts: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-f863a90a8702bc78", "name": "Commented-code block (11 lines) in frontend/lib/hooks/useUserJobsSocket.ts:132", "shortDescription": {"text": "Commented-code block (11 lines) in frontend/lib/hooks/useUserJobsSocket.ts:132"}, "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-a1a63432f1cb7ae3", "name": "Commented-code block (5 lines) in frontend/lib/hooks/useKmCoverage.ts:128", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useKmCoverage.ts:128"}, "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-84d6ba989c183608", "name": "Commented-code block (5 lines) in frontend/lib/hooks/useResearchQuestionWebSocket.ts:370", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useResearchQuestionWebSocket.ts:370"}, "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-d567de65ff82492a", "name": "Commented-code block (5 lines) in frontend/lib/hooks/useKnowledgeGraphBuildSocket.ts:269", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useKnowledgeGraphBuildSocket.ts:269"}, "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-c6da4b354f684146", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/hooks/useRankingExperiment.ts:76", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/hooks/useRankingExperiment.ts: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-955647e55dbf61f5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/hooks/useAbortableFetch.ts:29", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/hooks/useAbortableFetch.ts:29"}, "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-9f533f4b5ec36843", "name": "Commented-code block (9 lines) in frontend/lib/hooks/useThematizationWebSocket.ts:304", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/lib/hooks/useThematizationWebSocket.ts:304"}, "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-b07018bcdeca3013", "name": "Commented-code block (5 lines) in frontend/lib/hooks/useDrOnionWebSocket.ts:161", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useDrOnionWebSocket.ts:161"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6b444a66ef1a9a02", "name": "Commented-code block (5 lines) in frontend/lib/hooks/__tests__/useGapRefinementWebSocket.lifecycle.test.ts:83", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/__tests__/useGapRefinementWebSocket.lifecycle.test.ts:83"}, "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-64941443d3b94f8c", "name": "Commented-code block (7 lines) in frontend/lib/hooks/__tests__/useFieldMapInteractions.test.ts:256", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/lib/hooks/__tests__/useFieldMapInteractions.test.ts:256"}, "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-0a61b06c27523bbb", "name": "Commented-code block (7 lines) in frontend/lib/hooks/__tests__/useFieldMapData.test.ts:56", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/lib/hooks/__tests__/useFieldMapData.test.ts:56"}, "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-7a9c3085b6065861", "name": "Commented-code block (9 lines) in frontend/lib/hooks/__tests__/useKnowledgeMapData.test.ts:105", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/lib/hooks/__tests__/useKnowledgeMapData.test.ts:105"}, "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-032bd2ff0f83056e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/hooks/__tests__/useKnowledgeMapData.test.ts:981", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/hooks/__tests__/useKnowledgeMapData.test.ts:981"}, "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-518e32cccf4cffa4", "name": "Commented-code block (5 lines) in frontend/lib/hooks/__tests__/useSearchWebSocket.test.ts:423", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/__tests__/useSearchWebSocket.test.ts:423"}, "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-0c7697df5e9eed87", "name": "Commented-code block (5 lines) in frontend/lib/hooks/__tests__/useKnowledgeGraphBuildSocket.test.ts:72", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/__tests__/useKnowledgeGraphBuildSocket.test.ts:72"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1b8d3f4750e4923e", "name": "Commented-code block (7 lines) in frontend/lib/hooks/__tests__/useFieldMapHandlers.test.ts:354", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/lib/hooks/__tests__/useFieldMapHandlers.test.ts:354"}, "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-91c6e0bf92e73b5f", "name": "Commented-code block (5 lines) in frontend/lib/hooks/__tests__/useKnowledgeMapURLState.test.ts:24", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/__tests__/useKnowledgeMapURLState.test.ts:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5c73f9c2dac1b053", "name": "Commented-code block (5 lines) in frontend/lib/hooks/__tests__/useStudyDataRestoration.test.ts:263", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/__tests__/useStudyDataRestoration.test.ts:263"}, "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-474e06119a141b2b", "name": "Commented-code block (5 lines) in frontend/lib/hooks/__tests__/evaluateInactivityWatchdog.test.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/__tests__/evaluateInactivityWatchdog.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-81cb37a5dd9df5ef", "name": "Commented-code block (7 lines) in frontend/lib/hooks/__tests__/useDiscoverRouteGuard.test.ts:578", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/lib/hooks/__tests__/useDiscoverRouteGuard.test.ts:578"}, "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-d6a684a0911a02a5", "name": "Commented-code block (5 lines) in frontend/lib/hooks/__tests__/useResearchProgress.study-switch.test.ts:563", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/__tests__/useResearchProgress.study-switch.test.ts:563"}, "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-e345eb4ee2add762", "name": "Commented-code block (5 lines) in frontend/lib/hooks/__tests__/useQueryIntelligence.test.ts:17", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/__tests__/useQueryIntelligence.test.ts:17"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8abe764e71375bec", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/services/upload-queue.service.ts:333", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/services/upload-queue.service.ts:333"}, "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-75786e0d3c4ac08f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/services/screening-workflow-api.service.ts:149", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/services/screening-workflow-api.service.ts:149"}, "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-097a0de299ee409b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/services/recruitment-api.service.ts:269", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/services/recruitment-api.service.ts:269"}, "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-31b1cdffc8030737", "name": "Commented-code block (7 lines) in frontend/lib/services/auth-coordinator.service.ts:391", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/lib/services/auth-coordinator.service.ts:391"}, "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-9a9a043db01de08d", "name": "Legacy-named symbol `isLegacy` in frontend/lib/services/literature-api.service.ts:6188", "shortDescription": {"text": "Legacy-named symbol `isLegacy` in frontend/lib/services/literature-api.service.ts:6188"}, "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-7fedab437b908b25", "name": "Commented-code block (9 lines) in frontend/lib/services/literature-api.service.ts:3", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/lib/services/literature-api.service.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-89dbb627acb82ddc", "name": "Commented-code block (5 lines) in frontend/lib/services/institution.service.ts:315", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/services/institution.service.ts:315"}, "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-5c0dbde55beaa80d", "name": "Commented-code block (5 lines) in frontend/lib/services/search-suggestions.service.ts:666", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/services/search-suggestions.service.ts:666"}, "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-e540a4c964f2f1fb", "name": "Commented-code block (5 lines) in frontend/lib/services/websocket-auth.service.ts:318", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/services/websocket-auth.service.ts:318"}, "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-d9f1412611f1489d", "name": "Commented-code block (5 lines) in frontend/lib/services/dr-onionstein-batch-sender.ts:33", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/services/dr-onionstein-batch-sender.ts:33"}, "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-c3bb9448aa3bf0ad", "name": "Legacy-named symbol `daysOld` in frontend/lib/services/draft.service.ts:92", "shortDescription": {"text": "Legacy-named symbol `daysOld` in frontend/lib/services/draft.service.ts:92"}, "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-8285fa9910147ee4", "name": "Commented-code block (6 lines) in frontend/lib/services/hub-api.service.ts:297", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/lib/services/hub-api.service.ts:297"}, "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-da0d1b02b999b06a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/services/hub-api.service.ts:10", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/services/hub-api.service.ts:10"}, "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-f590f136cc903d5c", "name": "Commented-code block (6 lines) in frontend/lib/services/websocket-connection-manager.service.ts:460", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/lib/services/websocket-connection-manager.service.ts:460"}, "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-123bf7cce5f902a6", "name": "Commented-code block (5 lines) in frontend/lib/services/__tests__/literature-api.bulk-save-study.test.ts:119", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/services/__tests__/literature-api.bulk-save-study.test.ts:119"}, "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-ed8c1fd94fbaf41c", "name": "Commented-code block (5 lines) in frontend/lib/services/__tests__/literature-api.url-validation.test.ts:22", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/services/__tests__/literature-api.url-validation.test.ts:22"}, "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-4600379aed4c504b", "name": "Commented-code block (10 lines) in frontend/lib/services/__tests__/literature-api-gap-contracts.test.ts:316", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/lib/services/__tests__/literature-api-gap-contracts.test.ts:316"}, "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-ca0713394783cb51", "name": "Commented-code block (5 lines) in frontend/lib/services/theme-extraction/performance-metrics.service.ts:278", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/services/theme-extraction/performance-metrics.service.ts:278"}, "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-f0202d1b9327376b", "name": "Commented-code block (7 lines) in frontend/lib/services/theme-extraction/fulltext-extraction.service.ts:368", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/lib/services/theme-extraction/fulltext-extraction.service.ts:368"}, "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-3517e5b331965706", "name": "Commented-code block (5 lines) in frontend/lib/services/theme-extraction/extraction-orchestrator.service.ts:256", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/lib/services/theme-extraction/extraction-orchestrator.service.ts:256"}, "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-07456750db3c537a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/hooks/useParticipantFlow.ts:123", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/hooks/useParticipantFlow.ts:123"}, "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-6ff2de1b57be0101", "name": "Commented-code block (5 lines) in frontend/hooks/useNavigationState.tsx:175", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/hooks/useNavigationState.tsx:175"}, "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-e4bc61bb1f55677e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/public/service-worker.js:233", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/public/service-worker.js:233"}, "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-509419a63c122a3e", "name": "Legacy-named symbol `startOld` in frontend/e2e/rollback-testing.spec.ts:338", "shortDescription": {"text": "Legacy-named symbol `startOld` in frontend/e2e/rollback-testing.spec.ts:338"}, "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-68a28ce09267a065", "name": "Commented-code block (7 lines) in frontend/e2e/visual-baselines.spec.ts:73", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/e2e/visual-baselines.spec.ts:73"}, "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-f1028b0c381bdb27", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/e2e/jobs-ring.spec.ts:100", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/e2e/jobs-ring.spec.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-70c8d77556d22c89", "name": "Commented-code block (6 lines) in frontend/e2e/search-hero-round-13.spec.ts:165", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/e2e/search-hero-round-13.spec.ts:165"}, "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-3ef77e40117e438b", "name": "Commented-code block (7 lines) in frontend/e2e/lit-to-km-pipeline.spec.ts:58", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/e2e/lit-to-km-pipeline.spec.ts:58"}, "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-673489e856bf8488", "name": "Commented-code block (10 lines) in frontend/e2e/search-hero-accessibility.spec.ts:35", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/e2e/search-hero-accessibility.spec.ts:35"}, "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-81a797161e431ab2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/e2e/logging-flow.spec.ts:20", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/e2e/logging-flow.spec.ts:20"}, "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-2bba981ce3028e40", "name": "Commented-code block (6 lines) in frontend/e2e/bibliometric-report.spec.ts:67", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/e2e/bibliometric-report.spec.ts:67"}, "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-99d8a04fe0e5ea3b", "name": "Commented-code block (10 lines) in frontend/e2e/theme-extraction-6stage.spec.ts:264", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/e2e/theme-extraction-6stage.spec.ts:264"}, "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-7ef42eee41c270ae", "name": "Commented-code block (8 lines) in frontend/e2e/theme-extraction-workflow.spec.ts:14", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/e2e/theme-extraction-workflow.spec.ts:14"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-55c235a060c4f018", "name": "Commented-code block (5 lines) in frontend/e2e/source-retry-flow.spec.ts:244", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/e2e/source-retry-flow.spec.ts:244"}, "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-f46b2e5ed276c495", "name": "Legacy-named symbol `isLegacy` in frontend/e2e/phase-10999-methodology-export.spec.ts:20", "shortDescription": {"text": "Legacy-named symbol `isLegacy` in frontend/e2e/phase-10999-methodology-export.spec.ts:20"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2f382519ba0d4de4", "name": "Commented-code block (5 lines) in frontend/e2e/authenticated-researcher-routes.spec.ts:39", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/e2e/authenticated-researcher-routes.spec.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-8b0ee1e2a106673e", "name": "Commented-code block (7 lines) in frontend/e2e/rm-as-source-of-truth.spec.ts:122", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/e2e/rm-as-source-of-truth.spec.ts:122"}, "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-aeb6a1681d3a57ed", "name": "Commented-code block (9 lines) in frontend/e2e/knowledge-map-full-audit.spec.ts:58", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/knowledge-map-full-audit.spec.ts:58"}, "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-bf912ae5fc52ecd2", "name": "Commented-code block (6 lines) in frontend/e2e/gaps-page-full-audit.spec.ts:146", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/e2e/gaps-page-full-audit.spec.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-154ca2fe71f236e1", "name": "Commented-code block (5 lines) in frontend/e2e/knowledge-map.spec.ts:83", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/e2e/knowledge-map.spec.ts:83"}, "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-2e6a7f5cf611b693", "name": "Commented-code block (12 lines) in frontend/e2e/global-setup.ts:210", "shortDescription": {"text": "Commented-code block (12 lines) in frontend/e2e/global-setup.ts:210"}, "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-661fe6258eae7d51", "name": "Commented-code block (6 lines) in frontend/e2e/study-switch-data-flow.spec.ts:178", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/e2e/study-switch-data-flow.spec.ts:178"}, "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-4362a98f3865d2b1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/e2e/study-switch-data-flow.spec.ts:396", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/e2e/study-switch-data-flow.spec.ts:396"}, "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-b52663af535ca7e3", "name": "Commented-code block (10 lines) in frontend/e2e/references-export-dropdown.spec.ts:20", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/e2e/references-export-dropdown.spec.ts:20"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7335d55857195832", "name": "Commented-code block (5 lines) in frontend/e2e/km-tier56-57-announcer-pfnet.spec.ts:44", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/e2e/km-tier56-57-announcer-pfnet.spec.ts:44"}, "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-2a6acd6768e38bc2", "name": "Commented-code block (7 lines) in frontend/e2e/gap-page/decay-pill.spec.ts:63", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/e2e/gap-page/decay-pill.spec.ts:63"}, "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-39e8e2d00e2e8269", "name": "Commented-code block (7 lines) in frontend/e2e/gap-page/time-to-signal.spec.ts:76", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/e2e/gap-page/time-to-signal.spec.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-9c39845b5228ee83", "name": "Legacy-named symbol `P_old` in frontend/e2e/gap-page/cache-collision.spec.ts:13", "shortDescription": {"text": "Legacy-named symbol `P_old` in frontend/e2e/gap-page/cache-collision.spec.ts:13"}, "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-375c2ceab33faf11", "name": "Commented-code block (6 lines) in frontend/e2e/gap-page/cache-collision.spec.ts:56", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/e2e/gap-page/cache-collision.spec.ts:56"}, "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-7c6580199c53c9eb", "name": "Commented-code block (5 lines) in frontend/e2e/gap-page/data-hydration.spec.ts:130", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/e2e/gap-page/data-hydration.spec.ts:130"}, "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-ac2c1e399d72c86e", "name": "Commented-code block (6 lines) in frontend/e2e/gap-page/contradicting-evidence.spec.ts:96", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/e2e/gap-page/contradicting-evidence.spec.ts:96"}, "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-3f1c8204394f7bc5", "name": "Commented-code block (7 lines) in frontend/e2e/gap-page/error-trace-identifiers.spec.ts:34", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/e2e/gap-page/error-trace-identifiers.spec.ts:34"}, "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-0066ccabd4166fc4", "name": "Commented-code block (15 lines) in frontend/e2e/gap-page/forest-plot.spec.ts:79", "shortDescription": {"text": "Commented-code block (15 lines) in frontend/e2e/gap-page/forest-plot.spec.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-e3935995911bd143", "name": "Commented-code block (5 lines) in frontend/e2e/gap-page/ws-reconnect-fsm.spec.ts:54", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/e2e/gap-page/ws-reconnect-fsm.spec.ts:54"}, "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-a48d7f4044ce416b", "name": "Commented-code block (5 lines) in frontend/e2e/gap-page/runtime-contracts.spec.ts:33", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/e2e/gap-page/runtime-contracts.spec.ts:33"}, "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-0d37230dbcb7515a", "name": "Commented-code block (7 lines) in frontend/e2e/gap-page/dr-o-gap-context.spec.ts:59", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/e2e/gap-page/dr-o-gap-context.spec.ts:59"}, "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-2d50f8e2fbd78f75", "name": "Commented-code block (6 lines) in frontend/e2e/gap-page/multi-user-isolation.spec.ts:35", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/e2e/gap-page/multi-user-isolation.spec.ts:35"}, "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-c7e9d0ba1305a7a9", "name": "Commented-code block (6 lines) in frontend/e2e/gap-page/external-validation.spec.ts:79", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/e2e/gap-page/external-validation.spec.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-3ad4112af8b6f8aa", "name": "Commented-code block (5 lines) in frontend/e2e/gap-page/portfolio-matrix.spec.ts:46", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/e2e/gap-page/portfolio-matrix.spec.ts:46"}, "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-3192a9ce29014a42", "name": "Commented-code block (8 lines) in frontend/e2e/gap-page/ui-cold-load.spec.ts:54", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/e2e/gap-page/ui-cold-load.spec.ts:54"}, "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-3ab56f8c5a2a6834", "name": "Commented-code block (5 lines) in frontend/e2e/gap-page/reproducibility.spec.ts:98", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/e2e/gap-page/reproducibility.spec.ts:98"}, "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-33c03e3ae5b1fdcc", "name": "Commented-code block (6 lines) in frontend/e2e/gap-page/race-rerun-during-corpus-refresh.spec.ts:40", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/e2e/gap-page/race-rerun-during-corpus-refresh.spec.ts:40"}, "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-138aa856ed9b0c37", "name": "Commented-code block (5 lines) in frontend/e2e/gap-page/theme-extraction-recovery.spec.ts:61", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/e2e/gap-page/theme-extraction-recovery.spec.ts:61"}, "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-2f5d6f898ba30513", "name": "Commented-code block (5 lines) in frontend/e2e/gap-page/route-guard-recovery.spec.ts:77", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/e2e/gap-page/route-guard-recovery.spec.ts:77"}, "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-f17baeab047c6f19", "name": "Commented-code block (14 lines) in frontend/e2e/gap-page/count-consistency.spec.ts:78", "shortDescription": {"text": "Commented-code block (14 lines) in frontend/e2e/gap-page/count-consistency.spec.ts:78"}, "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-2eb3618328c44c3e", "name": "Commented-code block (7 lines) in frontend/e2e/gap-page/cold-load.spec.ts:49", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/e2e/gap-page/cold-load.spec.ts:49"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7b0db672651b3d93", "name": "Commented-code block (14 lines) in frontend/e2e/gap-page/hook-leaks.spec.ts:58", "shortDescription": {"text": "Commented-code block (14 lines) in frontend/e2e/gap-page/hook-leaks.spec.ts:58"}, "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-f73b1faafd874ad7", "name": "Commented-code block (5 lines) in frontend/e2e/gap-page/top-1-exit-criteria.spec.ts:153", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/e2e/gap-page/top-1-exit-criteria.spec.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-cc6c3d48f0806f71", "name": "Commented-code block (7 lines) in frontend/e2e/gap-page/user-journey-create-study-to-gaps.spec.ts:145", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/e2e/gap-page/user-journey-create-study-to-gaps.spec.ts:145"}, "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-3dc75218740b55e6", "name": "Commented-code block (8 lines) in frontend/e2e/gap-page/wave6-browser-verify.spec.ts:41", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/e2e/gap-page/wave6-browser-verify.spec.ts:41"}, "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-052c5352e8b63d0b", "name": "Commented-code block (7 lines) in frontend/e2e/gap-page/fixtures/seed-gap-run.smoke.spec.ts:36", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/e2e/gap-page/fixtures/seed-gap-run.smoke.spec.ts:36"}, "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-d53b68098c7be9a7", "name": "Commented-code block (5 lines) in frontend/e2e/gap-page/fixtures/seed-gap-run.ts:49", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/e2e/gap-page/fixtures/seed-gap-run.ts:49"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-380ba28c581c238f", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-b6208591.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-b6208591.spec.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-55ca10a6fa405e74", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-60a1da8f.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-60a1da8f.spec.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-4285832fce577258", "name": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-12f94082.spec.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-12f94082.spec.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-afed5dfb8c960f7b", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-68e4c2fe.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-68e4c2fe.spec.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-aa394be19d040298", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-91414307.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-91414307.spec.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-586ee5d5ee67b18b", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-985992e4.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-985992e4.spec.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-ceda402f7fe71b9e", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-d2f7c396.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-d2f7c396.spec.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-5eabe9a960c76bf1", "name": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-c36ea0f3.spec.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-c36ea0f3.spec.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ec7740ebfcf8fe25", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-54820cc3.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-54820cc3.spec.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-abb2f93f61691159", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-7131b95c.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-7131b95c.spec.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-47ed9c30686c2717", "name": "Commented-code block (6 lines) in frontend/e2e/k2-wiring/route-route-c2068208.spec.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/e2e/k2-wiring/route-route-c2068208.spec.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0b6e6494f8c014de", "name": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-9c8145a9.spec.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-9c8145a9.spec.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d752a2b65f9c3a99", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-b47ae093.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-b47ae093.spec.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-3c096420d7900063", "name": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-4385f9d0.spec.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-4385f9d0.spec.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ab3653599e736e02", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-7b70004d.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-7b70004d.spec.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-54bdae5cf2d2c7c8", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-3904fc29.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-3904fc29.spec.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-b68b93d4e9dee028", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-c92254f2.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-c92254f2.spec.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-b322c4ff852693ee", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-f75c1d4e.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-f75c1d4e.spec.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-b8ae822f79561b84", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-4607ddcf.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-4607ddcf.spec.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-0fa4ae78ff9442fb", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-a72a78e1.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-a72a78e1.spec.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-7b5febdf9f9ae8da", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-0d6054af.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-0d6054af.spec.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-c8cb56fd93b00399", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-109938a4.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-109938a4.spec.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-bef9ac0a8e90d22e", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-66b3d6ab.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-66b3d6ab.spec.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-939536f5e3f78590", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-cbbd4bd4.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-cbbd4bd4.spec.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-4e8669f4439d59b3", "name": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-95a59a3d.spec.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-95a59a3d.spec.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-51d96b7054d50d19", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-5fa4d704.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-5fa4d704.spec.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-00204ce1b75c1961", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-fd2de3ab.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-fd2de3ab.spec.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-3c019f0552fdd122", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-5d65fcf4.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-5d65fcf4.spec.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-140973161df5a89f", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-7a80bf26.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-7a80bf26.spec.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-a80abfb537c80d5c", "name": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-136e7db7.spec.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-136e7db7.spec.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-105d60d71b73bfff", "name": "Commented-code block (8 lines) in frontend/e2e/k2-wiring/action_button-action_button-f734fd6b.spec.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/e2e/k2-wiring/action_button-action_button-f734fd6b.spec.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cb994351078ab41f", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-7a4a572b.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-7a4a572b.spec.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-ecbd031066bdf501", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-33373989.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-33373989.spec.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-04574b93e7994e61", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-26b70e49.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-26b70e49.spec.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-3ea02bf9abd22b1a", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-3b391ab9.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-3b391ab9.spec.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-7c258db2f337ec81", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-bcb08d01.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-bcb08d01.spec.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-3f5f79f8740de075", "name": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-8ef7463c.spec.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-8ef7463c.spec.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f12f8cc7a476ebe1", "name": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-68b778de.spec.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-68b778de.spec.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a28a6654128b8d9c", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-f0d24e8d.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-f0d24e8d.spec.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-385531e4d3f31ef6", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-df743596.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-df743596.spec.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-c5de55356be2cc6a", "name": "Commented-code block (7 lines) in frontend/e2e/k2-wiring/route-route-bc48b06c.spec.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/e2e/k2-wiring/route-route-bc48b06c.spec.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cb41cda30ac4053a", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-f0260893.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-f0260893.spec.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-f2e54345861c20e4", "name": "Commented-code block (6 lines) in frontend/e2e/k2-wiring/route-route-9e85dcab.spec.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/e2e/k2-wiring/route-route-9e85dcab.spec.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a13c71f00732f3a8", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-a67d7f22.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-a67d7f22.spec.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-4ae6be77ed62861c", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-02c2d26e.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-02c2d26e.spec.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-f36fad2adaa8bda8", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-b28eccf7.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-b28eccf7.spec.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-ce68bda4fa69395a", "name": "Commented-code block (7 lines) in frontend/e2e/k2-wiring/route-route-73684932.spec.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/e2e/k2-wiring/route-route-73684932.spec.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-68a902feb919c93e", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-a6758169.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-a6758169.spec.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-c215146236a8c67b", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-08109106.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-08109106.spec.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-3b343980066af2dd", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-e5a4a0de.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-e5a4a0de.spec.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-a70c15d1597155a8", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-a5ae48ba.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-a5ae48ba.spec.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-bb64c60f7338beb4", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-06be1313.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-06be1313.spec.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-e8989d3e9c0319a3", "name": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-66ab6144.spec.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-66ab6144.spec.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9dab3e35ad0eacb1", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-b3806e8c.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-b3806e8c.spec.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-9ba2dae4c1b069f4", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-b92d9a67.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-b92d9a67.spec.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-37a936aab26245ae", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-49293c36.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-49293c36.spec.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-c1a95ae0f9ee5105", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-0d03b1eb.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-0d03b1eb.spec.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-ff94bac72cbade4b", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-e4e73428.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-e4e73428.spec.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-023c398ff95d1d34", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-b5e40c63.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-b5e40c63.spec.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-81aae7b4bd8e4f8a", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-520b36ac.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-520b36ac.spec.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-bc497439b4443e04", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-e80ed871.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-e80ed871.spec.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-85e18dfce4d4881e", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-abac1162.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-abac1162.spec.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-56f91106778c3fd7", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-dd3257e6.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-dd3257e6.spec.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-fd9daf01f5b4263a", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-27f56a67.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-27f56a67.spec.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-d2ee861d0cc67499", "name": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-ee9fd96c.spec.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-ee9fd96c.spec.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-a16dde77e540d992", "name": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-20808537.spec.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-20808537.spec.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c958215d30133489", "name": "Commented-code block (6 lines) in frontend/e2e/k2-wiring/route-route-c72ba744.spec.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/e2e/k2-wiring/route-route-c72ba744.spec.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-acaed50abcc40149", "name": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-bf381d53.spec.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-bf381d53.spec.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fbf1aabf909740f3", "name": "Commented-code block (7 lines) in tests/orcid-comprehensive-test.spec.ts:504", "shortDescription": {"text": "Commented-code block (7 lines) in tests/orcid-comprehensive-test.spec.ts:504"}, "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-d1b6ac91457fba0e", "name": "Commented-code block (12 lines) in scripts/phase-10.110-e2e-triage.mjs:8", "shortDescription": {"text": "Commented-code block (12 lines) in scripts/phase-10.110-e2e-triage.mjs: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-e75eb5009d148c45", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ui-audit-runner.js:138", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ui-audit-runner.js: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-8e76b705e3ee7add", "name": "Commented-code block (6 lines) in scripts/phase-10.110-feature-inventory.mjs:9", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/phase-10.110-feature-inventory.mjs: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-f5d877ed0d75b41a", "name": "Commented-code block (9 lines) in scripts/cp1-row-1.5-finalize.mjs:9", "shortDescription": {"text": "Commented-code block (9 lines) in scripts/cp1-row-1.5-finalize.mjs: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-bb8b5a6cba584fdc", "name": "Commented-code block (5 lines) in scripts/audit-rubric-readiness.mjs:4", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/audit-rubric-readiness.mjs: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-5a9afe0ddf09304c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/orcid-a-plus-plus-plus-test.js:52", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/orcid-a-plus-plus-plus-test.js:52"}, "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-c57ad4e4196bfd1b", "name": "Commented-code block (7 lines) in scripts/l9-race-leak-drift.mjs:62", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/l9-race-leak-drift.mjs:62"}, "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-d622760739ae9798", "name": "Commented-code block (7 lines) in scripts/dev-netflix-v2.js:110", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/dev-netflix-v2.js:110"}, "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-2e1a5318243e83b1", "name": "Commented-code block (6 lines) in scripts/check-metrics-series.js:168", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/check-metrics-series.js: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-63cb8e3e2d243018", "name": "Commented-code block (6 lines) in scripts/design-language-lint.js:266", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/design-language-lint.js:266"}, "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-b8d82593c62736d9", "name": "Commented-code block (7 lines) in scripts/k2-wiring-scaffold.mjs:69", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/k2-wiring-scaffold.mjs: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-fefd4d5fcf5f4360", "name": "Commented-code block (5 lines) in scripts/check-search-overclaims.js:106", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/check-search-overclaims.js:106"}, "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-acaafc0afa4b6978", "name": "Commented-code block (5 lines) in scripts/check-k3-coverage.mjs:54", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/check-k3-coverage.mjs:54"}, "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-d4848d6ccc589c0c", "name": "Commented-code block (5 lines) in scripts/test-phase-10240-streaming.js:12", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/test-phase-10240-streaming.js:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9a0e1a7be4a53236", "name": "Commented-code block (9 lines) in scripts/audit-hook-dependencies.js:58", "shortDescription": {"text": "Commented-code block (9 lines) in scripts/audit-hook-dependencies.js:58"}, "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-3abad6b55f93f9d3", "name": "Commented-code block (7 lines) in scripts/k2-inventory-drift.mjs:77", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/k2-inventory-drift.mjs:77"}, "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-bdba903d1ece42c0", "name": "Commented-code block (5 lines) in scripts/l4-ws-contract-map.mjs:103", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/l4-ws-contract-map.mjs:103"}, "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-05ccf93cfb781e6a", "name": "Commented-code block (7 lines) in scripts/phase1-tests.mjs:290", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/phase1-tests.mjs:290"}, "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-4d45b6041833a976", "name": "Commented-code block (6 lines) in scripts/ci/flake-rate.mjs:68", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/ci/flake-rate.mjs:68"}, "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-db3d20bff51292bc", "name": "Commented-code block (9 lines) in packages/schemas/src/gap.schema.ts:160", "shortDescription": {"text": "Commented-code block (9 lines) in packages/schemas/src/gap.schema.ts:160"}, "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-d5423f8f53ef0116", "name": "Commented-code block (6 lines) in backend/test-bm25-relevance-filtering.js:112", "shortDescription": {"text": "Commented-code block (6 lines) in backend/test-bm25-relevance-filtering.js:112"}, "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-155243cc89ba4d14", "name": "Commented-code block (7 lines) in backend/stryker.conf.mjs:77", "shortDescription": {"text": "Commented-code block (7 lines) in backend/stryker.conf.mjs:77"}, "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-b7f373159968a22e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 backend/test/integration/pdf-full-flow.integration.spec.ts:188", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/test/integration/pdf-full-flow.integration.spec.ts:188"}, "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-2cbd01914db5105e", "name": "Commented-code block (6 lines) in backend/test/integration/setup-testcontainers.ts:86", "shortDescription": {"text": "Commented-code block (6 lines) in backend/test/integration/setup-testcontainers.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-c28e11a46838ec12", "name": "Commented-code block (6 lines) in backend/test/performance/ws-search-concurrency.harness.js:147", "shortDescription": {"text": "Commented-code block (6 lines) in backend/test/performance/ws-search-concurrency.harness.js:147"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-52cf36cd0111f116", "name": "Commented-code block (6 lines) in backend/test/contract/api-consumer.pact.spec.ts:34", "shortDescription": {"text": "Commented-code block (6 lines) in backend/test/contract/api-consumer.pact.spec.ts:34"}, "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-98e61a56f137d27a", "name": "Commented-code block (6 lines) in backend/test/contract/api-provider.pact.spec.ts:115", "shortDescription": {"text": "Commented-code block (6 lines) in backend/test/contract/api-provider.pact.spec.ts:115"}, "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-d2dd56bbe3143787", "name": "`fetch()` without try/.catch or AbortSignal \u2014 backend/test/contract/api-provider.pact.spec.ts:264", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/test/contract/api-provider.pact.spec.ts:264"}, "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-4bd6047b127fbaee", "name": "Commented-code block (5 lines) in backend/scripts/source-health-check.ts:123", "shortDescription": {"text": "Commented-code block (5 lines) in backend/scripts/source-health-check.ts:123"}, "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-a6bc17adc6ef684b", "name": "Commented-code block (5 lines) in backend/scripts/citation-enrichment-backfill.ts:142", "shortDescription": {"text": "Commented-code block (5 lines) in backend/scripts/citation-enrichment-backfill.ts:142"}, "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-4a768f06aea2aa44", "name": "Commented-code block (9 lines) in backend/scripts/pipeline-checkpoint-arxiv.ts:51", "shortDescription": {"text": "Commented-code block (9 lines) in backend/scripts/pipeline-checkpoint-arxiv.ts:51"}, "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-bd42f756d860ad3e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 backend/scripts/add-orcid-publications.ts:179", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/scripts/add-orcid-publications.ts:179"}, "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-f39daecfd375aa13", "name": "Commented-code block (8 lines) in backend/scripts/reset-user-state.ts:119", "shortDescription": {"text": "Commented-code block (8 lines) in backend/scripts/reset-user-state.ts:119"}, "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-943f74a636d19433", "name": "Commented-code block (5 lines) in backend/scripts/benchmark-pipeline.ts:279", "shortDescription": {"text": "Commented-code block (5 lines) in backend/scripts/benchmark-pipeline.ts:279"}, "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-71319ed3e9c769dd", "name": "Commented-code block (11 lines) in backend/scripts/pipeline-validate-all-sources.ts:143", "shortDescription": {"text": "Commented-code block (11 lines) in backend/scripts/pipeline-validate-all-sources.ts:143"}, "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-33c79bdc505a6d42", "name": "`fetch()` without try/.catch or AbortSignal \u2014 backend/scripts/check-orcid-user.ts:105", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/scripts/check-orcid-user.ts:105"}, "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-cbee8dc2e89f9be4", "name": "Commented-code block (5 lines) in backend/scripts/eval/generate-smoke-fixture.ts:416", "shortDescription": {"text": "Commented-code block (5 lines) in backend/scripts/eval/generate-smoke-fixture.ts:416"}, "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-020baddb76c2331b", "name": "Commented-code block (5 lines) in backend/prisma/seed-km-corpus.ts:91", "shortDescription": {"text": "Commented-code block (5 lines) in backend/prisma/seed-km-corpus.ts:91"}, "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-39d2a65c028a2d3a", "name": "Commented-code block (10 lines) in backend/src/main.ts:41", "shortDescription": {"text": "Commented-code block (10 lines) in backend/src/main.ts:41"}, "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-28e2d522588d25d2", "name": "Commented-code block (6 lines) in backend/src/app.module.ts:8", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/app.module.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-1328a45396443924", "name": "Legacy-named symbol `jwtSecretLegacy` in backend/src/config/env.validation.ts:138", "shortDescription": {"text": "Legacy-named symbol `jwtSecretLegacy` in backend/src/config/env.validation.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-bfc666b2dd6cd0b1", "name": "Commented-code block (8 lines) in backend/src/config/env.validation.ts:129", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/config/env.validation.ts:129"}, "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-920925ad7bb573e9", "name": "Commented-code block (5 lines) in backend/src/config/env.schema.ts:113", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/config/env.schema.ts:113"}, "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-8d5605abd2f3dc38", "name": "Commented-code block (5 lines) in backend/src/common/prisma.service.ts:119", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/common/prisma.service.ts:119"}, "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-2a4b70af2fd3c07d", "name": "Commented-code block (8 lines) in backend/src/common/adapters/redis-io.adapter.ts:96", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/common/adapters/redis-io.adapter.ts:96"}, "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-1cdaf365cf02a1d8", "name": "Commented-code block (5 lines) in backend/src/common/security/csp-report.controller.ts:122", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/common/security/csp-report.controller.ts:122"}, "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-2f0cd2aeca5ce254", "name": "Commented-code block (8 lines) in backend/src/common/security/types/authenticated-socket.types.ts:180", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/common/security/types/authenticated-socket.types.ts:180"}, "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-fa52f28e8a50bcfe", "name": "Commented-code block (5 lines) in backend/src/common/security/guards/ws-auth.guard.ts:28", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/common/security/guards/ws-auth.guard.ts:28"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-88935400a9534724", "name": "Commented-code block (5 lines) in backend/src/common/security/services/room-authorization.service.ts:147", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/common/security/services/room-authorization.service.ts:147"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e9b7615fcaca6e43", "name": "Commented-code block (9 lines) in backend/src/common/notifications/notification.gateway.ts:29", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/common/notifications/notification.gateway.ts:29"}, "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-63bbd7acbd8821ce", "name": "Commented-code block (5 lines) in backend/src/common/notifications/__tests__/notification.gateway.spec.ts:125", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/common/notifications/__tests__/notification.gateway.spec.ts:125"}, "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-37090b6917a014ec", "name": "Commented-code block (5 lines) in backend/src/common/monitoring/enhanced-metrics.service.ts:705", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/common/monitoring/enhanced-metrics.service.ts:705"}, "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-940f0477cdb0ab85", "name": "Commented-code block (7 lines) in backend/src/common/monitoring/realtime-metrics-collector.service.ts:278", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/common/monitoring/realtime-metrics-collector.service.ts:278"}, "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-229171e207752f94", "name": "Commented-code block (7 lines) in backend/src/common/monitoring/metrics.service.ts:59", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/common/monitoring/metrics.service.ts:59"}, "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-fa53701fde1d03f0", "name": "Commented-code block (9 lines) in backend/src/common/guards/memory-pressure.guard.ts:30", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/common/guards/memory-pressure.guard.ts:30"}, "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-8f42d96e370f1190", "name": "Commented-code block (9 lines) in backend/src/common/utils/cgroup-memory.util.ts:165", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/common/utils/cgroup-memory.util.ts:165"}, "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-61445f7039adcad8", "name": "Commented-code block (5 lines) in backend/src/common/utils/__tests__/prompt-sanitization.property.spec.ts:98", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/common/utils/__tests__/prompt-sanitization.property.spec.ts:98"}, "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-bc36b5008ee7c514", "name": "Commented-code block (5 lines) in backend/src/common/redis/redis.service.ts:25", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/common/redis/redis.service.ts:25"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-80ce4886fdde073a", "name": "Commented-code block (11 lines) in backend/src/common/interceptors/data-sanitization.interceptor.ts:38", "shortDescription": {"text": "Commented-code block (11 lines) in backend/src/common/interceptors/data-sanitization.interceptor.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-df6ec7a9357f5b96", "name": "Commented-code block (6 lines) in backend/src/common/interceptors/idempotency.interceptor.ts:59", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/common/interceptors/idempotency.interceptor.ts:59"}, "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-aa119e5977581ac5", "name": "Commented-code block (9 lines) in backend/src/common/interceptors/error-budget.interceptor.ts:49", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/common/interceptors/error-budget.interceptor.ts:49"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-68956186e98cf948", "name": "Commented-code block (9 lines) in backend/src/common/interceptors/metrics.interceptor.ts:53", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/common/interceptors/metrics.interceptor.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-49b58cddc78505f5", "name": "Commented-code block (6 lines) in backend/src/common/interceptors/__tests__/idempotency.interceptor.spec.ts:753", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/common/interceptors/__tests__/idempotency.interceptor.spec.ts:753"}, "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-3bccd88031ef0801", "name": "Commented-code block (6 lines) in backend/src/common/validation/websocket-validation.service.ts:120", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/common/validation/websocket-validation.service.ts:120"}, "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-c98760638fd64561", "name": "Commented-code block (12 lines) in backend/src/common/queue/redis-queue.service.ts:141", "shortDescription": {"text": "Commented-code block (12 lines) in backend/src/common/queue/redis-queue.service.ts:141"}, "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-7d04bace5c0d75eb", "name": "Commented-code block (5 lines) in backend/src/common/gateways/base-websocket.gateway.ts:32", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/common/gateways/base-websocket.gateway.ts:32"}, "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-a7122ca302908b3a", "name": "Commented-code block (11 lines) in backend/src/common/rate-limiting/throttler-redis-storage.service.ts:78", "shortDescription": {"text": "Commented-code block (11 lines) in backend/src/common/rate-limiting/throttler-redis-storage.service.ts:78"}, "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-cee86ec7fbef7a28", "name": "Commented-code block (7 lines) in backend/src/common/services/http-client-security.service.ts:236", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/common/services/http-client-security.service.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-f9ddef243380e64d", "name": "Commented-code block (6 lines) in backend/src/common/services/memory-pressure.service.ts:64", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/common/services/memory-pressure.service.ts:64"}, "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-1ffe8ff69651abbf", "name": "Commented-code block (7 lines) in backend/src/common/services/error-budget.service.ts:72", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/common/services/error-budget.service.ts:72"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1204e28ec625160d", "name": "Commented-code block (9 lines) in backend/src/common/services/study-deletion.service.ts:126", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/common/services/study-deletion.service.ts:126"}, "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-e99133a7ef59dc19", "name": "Commented-code block (5 lines) in backend/src/common/services/study-access.service.ts:94", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/common/services/study-access.service.ts:94"}, "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-e38c866e57d3e691", "name": "Commented-code block (6 lines) in backend/src/common/services/connection-manager.service.ts:37", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/common/services/connection-manager.service.ts:37"}, "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-2f7177afb477bd67", "name": "Commented-code block (9 lines) in backend/src/common/services/metrics.service.ts:325", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/common/services/metrics.service.ts:325"}, "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-7cd48e3576075e45", "name": "Commented-code block (8 lines) in backend/src/common/services/__tests__/study-deletion.service.spec.ts:171", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/common/services/__tests__/study-deletion.service.spec.ts:171"}, "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-b0bfe65b27a62536", "name": "Commented-code block (7 lines) in backend/src/common/services/__tests__/http-client-security.service.spec.ts:158", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/common/services/__tests__/http-client-security.service.spec.ts:158"}, "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-adf19b5b070dfb31", "name": "Commented-code block (7 lines) in backend/src/common/session/session.module.ts:154", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/common/session/session.module.ts:154"}, "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-d98edf24bb1eabee", "name": "Commented-code block (5 lines) in backend/src/common/filters/http-exception.filter.ts:111", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/common/filters/http-exception.filter.ts:111"}, "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-da2f82ba2952329c", "name": "Commented-code block (7 lines) in backend/src/test/mocks/service-mocks.ts:217", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/test/mocks/service-mocks.ts:217"}, "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-49962f7cad42497b", "name": "Commented-code block (5 lines) in backend/src/modules/ai/ai.module.ts:286", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/ai.module.ts:286"}, "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-046ab3502a17cfa5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/ai/types/dr-onionstein.types.ts:692", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/ai/types/dr-onionstein.types.ts:692"}, "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-2a2ee98a7b480bca", "name": "Commented-code block (5 lines) in backend/src/modules/ai/types/research-question.types.ts:79", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/types/research-question.types.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-adee0dc1b49b9986", "name": "Commented-code block (8 lines) in backend/src/modules/ai/dtos/ai-request.dto.ts:19", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/ai/dtos/ai-request.dto.ts:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-076b92acf433e84f", "name": "Commented-code block (5 lines) in backend/src/modules/ai/constants/product-semantics-registry.ts:124", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/constants/product-semantics-registry.ts:124"}, "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-5dec07e78705a41f", "name": "Commented-code block (10 lines) in backend/src/modules/ai/utils/__tests__/compute-logical-next-step.spec.ts:193", "shortDescription": {"text": "Commented-code block (10 lines) in backend/src/modules/ai/utils/__tests__/compute-logical-next-step.spec.ts:193"}, "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-3afb516901f8e9f7", "name": "Commented-code block (11 lines) in backend/src/modules/ai/observability/ai-suggestion-metrics.service.ts:146", "shortDescription": {"text": "Commented-code block (11 lines) in backend/src/modules/ai/observability/ai-suggestion-metrics.service.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-5247e4f5b98b4de6", "name": "Commented-code block (6 lines) in backend/src/modules/ai/controllers/research-question.controller.ts:187", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/ai/controllers/research-question.controller.ts:187"}, "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-df87c75b3aa02477", "name": "Commented-code block (5 lines) in backend/src/modules/ai/controllers/dr-onionstein-eval.controller.ts:31", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/controllers/dr-onionstein-eval.controller.ts:31"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4b9d48461fc57fab", "name": "Commented-code block (5 lines) in backend/src/modules/ai/controllers/query-intelligence.controller.ts:73", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/controllers/query-intelligence.controller.ts:73"}, "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-fdb5edb27e2baa5b", "name": "Commented-code block (5 lines) in backend/src/modules/ai/controllers/ai.controller.ts:803", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/controllers/ai.controller.ts:803"}, "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-43c0eb981e3fb421", "name": "Commented-code block (5 lines) in backend/src/modules/ai/controllers/__tests__/query-intelligence.controller.spec.ts:267", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/controllers/__tests__/query-intelligence.controller.spec.ts:267"}, "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-e3dd796d03981309", "name": "Commented-code block (8 lines) in backend/src/modules/ai/services/unified-ai.service.ts:455", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/ai/services/unified-ai.service.ts:455"}, "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-fe6d1ec60625dc49", "name": "Commented-code block (5 lines) in backend/src/modules/ai/services/dr-onionstein-context-serializer.service.ts:171", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/services/dr-onionstein-context-serializer.service.ts:171"}, "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-c9185a1d95ca7b92", "name": "Commented-code block (7 lines) in backend/src/modules/ai/services/dr-onionstein-tool-registry.service.ts:60", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/ai/services/dr-onionstein-tool-registry.service.ts:60"}, "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-dc363599acb4c5b5", "name": "Commented-code block (13 lines) in backend/src/modules/ai/services/search-query-expansion.service.ts:736", "shortDescription": {"text": "Commented-code block (13 lines) in backend/src/modules/ai/services/search-query-expansion.service.ts:736"}, "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-7d71c0138512f76a", "name": "Commented-code block (5 lines) in backend/src/modules/ai/services/dr-onionstein-study-data.service.ts:233", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/services/dr-onionstein-study-data.service.ts:233"}, "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-aca14f0b282f13bc", "name": "Commented-code block (5 lines) in backend/src/modules/ai/services/dr-onionstein-orchestrator.service.ts:295", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/services/dr-onionstein-orchestrator.service.ts:295"}, "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-d10fac30c91c2ea9", "name": "Commented-code block (5 lines) in backend/src/modules/ai/services/research-question-assistant.service.ts:33", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/services/research-question-assistant.service.ts:33"}, "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-c0507d3c6c6da3d7", "name": "Commented-code block (5 lines) in backend/src/modules/ai/services/dr-onionstein-paper-recommendations.service.ts:95", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/services/dr-onionstein-paper-recommendations.service.ts:95"}, "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-834f0ecb60b7472d", "name": "Commented-code block (5 lines) in backend/src/modules/ai/services/suggestion-cache.service.ts:138", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/services/suggestion-cache.service.ts:138"}, "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-0260b58e3a6e5fbe", "name": "Commented-code block (6 lines) in backend/src/modules/ai/services/dr-onionstein-memory.service.ts:127", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/ai/services/dr-onionstein-memory.service.ts:127"}, "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-bde77e5df22f6e21", "name": "Commented-code block (6 lines) in backend/src/modules/ai/services/query-expansion.service.ts:55", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/ai/services/query-expansion.service.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-975abd6c0276d8a9", "name": "Commented-code block (5 lines) in backend/src/modules/ai/services/__tests__/gap-citation-validator.service.spec.ts:136", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/services/__tests__/gap-citation-validator.service.spec.ts:136"}, "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-6d45ae5d49bc5b0e", "name": "Commented-code block (5 lines) in backend/src/modules/ai/services/__tests__/dr-onionstein-tool-registry.service.spec.ts:", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/services/__tests__/dr-onionstein-tool-registry.service.spec.ts:998"}, "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-79db514494110bb2", "name": "Commented-code block (6 lines) in backend/src/modules/ai/services/__tests__/research-question-suggestion.prisma.spec.ts:", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/ai/services/__tests__/research-question-suggestion.prisma.spec.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-b443ccdca5147d83", "name": "Commented-code block (5 lines) in backend/src/modules/ai/services/__tests__/dr-onionstein-context-processor.service.spec", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/services/__tests__/dr-onionstein-context-processor.service.spec.ts:563"}, "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-d67689b76089953a", "name": "Commented-code block (7 lines) in backend/src/modules/ai/services/providers/base-ai-provider.ts:250", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/ai/services/providers/base-ai-provider.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-2cf0a17e7ed7bb4e", "name": "Commented-code block (8 lines) in backend/src/modules/ai/services/providers/groq.provider.ts:141", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/ai/services/providers/groq.provider.ts:141"}, "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-f9f340f9c5fe08b3", "name": "Commented-code block (5 lines) in backend/src/modules/auth/auth.module.ts:25", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/auth/auth.module.ts:25"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2cad177b580a0657", "name": "Commented-code block (10 lines) in backend/src/modules/auth/__tests__/jwt-rotation-wiring.spec.ts:69", "shortDescription": {"text": "Commented-code block (10 lines) in backend/src/modules/auth/__tests__/jwt-rotation-wiring.spec.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-c297cea493c5a74d", "name": "Commented-code block (5 lines) in backend/src/modules/auth/__tests__/jwt-rotation-di.integration.spec.ts:82", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/auth/__tests__/jwt-rotation-di.integration.spec.ts:82"}, "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-4255827e3a83dc93", "name": "Commented-code block (7 lines) in backend/src/modules/auth/guards/jwt-auth.guard.ts:15", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/auth/guards/jwt-auth.guard.ts:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-becda0fe8ca55976", "name": "Commented-code block (5 lines) in backend/src/modules/auth/controllers/auth.controller.ts:562", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/auth/controllers/auth.controller.ts:562"}, "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-b452a720c8a55286", "name": "Commented-code block (5 lines) in backend/src/modules/auth/services/audit.service.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/auth/services/audit.service.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-132d621300ccd1ba", "name": "Commented-code block (16 lines) in backend/src/modules/auth/services/auth.service.ts:977", "shortDescription": {"text": "Commented-code block (16 lines) in backend/src/modules/auth/services/auth.service.ts:977"}, "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-52d225821ee0cf15", "name": "Commented-code block (12 lines) in backend/src/modules/auth/services/jwt-key-rotation.service.spec.ts:87", "shortDescription": {"text": "Commented-code block (12 lines) in backend/src/modules/auth/services/jwt-key-rotation.service.spec.ts:87"}, "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-6b1e3ce3ca375bda", "name": "Commented-code block (6 lines) in backend/src/modules/auth/services/user-deletion.service.spec.ts:50", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/auth/services/user-deletion.service.spec.ts:50"}, "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-2bcd48eef2abce29", "name": "Commented-code block (5 lines) in backend/src/modules/auth/services/user-deletion.service.ts:59", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/auth/services/user-deletion.service.ts:59"}, "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-40898eae0f10e629", "name": "Commented-code block (21 lines) in backend/src/modules/auth/services/audit-retention.service.ts:110", "shortDescription": {"text": "Commented-code block (21 lines) in backend/src/modules/auth/services/audit-retention.service.ts:110"}, "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-a38205bd4c8f24a5", "name": "Commented-code block (6 lines) in backend/src/modules/auth/services/jwt-key-rotation.service.ts:318", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/auth/services/jwt-key-rotation.service.ts:318"}, "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-6e8b3178f1c12fc5", "name": "Commented-code block (6 lines) in backend/src/modules/auth/strategies/jwt.strategy.ts:191", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/auth/strategies/jwt.strategy.ts:191"}, "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-4159edf4eff26338", "name": "Commented-code block (5 lines) in backend/src/modules/health/health.controller.ts:69", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/health/health.controller.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-7425851efa397944", "name": "Commented-code block (7 lines) in backend/src/modules/health/health.controller.spec.ts:74", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/health/health.controller.spec.ts:74"}, "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-e09ee4c7608cad12", "name": "Commented-code block (8 lines) in backend/src/modules/repository/services/research-repository.service.ts:730", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/repository/services/research-repository.service.ts:730"}, "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-a18b98c6105818b5", "name": "Commented-code block (6 lines) in backend/src/modules/study/study.service.spec.ts:146", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/study/study.service.spec.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-9af96b8d829def35", "name": "Commented-code block (9 lines) in backend/src/modules/study/study.service.ts:76", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/modules/study/study.service.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-4b6498c2845c8548", "name": "Commented-code block (7 lines) in backend/src/modules/study/study.controller.ts:45", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/study/study.controller.ts:45"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1a515a890538b028", "name": "Commented-code block (14 lines) in backend/src/modules/literature/literature.gateway.ts:14", "shortDescription": {"text": "Commented-code block (14 lines) in backend/src/modules/literature/literature.gateway.ts:14"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e3c93c48f76cea7c", "name": "Commented-code block (5 lines) in backend/src/modules/literature/literature.module.ts:170", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/literature.module.ts:170"}, "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-3457cbd2195ffbe7", "name": "Commented-code block (7 lines) in backend/src/modules/literature/literature.service.ts:450", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/literature.service.ts:450"}, "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-c8c1ea9ed4929dd4", "name": "Commented-code block (7 lines) in backend/src/modules/literature/__tests__/literature.gateway.spec.ts:203", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/__tests__/literature.gateway.spec.ts:203"}, "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-39ff9976ff241237", "name": "Commented-code block (5 lines) in backend/src/modules/literature/__tests__/knowledge-graph-contract.spec.ts:169", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/__tests__/knowledge-graph-contract.spec.ts:169"}, "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-7d4d377102ce1d91", "name": "Commented-code block (7 lines) in backend/src/modules/literature/__tests__/purpose-flow-consistency.spec.ts:220", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/__tests__/purpose-flow-consistency.spec.ts:220"}, "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-2385e8ba191ab301", "name": "Commented-code block (15 lines) in backend/src/modules/literature/__tests__/literature-module-di.spec.ts:29", "shortDescription": {"text": "Commented-code block (15 lines) in backend/src/modules/literature/__tests__/literature-module-di.spec.ts:29"}, "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-3a9b085a112568f2", "name": "Commented-code block (6 lines) in backend/src/modules/literature/__tests__/academic-sources-integration.spec.ts:211", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/__tests__/academic-sources-integration.spec.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-852ffb1a3712d603", "name": "Commented-code block (5 lines) in backend/src/modules/literature/__tests__/ws-rest-parity.spec.ts:398", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/__tests__/ws-rest-parity.spec.ts:398"}, "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-04173241faf5498f", "name": "Commented-code block (8 lines) in backend/src/modules/literature/__tests__/security/wave12-p1-security-edge-cases.spec.t", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/__tests__/security/wave12-p1-security-edge-cases.spec.ts:183"}, "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-3353cad37d69cd19", "name": "Legacy-named symbol `aacods_plus_v1` in backend/src/modules/literature/__tests__/integration/e2e-pipeline.integration.sp", "shortDescription": {"text": "Legacy-named symbol `aacods_plus_v1` in backend/src/modules/literature/__tests__/integration/e2e-pipeline.integration.spec.ts:980"}, "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-7369f00fd438242a", "name": "Commented-code block (6 lines) in backend/src/modules/literature/__tests__/integration/e2e-pipeline.integration.spec.ts:", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/__tests__/integration/e2e-pipeline.integration.spec.ts:1101"}, "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-cb5960e13b86bd2b", "name": "Commented-code block (6 lines) in backend/src/modules/literature/__tests__/integration/lit-review-to-gaps.integration.sp", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/__tests__/integration/lit-review-to-gaps.integration.spec.ts:1142"}, "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-87467ba581532123", "name": "Commented-code block (9 lines) in backend/src/modules/literature/__tests__/integration/adversarial-pipeline.integration.", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/__tests__/integration/adversarial-pipeline.integration.spec.ts:1226"}, "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-eb8a90882c6484f1", "name": "Commented-code block (6 lines) in backend/src/modules/literature/__tests__/integration/km-observability.integration.spec", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/__tests__/integration/km-observability.integration.spec.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-258ef8443f1e844d", "name": "Commented-code block (6 lines) in backend/src/modules/literature/__tests__/integration/km-chaos.integration.spec.ts:61", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/__tests__/integration/km-chaos.integration.spec.ts:61"}, "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-952648b251422ca7", "name": "Commented-code block (8 lines) in backend/src/modules/literature/__tests__/integration/fulltext-processing-gaps.integrat", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/__tests__/integration/fulltext-processing-gaps.integration.spec.ts:583"}, "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-1fe7ae03e7fb1685", "name": "Commented-code block (5 lines) in backend/src/modules/literature/types/unified-theme-extraction.types.ts:721", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/types/unified-theme-extraction.types.ts:721"}, "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-d938e42cb79f0598", "name": "Commented-code block (8 lines) in backend/src/modules/literature/types/gap-validation.types.ts:18", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/types/gap-validation.types.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-6c3cf863ae21dc80", "name": "Legacy-named symbol `aacods_plus_v1` in backend/src/modules/literature/types/unified-evidence.types.ts:106", "shortDescription": {"text": "Legacy-named symbol `aacods_plus_v1` in backend/src/modules/literature/types/unified-evidence.types.ts:106"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a41497c37372d91", "name": "Commented-code block (5 lines) in backend/src/modules/literature/types/theme-extraction.types.ts:156", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/types/theme-extraction.types.ts:156"}, "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-01604d136209b2c0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/types/purpose-aware.types.ts:149", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/types/purpose-aware.types.ts:149"}, "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-453ed172f3adb61b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/benchmarks/cache-performance.benchmark.ts:1", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/benchmarks/cache-performance.benchmark.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-fa9df5c4494a9387", "name": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/evaluation/import-synergy-gold-set.ts:62", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/evaluation/import-synergy-gold-set.ts:62"}, "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-67a7fa4bac7c137c", "name": "Commented-code block (8 lines) in backend/src/modules/literature/evaluation/run-retrieval-eval.ts:38", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/evaluation/run-retrieval-eval.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-0440b7409fb24053", "name": "Commented-code block (5 lines) in backend/src/modules/literature/constants/source-allocation.constants.ts:212", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/constants/source-allocation.constants.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-cde93d3b6d9ad150", "name": "Commented-code block (5 lines) in backend/src/modules/literature/constants/embedding-model.constants.ts:81", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/constants/embedding-model.constants.ts:81"}, "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-b06bd14a666f75e8", "name": "Commented-code block (5 lines) in backend/src/modules/literature/constants/__tests__/embedding-model.constants.spec.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/constants/__tests__/embedding-model.constants.spec.ts:102"}, "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-2cedb5b4b632eceb", "name": "Commented-code block (6 lines) in backend/src/modules/literature/dto/literature.dto.ts:342", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/dto/literature.dto.ts:342"}, "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-4ff2fb48befba9c2", "name": "Commented-code block (11 lines) in backend/src/modules/literature/dto/enrich-gaps.dto.ts:46", "shortDescription": {"text": "Commented-code block (11 lines) in backend/src/modules/literature/dto/enrich-gaps.dto.ts:46"}, "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-b35fb0e4bb89411c", "name": "Commented-code block (6 lines) in backend/src/modules/literature/dto/import.dto.ts:64", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/dto/import.dto.ts:64"}, "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-a87cf2bdb5ac2c82", "name": "Commented-code block (6 lines) in backend/src/modules/literature/dto/common-literature.dto.ts:613", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/dto/common-literature.dto.ts:613"}, "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-7c268498bee31a5e", "name": "Commented-code block (19 lines) in backend/src/modules/literature/dto/gap-brief.dto.ts:61", "shortDescription": {"text": "Commented-code block (19 lines) in backend/src/modules/literature/dto/gap-brief.dto.ts:61"}, "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-44c627837959e476", "name": "Commented-code block (8 lines) in backend/src/modules/literature/dto/persist-transformed-gaps.dto.ts:24", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/dto/persist-transformed-gaps.dto.ts:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d13dd6f161bb64f9", "name": "Commented-code block (9 lines) in backend/src/modules/literature/dto/validate-gaps.dto.ts:40", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/dto/validate-gaps.dto.ts:40"}, "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-0604d1217c76c5b3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/dto/search-stream.dto.ts:47", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/dto/search-stream.dto.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-f33b221c5079c7b1", "name": "Commented-code block (9 lines) in backend/src/modules/literature/utils/relevance-floor.util.ts:96", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/utils/relevance-floor.util.ts:96"}, "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-4b2537847dbf45b7", "name": "Commented-code block (5 lines) in backend/src/modules/literature/utils/text-normalization.util.ts:114", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/utils/text-normalization.util.ts:114"}, "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-8c1684eff16d8b80", "name": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/utils/paper-identity.util.ts:40", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/utils/paper-identity.util.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-b3bfd91528626348", "name": "Commented-code block (6 lines) in backend/src/modules/literature/utils/degradation-warnings.util.ts:79", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/utils/degradation-warnings.util.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-f75558ba8ee327b7", "name": "Commented-code block (10 lines) in backend/src/modules/literature/utils/public-attention.util.ts:158", "shortDescription": {"text": "Commented-code block (10 lines) in backend/src/modules/literature/utils/public-attention.util.ts:158"}, "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-61fec766a3499ccf", "name": "Commented-code block (5 lines) in backend/src/modules/literature/utils/retraction-watch-csv.util.ts:396", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/utils/retraction-watch-csv.util.ts:396"}, "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-bfd3c2963fc775b2", "name": "Commented-code block (7 lines) in backend/src/modules/literature/utils/reproducibility-artifact.util.ts:98", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/utils/reproducibility-artifact.util.ts:98"}, "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-39f9233556ad37b3", "name": "Commented-code block (5 lines) in backend/src/modules/literature/utils/paper-quality.util.ts:64", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/utils/paper-quality.util.ts:64"}, "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-50c3efff86a43435", "name": "Commented-code block (10 lines) in backend/src/modules/literature/utils/build-error-classifier.ts:153", "shortDescription": {"text": "Commented-code block (10 lines) in backend/src/modules/literature/utils/build-error-classifier.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-5319901427956a20", "name": "Commented-code block (9 lines) in backend/src/modules/literature/utils/truncation-summary.util.ts:144", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/utils/truncation-summary.util.ts:144"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-def9a253946e7791", "name": "Commented-code block (7 lines) in backend/src/modules/literature/utils/paper-document-type.util.ts:190", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/utils/paper-document-type.util.ts:190"}, "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-0d2f8fc6145df2eb", "name": "Commented-code block (5 lines) in backend/src/modules/literature/utils/paper-merge.util.ts:182", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/utils/paper-merge.util.ts:182"}, "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-77742ea08a04fded", "name": "Commented-code block (6 lines) in backend/src/modules/literature/utils/disposition-ledger.util.ts:272", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/utils/disposition-ledger.util.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-51056f8f904a69b1", "name": "Commented-code block (8 lines) in backend/src/modules/literature/utils/relevance-scoring.util.ts:52", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/utils/relevance-scoring.util.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-89bcbd20a1aab5a0", "name": "Commented-code block (5 lines) in backend/src/modules/literature/utils/__tests__/result-cache.util.spec.ts:76", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/utils/__tests__/result-cache.util.spec.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-4656b596508b8967", "name": "Commented-code block (6 lines) in backend/src/modules/literature/utils/__tests__/reproducibility-artifact.util.spec.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/utils/__tests__/reproducibility-artifact.util.spec.ts:379"}, "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-0c14636c3b23451b", "name": "Commented-code block (9 lines) in backend/src/modules/literature/utils/__tests__/vector-math.utils.spec.ts:71", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/utils/__tests__/vector-math.utils.spec.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-ab128e2955a2209e", "name": "Commented-code block (5 lines) in backend/src/modules/literature/utils/__tests__/fulltext-availability.util.spec.ts:510", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/utils/__tests__/fulltext-availability.util.spec.ts:510"}, "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-53a12883c0777b34", "name": "Commented-code block (5 lines) in backend/src/modules/literature/utils/__tests__/doi-normalization-sql-parity.spec.ts:11", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/utils/__tests__/doi-normalization-sql-parity.spec.ts:117"}, "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-2952226cfefc6734", "name": "Commented-code block (7 lines) in backend/src/modules/literature/utils/__tests__/build-error-classifier.spec.ts:237", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/utils/__tests__/build-error-classifier.spec.ts:237"}, "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-2185d40e0051e1ee", "name": "Commented-code block (5 lines) in backend/src/modules/literature/utils/__tests__/text-normalization.util.spec.ts:45", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/utils/__tests__/text-normalization.util.spec.ts:45"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8cc55ea7e6731d44", "name": "Commented-code block (5 lines) in backend/src/modules/literature/observability/search-quality-metrics.service.ts:96", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/observability/search-quality-metrics.service.ts:96"}, "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-d0c5e3d0f9bc839a", "name": "Commented-code block (5 lines) in backend/src/modules/literature/observability/search-source-metrics.service.ts:79", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/observability/search-source-metrics.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-c6b7f1b629a52bf3", "name": "Commented-code block (7 lines) in backend/src/modules/literature/observability/fe-metrics.controller.ts:72", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/observability/fe-metrics.controller.ts:72"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a20a6790eec2b1b1", "name": "Commented-code block (10 lines) in backend/src/modules/literature/observability/km-metrics.service.ts:161", "shortDescription": {"text": "Commented-code block (10 lines) in backend/src/modules/literature/observability/km-metrics.service.ts:161"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3999937389304ce3", "name": "Commented-code block (6 lines) in backend/src/modules/literature/workers/embedding-microservice.ts:101", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/workers/embedding-microservice.ts:101"}, "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-7e3272c3d8fe2eac", "name": "Commented-code block (7 lines) in backend/src/modules/literature/workers/cross-encoder.worker.ts:27", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/workers/cross-encoder.worker.ts:27"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4dd89023f35435f7", "name": "Commented-code block (7 lines) in backend/src/modules/literature/modules/fulltext.module.ts:22", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/modules/fulltext.module.ts:22"}, "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-9fab50001a2f3c94", "name": "Commented-code block (10 lines) in backend/src/modules/literature/controllers/gap-structural.controller.ts:127", "shortDescription": {"text": "Commented-code block (10 lines) in backend/src/modules/literature/controllers/gap-structural.controller.ts:127"}, "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-2a89c21f6f78e870", "name": "Commented-code block (10 lines) in backend/src/modules/literature/controllers/gap-watchlist.controller.ts:126", "shortDescription": {"text": "Commented-code block (10 lines) in backend/src/modules/literature/controllers/gap-watchlist.controller.ts:126"}, "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-691ac89c795c303e", "name": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/gap-analyze-writes.controller.ts:94", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/gap-analyze-writes.controller.ts:94"}, "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-d5c51614ffc254f1", "name": "Commented-code block (9 lines) in backend/src/modules/literature/controllers/bibliometric-report.controller.ts:372", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/controllers/bibliometric-report.controller.ts:372"}, "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-b3323945c63c657d", "name": "Commented-code block (7 lines) in backend/src/modules/literature/controllers/gap-predictive.controller.ts:70", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/controllers/gap-predictive.controller.ts:70"}, "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-49a47297ff70fed4", "name": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/knowledge-graph-layout.controller.ts:60", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/knowledge-graph-layout.controller.ts:60"}, "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-bebb72185ff8cea6", "name": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/paper-health.controller.ts:62", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/paper-health.controller.ts:62"}, "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-d1d352ed21191823", "name": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/paper-library.controller.ts:46", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/paper-library.controller.ts:46"}, "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-9ced909de0b329a5", "name": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/search-artifact.controller.ts:295", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/search-artifact.controller.ts:295"}, "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-ea1248f23c6aad73", "name": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/km-share.controller.ts:242", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/km-share.controller.ts:242"}, "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-407263f8a45f1947", "name": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/gap-diagnostics.controller.ts:190", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/gap-diagnostics.controller.ts:190"}, "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-fa425b012dd67eb8", "name": "Commented-code block (10 lines) in backend/src/modules/literature/controllers/admin.controller.ts:159", "shortDescription": {"text": "Commented-code block (10 lines) in backend/src/modules/literature/controllers/admin.controller.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-08ac4925b675ee6c", "name": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/unified-evidence.controller.ts:111", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/unified-evidence.controller.ts:111"}, "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-c50c09613274bef8", "name": "Commented-code block (7 lines) in backend/src/modules/literature/controllers/pipeline-session.controller.ts:38", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/controllers/pipeline-session.controller.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-2a36654a6e7260fa", "name": "Commented-code block (10 lines) in backend/src/modules/literature/controllers/gap-decisions.controller.ts:65", "shortDescription": {"text": "Commented-code block (10 lines) in backend/src/modules/literature/controllers/gap-decisions.controller.ts:65"}, "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-e98373369e5a53f6", "name": "Legacy-named symbol `isLegacy` in backend/src/modules/literature/controllers/corpus-snapshot.controller.ts:1233", "shortDescription": {"text": "Legacy-named symbol `isLegacy` in backend/src/modules/literature/controllers/corpus-snapshot.controller.ts:1233"}, "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-bf70ec3ff24d2a82", "name": "Commented-code block (8 lines) in backend/src/modules/literature/controllers/corpus-snapshot.controller.ts:90", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/controllers/corpus-snapshot.controller.ts:90"}, "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-15433d6b49d350b8", "name": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/gap-study-reads.controller.ts:74", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/gap-study-reads.controller.ts:74"}, "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-43caac364bd62817", "name": "Commented-code block (8 lines) in backend/src/modules/literature/controllers/knowledge-graph.controller.ts:62", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/controllers/knowledge-graph.controller.ts:62"}, "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-a59779d61f241b61", "name": "Commented-code block (11 lines) in backend/src/modules/literature/controllers/gap-review.controller.ts:83", "shortDescription": {"text": "Commented-code block (11 lines) in backend/src/modules/literature/controllers/gap-review.controller.ts:83"}, "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-05e37342f368b58f", "name": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/statement-generation.controller.ts:322", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/statement-generation.controller.ts:322"}, "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-5d288c389a55bb57", "name": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/theme-extraction-advanced.controller.ts:198", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/theme-extraction-advanced.controller.ts:1981"}, "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-91ea05acc47ac4ac", "name": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/gap-iterative-loop.controller.ts:371", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/gap-iterative-loop.controller.ts:371"}, "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-ffb9924d39e04d92", "name": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/citation.controller.ts:112", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/citation.controller.ts:112"}, "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-64ea78279f3b6297", "name": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/collaboration.controller.ts:64", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/collaboration.controller.ts:64"}, "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-a7af412aab99a06f", "name": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/fulltext.controller.ts:274", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/fulltext.controller.ts:274"}, "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-1af5966bcafae0a2", "name": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/gap-export.controller.ts:99", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/gap-export.controller.ts:99"}, "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-1ee1aa26852e5d7a", "name": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/gap-annotations.controller.ts:97", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/gap-annotations.controller.ts:97"}, "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-820399b118df5745", "name": "Commented-code block (8 lines) in backend/src/modules/literature/controllers/prisma.controller.ts:69", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/controllers/prisma.controller.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-27dde0e450f2e7ea", "name": "Commented-code block (7 lines) in backend/src/modules/literature/controllers/__tests__/gap-study-reads.controller.spec.t", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/controllers/__tests__/gap-study-reads.controller.spec.ts:279"}, "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-0bc178f32eddbbe6", "name": "Commented-code block (7 lines) in backend/src/modules/literature/controllers/__tests__/gap-watchlist.controller.spec.ts:", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/controllers/__tests__/gap-watchlist.controller.spec.ts:89"}, "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-ded46fe9f9659d94", "name": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/__tests__/theme-hierarchy.spec.ts:101", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/__tests__/theme-hierarchy.spec.ts:101"}, "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-050519430fed83ae", "name": "Commented-code block (7 lines) in backend/src/modules/literature/controllers/__tests__/gap-discovery-helpers.controller.", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/controllers/__tests__/gap-discovery-helpers.controller.spec.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-6a43c7d4ed9c7b01", "name": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/controllers/__tests__/gap-discovery-helpers", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/controllers/__tests__/gap-discovery-helpers.controller.spec.ts:176"}, "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-8911a165d90ac05d", "name": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/__tests__/knowledge-graph.controller.spec.t", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/__tests__/knowledge-graph.controller.spec.ts:17"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-596b900e996b13e5", "name": "Legacy-named symbol `isLegacy` in backend/src/modules/literature/controllers/__tests__/corpus-snapshot.controller.spec.t", "shortDescription": {"text": "Legacy-named symbol `isLegacy` in backend/src/modules/literature/controllers/__tests__/corpus-snapshot.controller.spec.ts:157"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3bb0b4c88af26dcf", "name": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/__tests__/corpus-snapshot.controller.spec.t", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/__tests__/corpus-snapshot.controller.spec.ts:25"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-953632bd20044277", "name": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/__tests__/gap-export.controller.spec.ts:115", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/__tests__/gap-export.controller.spec.ts:115"}, "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-e50d10f2fb5a669e", "name": "Commented-code block (8 lines) in backend/src/modules/literature/controllers/__tests__/gap-structural.controller.spec.ts", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/controllers/__tests__/gap-structural.controller.spec.ts:341"}, "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-16e0d3730cbe65c8", "name": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/__tests__/gap-decisions.controller.spec.ts:", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/__tests__/gap-decisions.controller.spec.ts:51"}, "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-76839a8546aa04b7", "name": "Commented-code block (8 lines) in backend/src/modules/literature/controllers/__tests__/gap-analyze-writes.controller.spe", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/controllers/__tests__/gap-analyze-writes.controller.spec.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-c95dd7f0ea5b610c", "name": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/__tests__/bibliometric-report.controller.sp", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/__tests__/bibliometric-report.controller.spec.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-71609cdb6e5ece52", "name": "Commented-code block (9 lines) in backend/src/modules/literature/eval/offline/eval-regression.spec.ts:93", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/eval/offline/eval-regression.spec.ts:93"}, "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-2e14b430b659a5f6", "name": "Commented-code block (5 lines) in backend/src/modules/literature/eval/offline/offline-ranker.harness.ts:112", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/eval/offline/offline-ranker.harness.ts:112"}, "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-3e5929aeb4b8e2a1", "name": "Commented-code block (9 lines) in backend/src/modules/literature/eval/metrics/ir-metrics.util.spec.ts:28", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/eval/metrics/ir-metrics.util.spec.ts:28"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dcab6b81cfb71afa", "name": "Commented-code block (6 lines) in backend/src/modules/literature/gateways/theme-extraction.gateway.ts:591", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/gateways/theme-extraction.gateway.ts:591"}, "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-5d4beaafffbbdc1b", "name": "Commented-code block (6 lines) in backend/src/modules/literature/gateways/screening-workflow.gateway.ts:25", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/gateways/screening-workflow.gateway.ts:25"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2652a1437db2270f", "name": "Commented-code block (16 lines) in backend/src/modules/literature/gateways/knowledge-graph-layout.gateway.ts:210", "shortDescription": {"text": "Commented-code block (16 lines) in backend/src/modules/literature/gateways/knowledge-graph-layout.gateway.ts:210"}, "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-b3b6b650a804cac0", "name": "Commented-code block (6 lines) in backend/src/modules/literature/gateways/gap-refinement.gateway.ts:184", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/gateways/gap-refinement.gateway.ts:184"}, "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-98c13d283aa11ee5", "name": "Commented-code block (6 lines) in backend/src/modules/literature/gateways/__tests__/gap-refinement.gateway.resync.spec.t", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/gateways/__tests__/gap-refinement.gateway.resync.spec.ts:434"}, "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-21b23d32ee4a2db4", "name": "Commented-code block (6 lines) in backend/src/modules/literature/gateways/__tests__/knowledge-graph-layout.gateway.spec.", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/gateways/__tests__/knowledge-graph-layout.gateway.spec.ts:160"}, "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-292a5319dac7b598", "name": "Commented-code block (8 lines) in backend/src/modules/literature/services/screening-workflow.service.ts:1194", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/services/screening-workflow.service.ts:1194"}, "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-9e57c9f9f094bc3a", "name": "Commented-code block (11 lines) in backend/src/modules/literature/services/search-result-cache.service.ts:148", "shortDescription": {"text": "Commented-code block (11 lines) in backend/src/modules/literature/services/search-result-cache.service.ts:148"}, "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-f139d60bb15452b5", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/host-rate-limiter.service.ts:228", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/host-rate-limiter.service.ts:228"}, "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-722923e8dc0b711d", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/gap-narrative.service.ts:20", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/gap-narrative.service.ts:20"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-07ebf1fd94bbf6a8", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/osf.service.ts:79", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/osf.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-df63a170989850e6", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/citation-enrichment-statement.ts:252", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/citation-enrichment-statement.ts:252"}, "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-f7f3ecef6c0d6f43", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/http-client-config.service.ts:113", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/http-client-config.service.ts:113"}, "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-09514837c2911f44", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/unified-theme-extraction.service.ts:157", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/unified-theme-extraction.service.ts:157"}, "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-bdefeab227fe68c5", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/source-capability.service.ts:377", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/source-capability.service.ts:377"}, "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-af7e2e8fbb615c92", "name": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/services/source-capability.service.ts:94", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/services/source-capability.service.ts:94"}, "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-928465e3ece8077a", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/survey-construction-pipeline.service.ts:570", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/survey-construction-pipeline.service.ts:570"}, "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-c2fac6940f69b8ad", "name": "Commented-code block (8 lines) in backend/src/modules/literature/services/retraction-watch-sync.service.ts:234", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/services/retraction-watch-sync.service.ts:234"}, "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-9a63366a07bfea1a", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/openalex.service.ts:197", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/openalex.service.ts:197"}, "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-85db86f1b4877913", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/gap-cache-key.util.ts:49", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/gap-cache-key.util.ts:49"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-73232b316b05e74e", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/km-corpus-prep.service.ts:141", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/km-corpus-prep.service.ts:141"}, "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-04a6537248115821", "name": "Legacy-named symbol `yearsOld` in backend/src/modules/literature/services/universal-citation-enrichment.service.ts:1579", "shortDescription": {"text": "Legacy-named symbol `yearsOld` in backend/src/modules/literature/services/universal-citation-enrichment.service.ts:1579"}, "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-d8d129491a87c682", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/universal-citation-enrichment.service.ts:192", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/universal-citation-enrichment.service.ts:192"}, "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-15ac2bff85565d14", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/gap-persistence.service.ts:270", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/gap-persistence.service.ts:270"}, "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-85b9237c2d04e66e", "name": "Legacy-named symbol `extractThemesLegacy` in backend/src/modules/literature/services/multimedia-analysis.service.ts:77", "shortDescription": {"text": "Legacy-named symbol `extractThemesLegacy` in backend/src/modules/literature/services/multimedia-analysis.service.ts:77"}, "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-f846c97548805870", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/enhanced-theme-integration.service.ts:636", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/enhanced-theme-integration.service.ts:636"}, "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-d83a41e70ad014c6", "name": "Commented-code block (11 lines) in backend/src/modules/literature/services/paper-collection.service.ts:257", "shortDescription": {"text": "Commented-code block (11 lines) in backend/src/modules/literature/services/paper-collection.service.ts:257"}, "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-d2c6479971fac99a", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/paper-quality-scoring.service.ts:212", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/paper-quality-scoring.service.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-d8725fe4b61b0275", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/neural-relevance.service.ts:315", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/neural-relevance.service.ts:315"}, "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-b82da1fee30b5fc7", "name": "Commented-code block (11 lines) in backend/src/modules/literature/services/predictive-gap.service.ts:581", "shortDescription": {"text": "Commented-code block (11 lines) in backend/src/modules/literature/services/predictive-gap.service.ts:581"}, "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-80cf29304708aefd", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/semantic-query-expansion.service.ts:383", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/semantic-query-expansion.service.ts:383"}, "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-2e3fe6af6e5f6e65", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/cross-encoder-reranker.service.ts:133", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/cross-encoder-reranker.service.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-9b27100244595ef6", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/pmc.service.ts:206", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/pmc.service.ts:206"}, "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-baaa5d217ef708d5", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/confidence-calibration.service.ts:114", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/confidence-calibration.service.ts:114"}, "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-fd77ab3df6188e0d", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/api-quota-monitor.service.ts:500", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/api-quota-monitor.service.ts:500"}, "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-30cfee6c1f67eebc", "name": "Commented-code block (9 lines) in backend/src/modules/literature/services/openaire.service.ts:106", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/services/openaire.service.ts:106"}, "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-8b79dd1dc1e63d3e", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-provenance.service.ts:81", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-provenance.service.ts:81"}, "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-7e0a0642cbfdb058", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/paper-collection.service.spec.ts:343", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/paper-collection.service.spec.ts:343"}, "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-10d40c4534477084", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/retraction-monitor.service.ts:72", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/retraction-monitor.service.ts:72"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f6eea01e51e84e76", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/openalex-enrichment.service.ts:97", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/openalex-enrichment.service.ts:97"}, "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-a94475087ffce976", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/grobid-extraction.service.ts:38", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/grobid-extraction.service.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-1fd03fa80478797d", "name": "Commented-code block (8 lines) in backend/src/modules/literature/services/pdf-parse-pool.service.ts:255", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/services/pdf-parse-pool.service.ts:255"}, "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-9cfaa27a86fd16a3", "name": "Commented-code block (8 lines) in backend/src/modules/literature/services/theme-to-statement.service.ts:455", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/services/theme-to-statement.service.ts:455"}, "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-8d4e220005278b70", "name": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/services/source-content-fetcher.service.ts:", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/services/source-content-fetcher.service.ts:80"}, "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-474111ab1ff26976", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/sentence-provenance.service.ts:182", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/sentence-provenance.service.ts:182"}, "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-725e71ad2c5b5030", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/evidence-table.service.ts:231", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/evidence-table.service.ts:231"}, "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-421df01cfe3b17ff", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/source-performance-tracking.service.ts:202", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/source-performance-tracking.service.ts:202"}, "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-ab0c7b5d2c80092d", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/source-credential-map.ts:86", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/source-credential-map.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-265e80bde2bdda35", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/scopus.service.ts:238", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/scopus.service.ts:238"}, "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-bd03c780db434e2d", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/reinforcement-threshold.service.ts:417", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/reinforcement-threshold.service.ts:417"}, "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-0e77a403e18daf4f", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-database.service.ts:31", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-database.service.ts:31"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5615692c6f9fb36e", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/citation-export.service.ts:135", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/citation-export.service.ts:135"}, "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-cc199b945d04915f", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/paper-database.service.ts:41", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/paper-database.service.ts:41"}, "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-d646cf2eb2c00176", "name": "Legacy-named symbol `aacods_plus_v1` in backend/src/modules/literature/services/evidence-quality-scorer.service.ts:167", "shortDescription": {"text": "Legacy-named symbol `aacods_plus_v1` in backend/src/modules/literature/services/evidence-quality-scorer.service.ts:167"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2be4b0a7c883b328", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-to-statement.service.spec.ts:615", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-to-statement.service.spec.ts:615"}, "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-d944ba852c0c526a", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/gap-methods-generator.service.ts:282", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/gap-methods-generator.service.ts:282"}, "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-2c51c636fce68462", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/pubmed.service.ts:148", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/pubmed.service.ts:148"}, "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-3f9d5fe9bdee2158", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/bayesian-gap-scoring.service.ts:292", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/bayesian-gap-scoring.service.ts:292"}, "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-5844209068d08c20", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/crossref.service.ts:180", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/crossref.service.ts:180"}, "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-df77f3c46eeea93d", "name": "Legacy-named symbol `daysOld` in backend/src/modules/literature/services/literature-cache.service.ts:435", "shortDescription": {"text": "Legacy-named symbol `daysOld` in backend/src/modules/literature/services/literature-cache.service.ts:435"}, "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-4e2f020a93f5c1f1", "name": "Legacy-named symbol `idealOld` in backend/src/modules/literature/services/paper-collection-audit.service.ts:963", "shortDescription": {"text": "Legacy-named symbol `idealOld` in backend/src/modules/literature/services/paper-collection-audit.service.ts:963"}, "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-bc0da4002737c569", "name": "Commented-code block (14 lines) in backend/src/modules/literature/services/paper-collection-audit.service.ts:337", "shortDescription": {"text": "Commented-code block (14 lines) in backend/src/modules/literature/services/paper-collection-audit.service.ts:337"}, "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-4d05b694ecb270e6", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/unified-thematization.service.ts:881", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/unified-thematization.service.ts:881"}, "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-ca1d1e644bb396b8", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/query-adapter.service.ts:30", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/query-adapter.service.ts:30"}, "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-8e76a79fcb5b739e", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/knowledge-graph-layout.service.ts:238", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/knowledge-graph-layout.service.ts:238"}, "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-bee5fcae27db4224", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/study-access.service.ts:57", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/study-access.service.ts:57"}, "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-d83af5af7796ed44", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/early-stop.service.ts:100", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/early-stop.service.ts:100"}, "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-fa18461828977751", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/search-pipeline.service.ts:187", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/search-pipeline.service.ts:187"}, "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-d3edeec5dca6bd8c", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-extraction.service.ts:363", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-extraction.service.ts:363"}, "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-1dd16c36a4340eb1", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/gap-analyzer.service.ts:30", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/gap-analyzer.service.ts:30"}, "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-06732cdbc93a391d", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-saturation.service.ts:234", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-saturation.service.ts:234"}, "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-1c7f307a2f055848", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/citation-extraction.service.ts:444", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/citation-extraction.service.ts:444"}, "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-50070e845b84fa95", "name": "Commented-code block (11 lines) in backend/src/modules/literature/services/clinical-trials.service.ts:151", "shortDescription": {"text": "Commented-code block (11 lines) in backend/src/modules/literature/services/clinical-trials.service.ts:151"}, "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-7be41b5ec57877a8", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/alternative-sources.service.ts:125", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/alternative-sources.service.ts:125"}, "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-f5e309ae193ea7f8", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/self-healing-pipeline.service.ts:305", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/self-healing-pipeline.service.ts:305"}, "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-d41846ce9bf1e692", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/fulltext-search-index.service.ts:299", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/fulltext-search-index.service.ts:299"}, "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-4228869434ced0e0", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/adaptive-timeout.service.ts:377", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/adaptive-timeout.service.ts:377"}, "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-48e676c1cc578e1c", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/intelligent-fulltext-detection.service.ts:47", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/intelligent-fulltext-detection.service.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-e6b8bf53f4e27088", "name": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/services/intelligent-fulltext-detection.ser", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/services/intelligent-fulltext-detection.service.ts:156"}, "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-79e0b0105dad72da", "name": "Commented-code block (8 lines) in backend/src/modules/literature/services/active-learning.service.ts:89", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/services/active-learning.service.ts:89"}, "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-b27a8c45441985a5", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/source-router.service.ts:212", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/source-router.service.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-023219139b793ef5", "name": "Legacy-named symbol `123_v2` in backend/src/modules/literature/services/embedding-pair-cache.service.spec.ts:981", "shortDescription": {"text": "Legacy-named symbol `123_v2` in backend/src/modules/literature/services/embedding-pair-cache.service.spec.ts:981"}, "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-980aeed605ec7727", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/source-diagnostics.service.ts:211", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/source-diagnostics.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-556b5bc7e3921fae", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/search-stream.service.ts:213", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/search-stream.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-b274b401700e9e45", "name": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/services/search-stream.service.ts:1823", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/services/search-stream.service.ts:1823"}, "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-151e2057a0c672bc", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/meta-analysis.service.ts:462", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/meta-analysis.service.ts:462"}, "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-42b5e9ef379caf59", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/search-artifact.service.ts:313", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/search-artifact.service.ts:313"}, "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-17d7704865f9da89", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/controversy-coverage.service.ts:372", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/controversy-coverage.service.ts:372"}, "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-ed0832c848acc0cb", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/semantic-scholar.service.ts:299", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/semantic-scholar.service.ts:299"}, "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-c4cafdf68de6ee1c", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-deduplication.service.ts:982", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-deduplication.service.ts:982"}, "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-9c8e8b787b379506", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/theme-editing.service.ts:28", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/theme-editing.service.ts:28"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fe81926d233277b8", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/citation-enrichment-scheduler.service.ts:101", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/citation-enrichment-scheduler.service.ts:101"}, "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-11f43eac7b72e8ae", "name": "Commented-code block (8 lines) in backend/src/modules/literature/services/progressive-semantic.service.ts:478", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/services/progressive-semantic.service.ts:478"}, "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-62600f6032aa4e13", "name": "Commented-code block (10 lines) in backend/src/modules/literature/services/nature.service.ts:244", "shortDescription": {"text": "Commented-code block (10 lines) in backend/src/modules/literature/services/nature.service.ts:244"}, "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-31c228648f0851d1", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/html-full-text.service.ts:304", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/html-full-text.service.ts:304"}, "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-7b97a37768043bde", "name": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/services/html-full-text.service.ts:914", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/services/html-full-text.service.ts:914"}, "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-e033cf99574744eb", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/domain-context.service.ts:153", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/domain-context.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-01888697be2f16de", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/km-share.service.ts:79", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/km-share.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-202fa10416cfd14d", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/multi-format-import.service.ts:18", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/multi-format-import.service.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-c90651799fcff2c1", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/claim-extraction.service.ts:29", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/claim-extraction.service.ts:29"}, "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-af00238ff2a71d53", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/theme-extraction-progress.service.ts:515", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/theme-extraction-progress.service.ts:515"}, "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-08d3c4cda1d5016a", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/formula-validators.service.ts:649", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/formula-validators.service.ts:649"}, "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-f9799f72a29df7fe", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/living-review.service.ts:387", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/living-review.service.ts:387"}, "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-ec126792b39feac4", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/reproducibility-manifest.service.ts:191", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/reproducibility-manifest.service.ts:191"}, "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-b3bbe7e6cfef2ae9", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/knowledge-graph.service.ts:14", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/knowledge-graph.service.ts:14"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6c4bac86aabc650f", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/risk-of-bias.service.ts:473", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/risk-of-bias.service.ts:473"}, "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-ff3d4d1a1b8ad189", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/arxiv.service.ts:121", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/arxiv.service.ts:121"}, "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-2b92c8747ab18c72", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/structured-extraction.service.ts:399", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/structured-extraction.service.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-5fc8f2976ee952e3", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/pdf-queue.service.ts:105", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/pdf-queue.service.ts:105"}, "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-1ba348117d2fa2de", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/api-rate-limiter.service.ts:307", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/api-rate-limiter.service.ts:307"}, "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-068339be94167185", "name": "Commented-code block (10 lines) in backend/src/modules/literature/services/cross-encoder-pool.service.ts:220", "shortDescription": {"text": "Commented-code block (10 lines) in backend/src/modules/literature/services/cross-encoder-pool.service.ts:220"}, "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-8b48b648a31e12bc", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/literature-synthesis-pipeline.service.ts:434", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/literature-synthesis-pipeline.service.ts:434"}, "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-b7cff0dc5d718f0c", "name": "Commented-code block (11 lines) in backend/src/modules/literature/services/prisma-generator.service.ts:333", "shortDescription": {"text": "Commented-code block (11 lines) in backend/src/modules/literature/services/prisma-generator.service.ts:333"}, "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-5a8c1b608f8da211", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/core.service.ts:160", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/core.service.ts:160"}, "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-888185e0e0950cd2", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/local-embedding.service.ts:484", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/local-embedding.service.ts:484"}, "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-6cab294ccd9701eb", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/meta-analysis-orchestrator.service.ts:308", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/meta-analysis-orchestrator.service.ts:308"}, "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-ce850e4216c52800", "name": "Commented-code block (9 lines) in backend/src/modules/literature/services/rate-limiting.service.ts:420", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/services/rate-limiting.service.ts:420"}, "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-fdfcd4ac5ef2edbc", "name": "Legacy-named symbol `aacods_plus_v1` in backend/src/modules/literature/services/unified-evidence-repository.service.ts:1", "shortDescription": {"text": "Legacy-named symbol `aacods_plus_v1` in backend/src/modules/literature/services/unified-evidence-repository.service.ts:104"}, "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-5b0ff19f64a5c910", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/eric.service.ts:462", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/eric.service.ts:462"}, "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-899a57a97370a817", "name": "Legacy-named symbol `isLegacy` in backend/src/modules/literature/services/corpus-snapshot.service.ts:787", "shortDescription": {"text": "Legacy-named symbol `isLegacy` in backend/src/modules/literature/services/corpus-snapshot.service.ts:787"}, "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-0cffed2b6ca2740b", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/corpus-snapshot.service.ts:120", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/corpus-snapshot.service.ts:120"}, "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-73b19cf397d801ff", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/gap-review.service.ts:24", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/gap-review.service.ts:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-31b6c0623f9238f1", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/core.service.spec.ts:488", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/core.service.spec.ts:488"}, "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-86017a894cf4716c", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/local-code-extraction.service.ts:584", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/local-code-extraction.service.ts:584"}, "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-416a025e67cca951", "name": "Legacy-named symbol `rest_v1` in backend/src/modules/literature/services/wikimedia-pageviews.service.ts:234", "shortDescription": {"text": "Legacy-named symbol `rest_v1` in backend/src/modules/literature/services/wikimedia-pageviews.service.ts:234"}, "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-14cb9893984722de", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/predictive-gap.service.spec.ts:10", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/predictive-gap.service.spec.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-33950a902e9d7674", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/citation-stance-classifier.service.ts:120", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/citation-stance-classifier.service.ts:120"}, "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-ca39d5dc5454d2c5", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/structural-gap-resonance.service.ts:217", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/structural-gap-resonance.service.ts:217"}, "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-a11dad6111ad1ccb", "name": "Commented-code block (10 lines) in backend/src/modules/literature/services/pdf-parsing.service.ts:146", "shortDescription": {"text": "Commented-code block (10 lines) in backend/src/modules/literature/services/pdf-parsing.service.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-46a4399f43e2d844", "name": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/services/pdf-parsing.service.ts:337", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/services/pdf-parsing.service.ts:337"}, "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-d5ebc80407f5aa68", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/fulltext-chunking.service.ts:198", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/fulltext-chunking.service.ts:198"}, "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-29b0b0638e785250", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/gap-analyzer.service.spec.ts:710", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/gap-analyzer.service.spec.ts:710"}, "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-bbf69632e072954f", "name": "Commented-code block (9 lines) in backend/src/modules/literature/services/specter-back-chunking.service.ts:170", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/services/specter-back-chunking.service.ts:170"}, "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-94324b4493042089", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/request-hedging.service.ts:90", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/request-hedging.service.ts:90"}, "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-a955b8f2e0859ad5", "name": "Commented-code block (9 lines) in backend/src/modules/literature/services/prospero.service.ts:66", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/services/prospero.service.ts:66"}, "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-4d7278f5d404354d", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/__tests__/paper-database.sanitize-url.spec.ts:", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/__tests__/paper-database.sanitize-url.spec.ts:160"}, "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-a455194aea908ed2", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/gap-refinement-loop.service.spec.ts:", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/gap-refinement-loop.service.spec.ts:226"}, "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-a40274b3b8c2adad", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/multi-format-import.normalization.sp", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/multi-format-import.normalization.spec.ts:57"}, "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-9106371219705101", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/formula-validators.integration.spec.", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/formula-validators.integration.spec.ts:50"}, "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-d89b7358b9022377", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/pdf-parsing.service.spec.ts:218", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/pdf-parsing.service.spec.ts:218"}, "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-6b2f384b781b6cec", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/__tests__/search-stream.phase-10988.spec.ts:11", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/__tests__/search-stream.phase-10988.spec.ts:111"}, "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-1bab0933b2d5a2f4", "name": "Legacy-named symbol `aacods_plus_v1` in backend/src/modules/literature/services/__tests__/evidence-quality-scorer.servic", "shortDescription": {"text": "Legacy-named symbol `aacods_plus_v1` in backend/src/modules/literature/services/__tests__/evidence-quality-scorer.service.spec.ts:193"}, "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-52b9ddbd1601a166", "name": "Commented-code block (9 lines) in backend/src/modules/literature/services/__tests__/request-cancellation.integration.spe", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/services/__tests__/request-cancellation.integration.spec.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-9164d57f2782a287", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/km-corpus-prep.service.spec.ts:249", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/km-corpus-prep.service.spec.ts:249"}, "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-a08852f6382ec40b", "name": "Commented-code block (8 lines) in backend/src/modules/literature/services/__tests__/search-stream.auto-refresh.spec.ts:1", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/services/__tests__/search-stream.auto-refresh.spec.ts:100"}, "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-1ed26cec1f91e353", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/__tests__/citation-stance-classifier.service.s", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/__tests__/citation-stance-classifier.service.spec.ts:170"}, "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-f472156353041d59", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/knowledge-graph.service.spec.ts:314", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/knowledge-graph.service.spec.ts:314"}, "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-faf64cb5b46c7ef1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/services/__tests__/knowledge-graph.service.", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/services/__tests__/knowledge-graph.service.spec.ts:1526"}, "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-333965160af51dd3", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/search-pipeline.service.spec.ts:596", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/search-pipeline.service.spec.ts:596"}, "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-1d59f5024ea3d883", "name": "Legacy-named symbol `aacods_plus_v1` in backend/src/modules/literature/services/__tests__/unified-evidence-repository.se", "shortDescription": {"text": "Legacy-named symbol `aacods_plus_v1` in backend/src/modules/literature/services/__tests__/unified-evidence-repository.service.spec.ts:46"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-67130a4e35de7360", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/__tests__/grey-lit-sources.service.spec.ts:144", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/__tests__/grey-lit-sources.service.spec.ts:144"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0beeaadd84a8a48d", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/__tests__/search-stream.result-cache.spec.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/__tests__/search-stream.result-cache.spec.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5fdcb226b790b757", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/query-adapter.service.spec.ts:166", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/query-adapter.service.spec.ts:166"}, "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-603dd68c18039271", "name": "Commented-code block (12 lines) in backend/src/modules/literature/services/__tests__/risk-of-bias.service.spec.ts:318", "shortDescription": {"text": "Commented-code block (12 lines) in backend/src/modules/literature/services/__tests__/risk-of-bias.service.spec.ts:318"}, "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-bb5231c2bfb37244", "name": "Commented-code block (8 lines) in backend/src/modules/literature/services/__tests__/evidence-table.service.spec.ts:213", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/services/__tests__/evidence-table.service.spec.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-bd64500ab3922b19", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/__tests__/bayesian-gap-scoring.service.spec.ts", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/__tests__/bayesian-gap-scoring.service.spec.ts:479"}, "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-9b2c3c806f1309a8", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/search-stream.autopersist-fulltext.s", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/search-stream.autopersist-fulltext.spec.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-9f6b06968dcea52e", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/cursor-based-cache.service.spec.ts:2", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/cursor-based-cache.service.spec.ts:249"}, "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-5f90d29ed72a6512", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/__tests__/paper-database.service.spec.ts:208", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/__tests__/paper-database.service.spec.ts:208"}, "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-b88d3f5589633513", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/__tests__/gap-persistence-structural.service.s", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/__tests__/gap-persistence-structural.service.spec.ts:127"}, "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-03db062ad75fbdcd", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/km-share.service.spec.ts:46", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/km-share.service.spec.ts:46"}, "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-3e42df3e4b257267", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/claim-extraction.service.spec.ts:323", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/claim-extraction.service.spec.ts:323"}, "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-3a416673fdef14f1", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/specter-back-chunking.service.spec.t", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/specter-back-chunking.service.spec.ts:221"}, "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-64d5e1160e69b337", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/trend-intelligence.service.spec.ts:2", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/trend-intelligence.service.spec.ts:290"}, "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-85d5d4ffd6df8761", "name": "Legacy-named symbol `isLegacy` in backend/src/modules/literature/services/__tests__/corpus-snapshot.service.spec.ts:467", "shortDescription": {"text": "Legacy-named symbol `isLegacy` in backend/src/modules/literature/services/__tests__/corpus-snapshot.service.spec.ts:467"}, "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-614f59823d674b9e", "name": "Commented-code block (10 lines) in backend/src/modules/literature/services/__tests__/corpus-snapshot.service.spec.ts:318", "shortDescription": {"text": "Commented-code block (10 lines) in backend/src/modules/literature/services/__tests__/corpus-snapshot.service.spec.ts:318"}, "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-e34e38450c397554", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/cross-encoder-reranker.memgate.spec.", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/cross-encoder-reranker.memgate.spec.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cd95b2ccb566f548", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/__tests__/pdf-parse-pool.service.spec.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/__tests__/pdf-parse-pool.service.spec.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e417c9adf4ea5907", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/__tests__/search-stream.artifact-capture.spec.", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/__tests__/search-stream.artifact-capture.spec.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-542a82903dd76c51", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/__tests__/gap-persistence-by-study.service.spe", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/__tests__/gap-persistence-by-study.service.spec.ts:45"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6494b3247428b96e", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/__tests__/openalex.service.spec.ts:149", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/__tests__/openalex.service.spec.ts:149"}, "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-4f0a035425847ddd", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/query-translation-fidelity.spec.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/query-translation-fidelity.spec.ts:41"}, "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-643f491fbeddf667", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/cross-encoder-pool.service.spec.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/cross-encoder-pool.service.spec.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7c7d2a586b8f3568", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/research-session-orchestrator.servic", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/research-session-orchestrator.service.spec.ts:331"}, "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-31a2e377d12a8931", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/search-admission-guardrails.spec.ts:", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/search-admission-guardrails.spec.ts:32"}, "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-b680624673279446", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/cross-encoder-reranker.service.spec.", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/cross-encoder-reranker.service.spec.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-bca6aed23d185158", "name": "Commented-code block (11 lines) in backend/src/modules/literature/services/__tests__/citation-enrichment-statement.spec.", "shortDescription": {"text": "Commented-code block (11 lines) in backend/src/modules/literature/services/__tests__/citation-enrichment-statement.spec.ts:351"}, "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-d914c76efc199adc", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/arxiv.service.spec.ts:200", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/arxiv.service.spec.ts:200"}, "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-3cbe2b16284375f9", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/search-stream.fulltext-parity.spec.t", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/search-stream.fulltext-parity.spec.ts:56"}, "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-72854a451dead5e5", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/theme-database.service.spec.ts:379", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/theme-database.service.spec.ts:379"}, "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-6c8fe05ec5820b3f", "name": "Commented-code block (8 lines) in backend/src/modules/literature/services/auto-pipeline/study-corpus.service.ts:69", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/services/auto-pipeline/study-corpus.service.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-0a1b39034e3a4b9c", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/auto-pipeline/auto-knowledge-map.service.ts:37", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/auto-pipeline/auto-knowledge-map.service.ts:37"}, "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-049f8df5d7384689", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/auto-pipeline/auto-gap-analysis.service.ts:35", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/auto-pipeline/auto-gap-analysis.service.ts:35"}, "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-8faa021095188237", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/auto-pipeline/auto-gap-analysis.service.spec.t", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/auto-pipeline/auto-gap-analysis.service.spec.ts:226"}, "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-6b8aec70e9063f20", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/auto-pipeline/auto-pipeline-runner.service.ts:", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/auto-pipeline/auto-pipeline-runner.service.ts:72"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-55b8e9181314d265", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/auto-pipeline/__tests__/auto-pipeline-runner.s", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/auto-pipeline/__tests__/auto-pipeline-runner.service.spec.ts:137"}, "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-2202e6187552b108", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/auto-pipeline/__tests__/auto-knowledge-map.ser", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/auto-pipeline/__tests__/auto-knowledge-map.service.spec.ts:72"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-391639f3bbc186bb", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/bibliometric/km-corpus-fixture.ts:305", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/bibliometric/km-corpus-fixture.ts:305"}, "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-7b461e62eca1483d", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/bibliometric/burst-detection.algorithm.ts:215", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/bibliometric/burst-detection.algorithm.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-10cc07987e1cffe2", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/bibliometric/pagerank.algorithm.ts:291", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/bibliometric/pagerank.algorithm.ts:291"}, "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-d8ff10969214d771", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/bibliometric/link-prediction.algorithm.ts:262", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/bibliometric/link-prediction.algorithm.ts:262"}, "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-4b1a0e393c325bfe", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/bibliometric/disruption-index.algorithm.ts:316", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/bibliometric/disruption-index.algorithm.ts:316"}, "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-385ee65244330e57", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/bibliometric/reproducibility-manifest.service.", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/bibliometric/reproducibility-manifest.service.ts:170"}, "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-914224cf443be8f1", "name": "Commented-code block (9 lines) in backend/src/modules/literature/services/bibliometric/wall-clock-budget.ts:82", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/services/bibliometric/wall-clock-budget.ts:82"}, "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-36a42f9777b61c9f", "name": "Commented-code block (12 lines) in backend/src/modules/literature/services/bibliometric/__tests__/reproducibility-manife", "shortDescription": {"text": "Commented-code block (12 lines) in backend/src/modules/literature/services/bibliometric/__tests__/reproducibility-manifest.service.spec.ts:57"}, "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-41a7e1b379dc5748", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/bibliometric/__tests__/km-corpus-fixture.spec.", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/bibliometric/__tests__/km-corpus-fixture.spec.ts:207"}, "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-4b6ddb39c319f5b8", "name": "Commented-code block (8 lines) in backend/src/modules/literature/services/bibliometric/__tests__/pagerank.algorithm.spec", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/services/bibliometric/__tests__/pagerank.algorithm.spec.ts:249"}, "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-09255ebb99d9f384", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/gap-analysis/gap-refinement-loop.service.ts:27", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/gap-analysis/gap-refinement-loop.service.ts:27"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-792aa6005d78918b", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/gap-analysis/gap-detection.service.ts:43", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/gap-analysis/gap-detection.service.ts:43"}, "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-633da1b385885471", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/gap-analysis/gap-validation-rerank.ts:137", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/gap-analysis/gap-validation-rerank.ts:137"}, "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-5cfd11f386a8c01d", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/gap-analysis/gap-external-validation.service.s", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/gap-analysis/gap-external-validation.service.spec.ts:320"}, "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-25738c0f0d76dd02", "name": "Commented-code block (9 lines) in backend/src/modules/literature/services/gap-analysis/gap-decision-migration.service.ts", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/services/gap-analysis/gap-decision-migration.service.ts:126"}, "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-6a02cbbe89701c28", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/gap-analysis/corpus-enrichment.service.spec.ts", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/gap-analysis/corpus-enrichment.service.spec.ts:82"}, "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-af2f4a052940806e", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/gap-analysis/gap-validation-report.service.ts:", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/gap-analysis/gap-validation-report.service.ts:14"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-49fcfc0bfad8dad2", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/gap-analysis/corpus-enrichment.service.ts:86", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/gap-analysis/corpus-enrichment.service.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-1fa5fe6f818cc4fa", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/gap-analysis/gap-scoring.service.ts:322", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/gap-analysis/gap-scoring.service.ts:322"}, "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-8981877ae5ba304f", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/gap-analysis/gap-corpus-utils.service.ts:17", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/gap-analysis/gap-corpus-utils.service.ts:17"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5dc21f80abed6a23", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/gap-analysis/gap-external-validation.service.t", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/gap-analysis/gap-external-validation.service.ts:13"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6450cda208d0e2c9", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/gap-analysis/gap-detection.service.spec.ts:510", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/gap-analysis/gap-detection.service.spec.ts:510"}, "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-86ebe4036b165b7c", "name": "Commented-code block (9 lines) in backend/src/modules/literature/services/gap-analysis/__tests__/gap-external-validation", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/services/gap-analysis/__tests__/gap-external-validation.service.spec.ts:143"}, "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-b5170b62d402c52d", "name": "Commented-code block (9 lines) in backend/src/modules/literature/services/layout-algorithms/research-front-topography.al", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/services/layout-algorithms/research-front-topography.algorithm.ts:163"}, "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-cfe357e5ead7a97e", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-extraction/coherence-calculation.service", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-extraction/coherence-calculation.service.ts:1225"}, "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-e47cec16ccbf83f8", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-extraction/theme-refinement.service.spec", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-extraction/theme-refinement.service.spec.ts:1103"}, "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-578accce9efa7e6f", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-extraction/familiarization-stage.service", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-extraction/familiarization-stage.service.ts:96"}, "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-2c619ea3f82633f9", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/theme-extraction/validation-strategy.service.t", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/theme-extraction/validation-strategy.service.ts:859"}, "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-54a530b3d3d0f4a0", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-extraction/theme-generation-stage.servic", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-extraction/theme-generation-stage.service.ts:170"}, "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-62b8b8c4aea0be31", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-extraction/saturation-analysis.service.t", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-extraction/saturation-analysis.service.ts:771"}, "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-11a37da50b5aded9", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/community-detection/silhouette.ts:201", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/community-detection/silhouette.ts:201"}, "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-5720621efab67aa3", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/community-detection/sbm.algorithm.ts:149", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/community-detection/sbm.algorithm.ts:149"}, "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-1a5769b5c511f866", "name": "Commented-code block (6 lines) in backend/src/modules/literature/services/community-detection/structure-significance.ts:", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/community-detection/structure-significance.ts:84"}, "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-ae990aa9eb12b541", "name": "Commented-code block (7 lines) in backend/src/modules/literature/services/iterative-fetch/iterative-deduplicator.service", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/iterative-fetch/iterative-deduplicator.service.ts:319"}, "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-23a638c58139877c", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/iterative-fetch/iterative-fetch.types.ts:380", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/iterative-fetch/iterative-fetch.types.ts:380"}, "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-0fe7a44cb3cb2bf8", "name": "Commented-code block (5 lines) in backend/src/modules/literature/services/iterative-fetch/__tests__/per-source-yield-eva", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/iterative-fetch/__tests__/per-source-yield-evaluation.integration.spec.ts:442"}, "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-6c5248a7988abe9d", "name": "Commented-code block (6 lines) in backend/src/modules/literature/jobs/pipeline-job.service.ts:171", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/jobs/pipeline-job.service.ts:171"}, "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-43d25465370bdfd0", "name": "Commented-code block (8 lines) in backend/src/modules/literature/jobs/user-jobs.gateway.ts:195", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/jobs/user-jobs.gateway.ts:195"}, "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-2a64b261e5ba1072", "name": "Commented-code block (11 lines) in backend/src/modules/literature/jobs/pipeline-jobs.controller.ts:105", "shortDescription": {"text": "Commented-code block (11 lines) in backend/src/modules/literature/jobs/pipeline-jobs.controller.ts:105"}, "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-13135933a38b2d66", "name": "Commented-code block (7 lines) in backend/src/modules/literature/jobs/pipeline-job.types.ts:152", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/jobs/pipeline-job.types.ts:152"}, "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-4b41dee91bef2f2b", "name": "Commented-code block (6 lines) in backend/src/modules/literature/jobs/__tests__/pipeline-job.service.spec.ts:307", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/jobs/__tests__/pipeline-job.service.spec.ts:307"}, "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-fbc6235e4c6220b3", "name": "Commented-code block (8 lines) in backend/src/modules/literature/filters/build-throttler-exception.filter.ts:55", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/filters/build-throttler-exception.filter.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-71e2add0faeb75b2", "name": "Commented-code block (5 lines) in backend/src/modules/literature/filters/__tests__/build-throttler-exception.filter.spec", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/filters/__tests__/build-throttler-exception.filter.spec.ts:151"}, "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-1b66f6cfe042a5c3", "name": "Commented-code block (7 lines) in backend/src/modules/analysis/__tests__/smoke/core-functionality.smoke.spec.ts:36", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/analysis/__tests__/smoke/core-functionality.smoke.spec.ts:36"}, "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-63b9cb5297b75ae1", "name": "Commented-code block (6 lines) in backend/src/modules/analysis/tests/q-analysis.service.spec.ts:43", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/analysis/tests/q-analysis.service.spec.ts:43"}, "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-982a9ad2c62544d9", "name": "Commented-code block (7 lines) in backend/src/modules/analysis/services/statistical-output.service.spec.ts:201", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/analysis/services/statistical-output.service.spec.ts:201"}, "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-65354d64adb732f7", "name": "Commented-code block (12 lines) in backend/src/modules/analysis/services/q-analysis.service.ts:356", "shortDescription": {"text": "Commented-code block (12 lines) in backend/src/modules/analysis/services/q-analysis.service.ts:356"}, "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-6a92cc4db5cdd455", "name": "Commented-code block (9 lines) in backend/src/modules/analysis/services/hub.service.ts:478", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/modules/analysis/services/hub.service.ts:478"}, "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-d0e28e483aae3c8a", "name": "Commented-code block (6 lines) in backend/src/modules/analysis/services/statistical-output.service.ts:326", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/analysis/services/statistical-output.service.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-fa53bee2c6c97dd7", "name": "Commented-code block (7 lines) in backend/src/modules/analysis/services/interpretation.service.ts:349", "shortDescription": {"text": "Commented-code block (7 lines) in backend/src/modules/analysis/services/interpretation.service.ts:349"}, "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-d2b7dac47d648ec3", "name": "Commented-code block (8 lines) in backend/src/modules/analysis/services/literature-comparison.service.ts:55", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/analysis/services/literature-comparison.service.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-eb2f7d5ea11010c2", "name": "Commented-code block (11 lines) in backend/src/modules/analysis/services/__tests__/literature-comparison.service.spec.ts", "shortDescription": {"text": "Commented-code block (11 lines) in backend/src/modules/analysis/services/__tests__/literature-comparison.service.spec.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-4aaf5b94f1de5b3c", "name": "Commented-code block (8 lines) in backend/src/modules/analysis/services/__tests__/pqmethod-compatibility.service.spec.ts", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/modules/analysis/services/__tests__/pqmethod-compatibility.service.spec.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-1c8a1963cdbc2c2d", "name": "Commented-code block (6 lines) in backend/src/modules/rate-limiting/rate-limiting.module.ts:87", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/rate-limiting/rate-limiting.module.ts:87"}, "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-567888fe3fe914af", "name": "Commented-code block (9 lines) in backend/src/modules/rate-limiting/guards/ws-rate-limit.guard.ts:293", "shortDescription": {"text": "Commented-code block (9 lines) in backend/src/modules/rate-limiting/guards/ws-rate-limit.guard.ts:293"}, "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-82914e5f7b887ee4", "name": "Commented-code block (6 lines) in backend/src/modules/rate-limiting/services/rate-limit-metrics.service.ts:69", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/rate-limiting/services/rate-limit-metrics.service.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-af45ed8d11748b90", "name": "Commented-code block (5 lines) in backend/src/modules/report/report.service.ts:136", "shortDescription": {"text": "Commented-code block (5 lines) in backend/src/modules/report/report.service.ts:136"}, "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-bb1d1fffda704206", "name": "Commented-code block (6 lines) in backend/src/modules/report/controllers/report.controller.ts:2312", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/report/controllers/report.controller.ts:2312"}, "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-b58772f228768fa7", "name": "Commented-code block (11 lines) in backend/src/modules/report/services/report-generator.service.ts:555", "shortDescription": {"text": "Commented-code block (11 lines) in backend/src/modules/report/services/report-generator.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-dac9714e23c68fd9", "name": "Commented-code block (6 lines) in backend/src/modules/report/services/reproducibility-bundle.service.ts:134", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/report/services/reproducibility-bundle.service.ts:134"}, "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-9defb259ffac62b1", "name": "Commented-code block (6 lines) in backend/src/modules/report/services/export/pdf-export.service.ts:70", "shortDescription": {"text": "Commented-code block (6 lines) in backend/src/modules/report/services/export/pdf-export.service.ts:70"}, "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-6f1e8d69f1c32483", "name": "Commented-code block (12 lines) in backend/src/modules/file-upload/file-upload.module.ts:7", "shortDescription": {"text": "Commented-code block (12 lines) in backend/src/modules/file-upload/file-upload.module.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-9284f6892fdb68a7", "name": "Commented-code block (8 lines) in backend/src/controllers/enhanced-metrics.controller.ts:285", "shortDescription": {"text": "Commented-code block (8 lines) in backend/src/controllers/enhanced-metrics.controller.ts:285"}, "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-83e859d41592c12e", "name": "182 env vars used in code but missing from .env.example", "shortDescription": {"text": "182 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `AI_MODEL_VERSION`, `AI_TOKEN_RATE_LIMIT_PER_USER_PER_MIN`, `AI_TOKEN_RATE_MAX_PER_REQUEST`, `ALLOW_PUBLIC_ENDPOINTS`, `ANALYZE`, `API_BASE_URL`, `API_URL`, `APPLE_CLIENT_ID` + 174 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nfrontend/scripts/replace_console_logs.py:should_skip_file, backend/scripts/replace_console_logs.py:should_skip_file\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b7db82c6db533604", "name": "Dangling fetch: GET https://api.unpaywall.org/v2/${encodeURIComponent(p.doi)}?email=research@blackq.app (test-smart-reso", "shortDescription": {"text": "Dangling fetch: GET https://api.unpaywall.org/v2/${encodeURIComponent(p.doi)}?email=research@blackq.app (test-smart-resolver.js:27)"}, "fullDescription": {"text": "`test-smart-resolver.js:27` calls `GET https://api.unpaywall.org/v2/${encodeURIComponent(p.doi)}?email=research@blackq.app` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/api.unpaywall.org/v2/<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-fd13df5e0c539553", "name": "Dangling fetch: POST https://api.semanticscholar.org/graph/v1/paper/batch (test-smart-resolver.js:55)", "shortDescription": {"text": "Dangling fetch: POST https://api.semanticscholar.org/graph/v1/paper/batch (test-smart-resolver.js:55)"}, "fullDescription": {"text": "`test-smart-resolver.js:55` calls `POST https://api.semanticscholar.org/graph/v1/paper/batch` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/api.semanticscholar.org/graph/v1/paper/batch`\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-899f14d1181ae126", "name": "Dangling fetch: HEAD https://files.eric.ed.gov/fulltext/${ericId}.pdf (test-smart-resolver.js:85)", "shortDescription": {"text": "Dangling fetch: HEAD https://files.eric.ed.gov/fulltext/${ericId}.pdf (test-smart-resolver.js:85)"}, "fullDescription": {"text": "`test-smart-resolver.js:85` calls `HEAD https://files.eric.ed.gov/fulltext/${ericId}.pdf` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/files.eric.ed.gov/fulltext/<p>.pdf`\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-df433fae15bcff06", "name": "Dangling fetch: GET https://api.crossref.org/works/${encodeURIComponent(p.doi)} (test-smart-resolver.js:112)", "shortDescription": {"text": "Dangling fetch: GET https://api.crossref.org/works/${encodeURIComponent(p.doi)} (test-smart-resolver.js:112)"}, "fullDescription": {"text": "`test-smart-resolver.js:112` calls `GET https://api.crossref.org/works/${encodeURIComponent(p.doi)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/api.crossref.org/works/<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-45649fdc73547d7a", "name": "Dangling fetch: GET http://127.0.0.1:3001 (frontend/test-ui-components.js:16)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:3001 (frontend/test-ui-components.js:16)"}, "fullDescription": {"text": "`frontend/test-ui-components.js:16` calls `GET http://127.0.0.1:3001` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:3001`\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-9a02fa27992b34bc", "name": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=javascript:alert(1) (scripts/edge-case-tests.js:58)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=javascript:alert(1) (scripts/edge-case-tests.js:58)"}, "fullDescription": {"text": "`scripts/edge-case-tests.js:58` calls `GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=javascript:alert(1)` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/http:/127.0.0.1:4000/api/auth/orcid`\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-a6989ffc5ae28c2a", "name": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=data:text/html,<script>alert(1)</script> (scripts/edg", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=data:text/html,<script>alert(1)</script> (scripts/edge-case-tests.js:64)"}, "fullDescription": {"text": "`scripts/edge-case-tests.js:64` calls `GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=data:text/html,<script>alert(1)</script>` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/http:/127.0.0.1:4000/api/auth/orcid`\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-d91b747b4e42bfe9", "name": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=/../../../etc/passwd (scripts/edge-case-tests.js:70)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=/../../../etc/passwd (scripts/edge-case-tests.js:70)"}, "fullDescription": {"text": "`scripts/edge-case-tests.js:70` calls `GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=/../../../etc/passwd` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/http:/127.0.0.1:4000/api/auth/orcid`\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-7647c3fcc00e3370", "name": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=/discover%00/literature (scripts/edge-case-tests.js:7", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=/discover%00/literature (scripts/edge-case-tests.js:76)"}, "fullDescription": {"text": "`scripts/edge-case-tests.js:76` calls `GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=/discover%00/literature` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/http:/127.0.0.1:4000/api/auth/orcid`\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-5588783fe5a16cdc", "name": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=/discover%E2%80%8B/literature (scripts/edge-case-test", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=/discover%E2%80%8B/literature (scripts/edge-case-tests.js:82)"}, "fullDescription": {"text": "`scripts/edge-case-tests.js:82` calls `GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=/discover%E2%80%8B/literature` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/http:/127.0.0.1:4000/api/auth/orcid`\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-80755ee69b394c8c", "name": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=%252F%252Fevil.com (scripts/edge-case-tests.js:88)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=%252F%252Fevil.com (scripts/edge-case-tests.js:88)"}, "fullDescription": {"text": "`scripts/edge-case-tests.js:88` calls `GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=%252F%252Fevil.com` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/http:/127.0.0.1:4000/api/auth/orcid`\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-cc74edcdbb5726a6", "name": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=/discover%0D%0ASet-Cookie:evil=1 (scripts/edge-case-t", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=/discover%0D%0ASet-Cookie:evil=1 (scripts/edge-case-tests.js:94)"}, "fullDescription": {"text": "`scripts/edge-case-tests.js:94` calls `GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=/discover%0D%0ASet-Cookie:evil=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/http:/127.0.0.1:4000/api/auth/orcid`\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-4b68d186b8b958d5", "name": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/profile (scripts/edge-case-tests.js:102)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/profile (scripts/edge-case-tests.js:102)"}, "fullDescription": {"text": "`scripts/edge-case-tests.js:102` calls `GET http://127.0.0.1:4000/api/auth/profile` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/http:/127.0.0.1:4000/api/auth/profile`\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-3df35fa1a3c993cc", "name": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/profile (scripts/edge-case-tests.js:108)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/profile (scripts/edge-case-tests.js:108)"}, "fullDescription": {"text": "`scripts/edge-case-tests.js:108` calls `GET http://127.0.0.1:4000/api/auth/profile` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/http:/127.0.0.1:4000/api/auth/profile`\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-e3b9c01eed3c9c09", "name": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=//evil.com/phish (scripts/edge-case-tests.js:131)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=//evil.com/phish (scripts/edge-case-tests.js:131)"}, "fullDescription": {"text": "`scripts/edge-case-tests.js:131` calls `GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=//evil.com/phish` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/http:/127.0.0.1:4000/api/auth/orcid`\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-7fdc32e4b26191e6", "name": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=https://evil.com (scripts/edge-case-tests.js:137)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=https://evil.com (scripts/edge-case-tests.js:137)"}, "fullDescription": {"text": "`scripts/edge-case-tests.js:137` calls `GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=https://evil.com` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/http:/127.0.0.1:4000/api/auth/orcid`\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-4866d1af9a6863e0", "name": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl= (scripts/edge-case-tests.js:143)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl= (scripts/edge-case-tests.js:143)"}, "fullDescription": {"text": "`scripts/edge-case-tests.js:143` calls `GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/http:/127.0.0.1:4000/api/auth/orcid`\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-f81864b3cb1be98b", "name": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid (scripts/edge-case-tests.js:149)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid (scripts/edge-case-tests.js:149)"}, "fullDescription": {"text": "`scripts/edge-case-tests.js:149` calls `GET http://127.0.0.1:4000/api/auth/orcid` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/http:/127.0.0.1:4000/api/auth/orcid`\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-b7e4a8940e098297", "name": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid/callback?code=test&state=test (scripts/edge-case-tests.js:157)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid/callback?code=test&state=test (scripts/edge-case-tests.js:157)"}, "fullDescription": {"text": "`scripts/edge-case-tests.js:157` calls `GET http://127.0.0.1:4000/api/auth/orcid/callback?code=test&state=test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/http:/127.0.0.1:4000/api/auth/orcid/callback`\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-add90e96cd21a6da", "name": "Dangling fetch: POST /api/questionnaires/sync (public/service-worker.js:173)", "shortDescription": {"text": "Dangling fetch: POST /api/questionnaires/sync (public/service-worker.js:173)"}, "fullDescription": {"text": "`public/service-worker.js:173` calls `POST /api/questionnaires/sync` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/questionnaires/sync`\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-6d40e79002b58924", "name": "Dangling fetch: POST /api/studies/test-id/grid (__tests__/phase-6.85-integration.test.tsx:253)", "shortDescription": {"text": "Dangling fetch: POST /api/studies/test-id/grid (__tests__/phase-6.85-integration.test.tsx:253)"}, "fullDescription": {"text": "`__tests__/phase-6.85-integration.test.tsx:253` calls `POST /api/studies/test-id/grid` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/studies/test-id/grid`\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-b5cb037fdfd49fe9", "name": "Dangling fetch: POST /api/studies/test-id/stimuli (__tests__/phase-6.85-integration.test.tsx:288)", "shortDescription": {"text": "Dangling fetch: POST /api/studies/test-id/stimuli (__tests__/phase-6.85-integration.test.tsx:288)"}, "fullDescription": {"text": "`__tests__/phase-6.85-integration.test.tsx:288` calls `POST /api/studies/test-id/stimuli` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/studies/test-id/stimuli`\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-2c5172f40e10ad91", "name": "Dangling fetch: POST /api/participant-flow/save (frontend/__tests__/e2e/participant-flow.spec.ts:413)", "shortDescription": {"text": "Dangling fetch: POST /api/participant-flow/save (frontend/__tests__/e2e/participant-flow.spec.ts:413)"}, "fullDescription": {"text": "`frontend/__tests__/e2e/participant-flow.spec.ts:413` calls `POST /api/participant-flow/save` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/participant-flow/save`\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-b198c9f9d7c70cbc", "name": "Dangling fetch: POST /api/questionnaires/sync (frontend/components/ServiceWorkerProvider.tsx:295)", "shortDescription": {"text": "Dangling fetch: POST /api/questionnaires/sync (frontend/components/ServiceWorkerProvider.tsx:295)"}, "fullDescription": {"text": "`frontend/components/ServiceWorkerProvider.tsx:295` calls `POST /api/questionnaires/sync` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/questionnaires/sync`\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-8e0dcc681b4ff036", "name": "Dangling fetch: PUT /api/upload/image (frontend/components/editors/InlineImageUpload.tsx:147)", "shortDescription": {"text": "Dangling fetch: PUT /api/upload/image (frontend/components/editors/InlineImageUpload.tsx:147)"}, "fullDescription": {"text": "`frontend/components/editors/InlineImageUpload.tsx:147` calls `PUT /api/upload/image` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/upload/image`\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-6a07fd2badb03e4e", "name": "Dangling fetch: PUT /api/upload/image (frontend/components/editors/RichTextEditorV2.tsx:115)", "shortDescription": {"text": "Dangling fetch: PUT /api/upload/image (frontend/components/editors/RichTextEditorV2.tsx:115)"}, "fullDescription": {"text": "`frontend/components/editors/RichTextEditorV2.tsx:115` calls `PUT /api/upload/image` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/upload/image`\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-726ccff2af9eb50f", "name": "Dangling fetch: GET /api/studies/available (frontend/components/participant/PreScreening.tsx:426)", "shortDescription": {"text": "Dangling fetch: GET /api/studies/available (frontend/components/participant/PreScreening.tsx:426)"}, "fullDescription": {"text": "`frontend/components/participant/PreScreening.tsx:426` calls `GET /api/studies/available` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/studies/available`\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-7513ae0c8ee8045e", "name": "Dangling fetch: POST /api/upload/signature (frontend/components/study-creation/ResearcherSignature.tsx:50)", "shortDescription": {"text": "Dangling fetch: POST /api/upload/signature (frontend/components/study-creation/ResearcherSignature.tsx:50)"}, "fullDescription": {"text": "`frontend/components/study-creation/ResearcherSignature.tsx:50` calls `POST /api/upload/signature` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/upload/signature`\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-b0c595f05f8bbcab", "name": "Dangling fetch: POST /api/upload/signature (frontend/components/study-creation/ResearcherSignature.tsx:102)", "shortDescription": {"text": "Dangling fetch: POST /api/upload/signature (frontend/components/study-creation/ResearcherSignature.tsx:102)"}, "fullDescription": {"text": "`frontend/components/study-creation/ResearcherSignature.tsx:102` calls `POST /api/upload/signature` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/upload/signature`\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-d89e66672a7ebd63", "name": "Dangling fetch: POST /api/upload/signature (frontend/components/study-creation/ResearcherSignature.tsx:132)", "shortDescription": {"text": "Dangling fetch: POST /api/upload/signature (frontend/components/study-creation/ResearcherSignature.tsx:132)"}, "fullDescription": {"text": "`frontend/components/study-creation/ResearcherSignature.tsx:132` calls `POST /api/upload/signature` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/upload/signature`\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-b4b4438ae0f8c504", "name": "Dangling fetch: GET /api/ai/monitoring/metrics?range=${timeRange} (frontend/components/ai/AIUsageDashboard.tsx:89)", "shortDescription": {"text": "Dangling fetch: GET /api/ai/monitoring/metrics?range=${timeRange} (frontend/components/ai/AIUsageDashboard.tsx:89)"}, "fullDescription": {"text": "`frontend/components/ai/AIUsageDashboard.tsx:89` calls `GET /api/ai/monitoring/metrics?range=${timeRange}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ai/monitoring/metrics`\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-bc1c531b2fc311c2", "name": "Dangling fetch: GET /api/ai/monitoring/usage (frontend/components/ai/AIUsageDashboard.tsx:101)", "shortDescription": {"text": "Dangling fetch: GET /api/ai/monitoring/usage (frontend/components/ai/AIUsageDashboard.tsx:101)"}, "fullDescription": {"text": "`frontend/components/ai/AIUsageDashboard.tsx:101` calls `GET /api/ai/monitoring/usage` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ai/monitoring/usage`\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-f1a7e89f2e708afd", "name": "Dangling fetch: POST /api/ai/grid (frontend/components/ai/GridDesignAssistant.tsx:61)", "shortDescription": {"text": "Dangling fetch: POST /api/ai/grid (frontend/components/ai/GridDesignAssistant.tsx:61)"}, "fullDescription": {"text": "`frontend/components/ai/GridDesignAssistant.tsx:61` calls `POST /api/ai/grid` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ai/grid`\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-7ce07bfdf5e84f13", "name": "Dangling fetch: POST /api/studies/${studyId}/grid (frontend/components/grid/InteractiveGridBuilder.tsx:253)", "shortDescription": {"text": "Dangling fetch: POST /api/studies/${studyId}/grid (frontend/components/grid/InteractiveGridBuilder.tsx:253)"}, "fullDescription": {"text": "`frontend/components/grid/InteractiveGridBuilder.tsx:253` calls `POST /api/studies/${studyId}/grid` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/studies/<p>/grid`\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-2512a20007a4dcb1", "name": "Dangling fetch: POST /api/studies/${studyId}/stimuli (frontend/components/stimuli/StimuliUploadSystemV3.tsx:166)", "shortDescription": {"text": "Dangling fetch: POST /api/studies/${studyId}/stimuli (frontend/components/stimuli/StimuliUploadSystemV3.tsx:166)"}, "fullDescription": {"text": "`frontend/components/stimuli/StimuliUploadSystemV3.tsx:166` calls `POST /api/studies/${studyId}/stimuli` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/studies/<p>/stimuli`\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-e539582297a4741e", "name": "Dangling fetch: POST /api/studies/${studyId}/stimuli (frontend/components/stimuli/StimuliUploadSystemV4.tsx:182)", "shortDescription": {"text": "Dangling fetch: POST /api/studies/${studyId}/stimuli (frontend/components/stimuli/StimuliUploadSystemV4.tsx:182)"}, "fullDescription": {"text": "`frontend/components/stimuli/StimuliUploadSystemV4.tsx:182` calls `POST /api/studies/${studyId}/stimuli` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/studies/<p>/stimuli`\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-0561b784a1916d71", "name": "Dangling fetch: POST /api/studies/${studyId}/stimuli (frontend/components/stimuli/StimuliUploadSystemV2.tsx:238)", "shortDescription": {"text": "Dangling fetch: POST /api/studies/${studyId}/stimuli (frontend/components/stimuli/StimuliUploadSystemV2.tsx:238)"}, "fullDescription": {"text": "`frontend/components/stimuli/StimuliUploadSystemV2.tsx:238` calls `POST /api/studies/${studyId}/stimuli` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/studies/<p>/stimuli`\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-79cd002257013db5", "name": "Dangling fetch: DELETE /api/studies/${studyId}/stimuli?stimulusId=${id} (frontend/components/stimuli/StimuliUploadSystem", "shortDescription": {"text": "Dangling fetch: DELETE /api/studies/${studyId}/stimuli?stimulusId=${id} (frontend/components/stimuli/StimuliUploadSystemV2.tsx:265)"}, "fullDescription": {"text": "`frontend/components/stimuli/StimuliUploadSystemV2.tsx:265` calls `DELETE /api/studies/${studyId}/stimuli?stimulusId=${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/studies/<p>/stimuli`\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-3cf88960b8d59509", "name": "Dangling fetch: POST /api/studies/${studyId}/stimuli (frontend/components/stimuli/StimuliUploadSystem.tsx:138)", "shortDescription": {"text": "Dangling fetch: POST /api/studies/${studyId}/stimuli (frontend/components/stimuli/StimuliUploadSystem.tsx:138)"}, "fullDescription": {"text": "`frontend/components/stimuli/StimuliUploadSystem.tsx:138` calls `POST /api/studies/${studyId}/stimuli` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/studies/<p>/stimuli`\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-7bfdfcc40237f7bd", "name": "Dangling fetch: POST /api/studies/${studyId}/stimuli (frontend/components/stimuli/StimuliUploadSystem.tsx:263)", "shortDescription": {"text": "Dangling fetch: POST /api/studies/${studyId}/stimuli (frontend/components/stimuli/StimuliUploadSystem.tsx:263)"}, "fullDescription": {"text": "`frontend/components/stimuli/StimuliUploadSystem.tsx:263` calls `POST /api/studies/${studyId}/stimuli` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/studies/<p>/stimuli`\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-2205e0ddc630f142", "name": "Dangling fetch: DELETE /api/studies/${studyId}/stimuli?stimulusId=${id} (frontend/components/stimuli/StimuliUploadSystem", "shortDescription": {"text": "Dangling fetch: DELETE /api/studies/${studyId}/stimuli?stimulusId=${id} (frontend/components/stimuli/StimuliUploadSystem.tsx:285)"}, "fullDescription": {"text": "`frontend/components/stimuli/StimuliUploadSystem.tsx:285` calls `DELETE /api/studies/${studyId}/stimuli?stimulusId=${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/studies/<p>/stimuli`\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-efebd223918d3996", "name": "Dangling fetch: GET /home (frontend/app/auth/login/page.tsx:136)", "shortDescription": {"text": "Dangling fetch: GET /home (frontend/app/auth/login/page.tsx:136)"}, "fullDescription": {"text": "`frontend/app/auth/login/page.tsx:136` calls `GET /home` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/home`\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-d75e6c937777b79c", "name": "Dangling fetch: GET /api/auth/resend-verification (frontend/app/auth/verify-email/page.tsx:89)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/resend-verification (frontend/app/auth/verify-email/page.tsx:89)"}, "fullDescription": {"text": "`frontend/app/auth/verify-email/page.tsx:89` calls `GET /api/auth/resend-verification` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/resend-verification`\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-34a1f80d4aea9da8", "name": "Dangling fetch: POST /api/studies (frontend/app/api/studies/route.ts:30)", "shortDescription": {"text": "Dangling fetch: POST /api/studies (frontend/app/api/studies/route.ts:30)"}, "fullDescription": {"text": "`frontend/app/api/studies/route.ts:30` calls `POST /api/studies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/studies`\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-dfb13136078b9a5a", "name": "Dangling fetch: GET /api/participant/studies (frontend/app/(participant)/my-studies/page.tsx:43)", "shortDescription": {"text": "Dangling fetch: GET /api/participant/studies (frontend/app/(participant)/my-studies/page.tsx:43)"}, "fullDescription": {"text": "`frontend/app/(participant)/my-studies/page.tsx:43` calls `GET /api/participant/studies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/participant/studies`\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-bbf9937f5b39879e", "name": "Dangling fetch: POST /api/analysis/upload (frontend/app/(researcher)/analysis/q-methodology/hooks/useQAnalysis.ts:172)", "shortDescription": {"text": "Dangling fetch: POST /api/analysis/upload (frontend/app/(researcher)/analysis/q-methodology/hooks/useQAnalysis.ts:172)"}, "fullDescription": {"text": "`frontend/app/(researcher)/analysis/q-methodology/hooks/useQAnalysis.ts:172` calls `POST /api/analysis/upload` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/analysis/upload`\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-ad229651bd33904f", "name": "Dangling fetch: GET /api/analysis/export?format=${format} (frontend/app/(researcher)/analysis/q-methodology/hooks/useQAn", "shortDescription": {"text": "Dangling fetch: GET /api/analysis/export?format=${format} (frontend/app/(researcher)/analysis/q-methodology/hooks/useQAnalysis.ts:310)"}, "fullDescription": {"text": "`frontend/app/(researcher)/analysis/q-methodology/hooks/useQAnalysis.ts:310` calls `GET /api/analysis/export?format=${format}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/analysis/export`\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-ad3862d8fa8278f5", "name": "Dangling fetch: POST /api/studies/${studyMetadata.id}/stimuli (frontend/lib/stores/study-builder-store.ts:301)", "shortDescription": {"text": "Dangling fetch: POST /api/studies/${studyMetadata.id}/stimuli (frontend/lib/stores/study-builder-store.ts:301)"}, "fullDescription": {"text": "`frontend/lib/stores/study-builder-store.ts:301` calls `POST /api/studies/${studyMetadata.id}/stimuli` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/studies/<p>/stimuli`\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-dc2a2ece41cdeca7", "name": "Dangling fetch: POST /api/studies/${studyMetadata.id}/grid (frontend/lib/stores/study-builder-store.ts:410)", "shortDescription": {"text": "Dangling fetch: POST /api/studies/${studyMetadata.id}/grid (frontend/lib/stores/study-builder-store.ts:410)"}, "fullDescription": {"text": "`frontend/lib/stores/study-builder-store.ts:410` calls `POST /api/studies/${studyMetadata.id}/grid` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/studies/<p>/grid`\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-595b290f5a19d73e", "name": "Dangling fetch: GET /api/studies/${studyId}/grid (frontend/lib/stores/study-builder-store.ts:450)", "shortDescription": {"text": "Dangling fetch: GET /api/studies/${studyId}/grid (frontend/lib/stores/study-builder-store.ts:450)"}, "fullDescription": {"text": "`frontend/lib/stores/study-builder-store.ts:450` calls `GET /api/studies/${studyId}/grid` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/studies/<p>/grid`\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-a08ab8cbb517e194", "name": "Dangling fetch: GET /api/data (frontend/lib/utils/retry.ts:249)", "shortDescription": {"text": "Dangling fetch: GET /api/data (frontend/lib/utils/retry.ts:249)"}, "fullDescription": {"text": "`frontend/lib/utils/retry.ts:249` calls `GET /api/data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/data`\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-63c2c73779d2d0e3", "name": "Dangling fetch: GET /api/... (frontend/lib/services/hub-api.service.ts:10)", "shortDescription": {"text": "Dangling fetch: GET /api/... (frontend/lib/services/hub-api.service.ts:10)"}, "fullDescription": {"text": "`frontend/lib/services/hub-api.service.ts:10` calls `GET /api/...` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/...`\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-55b22ff4b3aef1d5", "name": "Dangling fetch: POST /api/analytics/performance (frontend/hooks/use-performance-monitor.ts:242)", "shortDescription": {"text": "Dangling fetch: POST /api/analytics/performance (frontend/hooks/use-performance-monitor.ts:242)"}, "fullDescription": {"text": "`frontend/hooks/use-performance-monitor.ts:242` calls `POST /api/analytics/performance` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/analytics/performance`\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-7869d0de58c607c2", "name": "Dangling fetch: POST /api/literature/themes/extract (frontend/e2e/jobs-ring.spec.ts:100)", "shortDescription": {"text": "Dangling fetch: POST /api/literature/themes/extract (frontend/e2e/jobs-ring.spec.ts:100)"}, "fullDescription": {"text": "`frontend/e2e/jobs-ring.spec.ts:100` calls `POST /api/literature/themes/extract` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/literature/themes/extract`\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-36772d51d735ad18", "name": "Dangling fetch: POST http://localhost:4000/api/auth/login (backend/test-auth-api.ts:17)", "shortDescription": {"text": "Dangling fetch: POST http://localhost:4000/api/auth/login (backend/test-auth-api.ts:17)"}, "fullDescription": {"text": "`backend/test-auth-api.ts:17` calls `POST http://localhost:4000/api/auth/login` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/http:/localhost:4000/api/auth/login`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e1b5c499aaaf393e", "name": "Dangling fetch: POST http://localhost:4000/api/auth/login (backend/test-auth-api.ts:63)", "shortDescription": {"text": "Dangling fetch: POST http://localhost:4000/api/auth/login (backend/test-auth-api.ts:63)"}, "fullDescription": {"text": "`backend/test-auth-api.ts:63` calls `POST http://localhost:4000/api/auth/login` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/http:/localhost:4000/api/auth/login`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-838e669f4399abab", "name": "Dangling fetch: POST https://sandbox.orcid.org/oauth/token (backend/scripts/refresh-orcid-token.ts:179)", "shortDescription": {"text": "Dangling fetch: POST https://sandbox.orcid.org/oauth/token (backend/scripts/refresh-orcid-token.ts:179)"}, "fullDescription": {"text": "`backend/scripts/refresh-orcid-token.ts:179` calls `POST https://sandbox.orcid.org/oauth/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:/sandbox.orcid.org/oauth/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-bcbc201f6873f66c", "name": "Dangling fetch: GET https://api.semanticscholar.org/graph/v1/paper/search (backend/scripts/test-source-limits.ts:48)", "shortDescription": {"text": "Dangling fetch: GET https://api.semanticscholar.org/graph/v1/paper/search (backend/scripts/test-source-limits.ts:48)"}, "fullDescription": {"text": "`backend/scripts/test-source-limits.ts:48` calls `GET https://api.semanticscholar.org/graph/v1/paper/search` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/api.semanticscholar.org/graph/v1/paper/search`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-18bb708bac7aa18d", "name": "Dangling fetch: GET https://api.openalex.org/works (backend/scripts/test-source-limits.ts:99)", "shortDescription": {"text": "Dangling fetch: GET https://api.openalex.org/works (backend/scripts/test-source-limits.ts:99)"}, "fullDescription": {"text": "`backend/scripts/test-source-limits.ts:99` calls `GET https://api.openalex.org/works` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/api.openalex.org/works`\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-ebcdc0671cb24874", "name": "Dangling fetch: GET https://api.crossref.org/works (backend/scripts/test-source-limits.ts:140)", "shortDescription": {"text": "Dangling fetch: GET https://api.crossref.org/works (backend/scripts/test-source-limits.ts:140)"}, "fullDescription": {"text": "`backend/scripts/test-source-limits.ts:140` calls `GET https://api.crossref.org/works` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/api.crossref.org/works`\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-5c4ea6ef385bda3c", "name": "Dangling fetch: GET https://export.arxiv.org/api/query (backend/scripts/test-source-limits.ts:186)", "shortDescription": {"text": "Dangling fetch: GET https://export.arxiv.org/api/query (backend/scripts/test-source-limits.ts:186)"}, "fullDescription": {"text": "`backend/scripts/test-source-limits.ts:186` calls `GET https://export.arxiv.org/api/query` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/export.arxiv.org/api/query`\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-95acc8c230488f13", "name": "Dangling fetch: GET https://api.ies.ed.gov/eric/ (backend/scripts/test-source-limits.ts:242)", "shortDescription": {"text": "Dangling fetch: GET https://api.ies.ed.gov/eric/ (backend/scripts/test-source-limits.ts:242)"}, "fullDescription": {"text": "`backend/scripts/test-source-limits.ts:242` calls `GET https://api.ies.ed.gov/eric/` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/api.ies.ed.gov/eric`\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-55aa3e575f0eada2", "name": "Dangling fetch: GET https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi (backend/scripts/test-source-limits.ts:28", "shortDescription": {"text": "Dangling fetch: GET https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi (backend/scripts/test-source-limits.ts:283)"}, "fullDescription": {"text": "`backend/scripts/test-source-limits.ts:283` calls `GET https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi`\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-a3cd4f7c055d1b11", "name": "Dangling fetch: GET https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi (backend/scripts/test-source-limits.ts:301", "shortDescription": {"text": "Dangling fetch: GET https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi (backend/scripts/test-source-limits.ts:301)"}, "fullDescription": {"text": "`backend/scripts/test-source-limits.ts:301` calls `GET https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi`\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-ae7cc8dfd77b79fe", "name": "Dangling fetch: GET http://localhost:8070/api/isalive (backend/scripts/test-grobid-extraction-e2e.ts:278)", "shortDescription": {"text": "Dangling fetch: GET http://localhost:8070/api/isalive (backend/scripts/test-grobid-extraction-e2e.ts:278)"}, "fullDescription": {"text": "`backend/scripts/test-grobid-extraction-e2e.ts:278` calls `GET http://localhost:8070/api/isalive` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/http:/localhost:8070/api/isalive`\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-ca48a10d1b58325c", "name": "Dangling fetch: GET https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi (backend/scripts/test-source-balance-e2e.", "shortDescription": {"text": "Dangling fetch: GET https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi (backend/scripts/test-source-balance-e2e.ts:57)"}, "fullDescription": {"text": "`backend/scripts/test-source-balance-e2e.ts:57` calls `GET https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi`\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-97de2d54deef5d74", "name": "Dangling fetch: GET https://api.openalex.org/works (backend/scripts/test-source-balance-e2e.ts:70)", "shortDescription": {"text": "Dangling fetch: GET https://api.openalex.org/works (backend/scripts/test-source-balance-e2e.ts:70)"}, "fullDescription": {"text": "`backend/scripts/test-source-balance-e2e.ts:70` calls `GET https://api.openalex.org/works` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/api.openalex.org/works`\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-77e7de1a5e50dc38", "name": "Dangling fetch: GET https://api.crossref.org/works (backend/scripts/test-source-balance-e2e.ts:80)", "shortDescription": {"text": "Dangling fetch: GET https://api.crossref.org/works (backend/scripts/test-source-balance-e2e.ts:80)"}, "fullDescription": {"text": "`backend/scripts/test-source-balance-e2e.ts:80` calls `GET https://api.crossref.org/works` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/api.crossref.org/works`\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-9b74f8b60e171660", "name": "Dangling fetch: GET https://export.arxiv.org/api/query (backend/scripts/test-source-balance-e2e.ts:93)", "shortDescription": {"text": "Dangling fetch: GET https://export.arxiv.org/api/query (backend/scripts/test-source-balance-e2e.ts:93)"}, "fullDescription": {"text": "`backend/scripts/test-source-balance-e2e.ts:93` calls `GET https://export.arxiv.org/api/query` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/export.arxiv.org/api/query`\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-c8b8067f93e1e56b", "name": "Dangling fetch: GET https://api.semanticscholar.org/graph/v1/paper/search (backend/scripts/test-source-balance-e2e.ts:11", "shortDescription": {"text": "Dangling fetch: GET https://api.semanticscholar.org/graph/v1/paper/search (backend/scripts/test-source-balance-e2e.ts:110)"}, "fullDescription": {"text": "`backend/scripts/test-source-balance-e2e.ts:110` calls `GET https://api.semanticscholar.org/graph/v1/paper/search` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/api.semanticscholar.org/graph/v1/paper/search`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4ddda579511553b3", "name": "Dangling fetch: GET https://api.ies.ed.gov/eric/ (backend/scripts/test-source-balance-e2e.ts:123)", "shortDescription": {"text": "Dangling fetch: GET https://api.ies.ed.gov/eric/ (backend/scripts/test-source-balance-e2e.ts:123)"}, "fullDescription": {"text": "`backend/scripts/test-source-balance-e2e.ts:123` calls `GET https://api.ies.ed.gov/eric/` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/api.ies.ed.gov/eric`\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-1296fbf48aa0cb71", "name": "Dangling fetch: GET https://api.core.ac.uk/v3/search/works (backend/scripts/test-source-balance-e2e.ts:136)", "shortDescription": {"text": "Dangling fetch: GET https://api.core.ac.uk/v3/search/works (backend/scripts/test-source-balance-e2e.ts:136)"}, "fullDescription": {"text": "`backend/scripts/test-source-balance-e2e.ts:136` calls `GET https://api.core.ac.uk/v3/search/works` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/api.core.ac.uk/v3/search/works`\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-96aeb3ad9078b641", "name": "Dangling fetch: POST https://api.sandbox.orcid.org/v3.0/${user.orcidId}/work (backend/scripts/add-orcid-publications.ts:", "shortDescription": {"text": "Dangling fetch: POST https://api.sandbox.orcid.org/v3.0/${user.orcidId}/work (backend/scripts/add-orcid-publications.ts:151)"}, "fullDescription": {"text": "`backend/scripts/add-orcid-publications.ts:151` calls `POST https://api.sandbox.orcid.org/v3.0/${user.orcidId}/work` 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.sandbox.orcid.org/v3.0/<p>/work`\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-0e8063bf43b6727b", "name": "Dangling fetch: GET https://pub.orcid.org/v3.0/${user.orcidId}/works (backend/scripts/add-orcid-publications.ts:179)", "shortDescription": {"text": "Dangling fetch: GET https://pub.orcid.org/v3.0/${user.orcidId}/works (backend/scripts/add-orcid-publications.ts:179)"}, "fullDescription": {"text": "`backend/scripts/add-orcid-publications.ts:179` calls `GET https://pub.orcid.org/v3.0/${user.orcidId}/works` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/pub.orcid.org/v3.0/<p>/works`\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-09ab0c88a8f06a41", "name": "Dangling fetch: POST https://api.sandbox.orcid.org/v3.0/${orcidId}/work (backend/scripts/check-orcid-user.ts:105)", "shortDescription": {"text": "Dangling fetch: POST https://api.sandbox.orcid.org/v3.0/${orcidId}/work (backend/scripts/check-orcid-user.ts:105)"}, "fullDescription": {"text": "`backend/scripts/check-orcid-user.ts:105` calls `POST https://api.sandbox.orcid.org/v3.0/${orcidId}/work` 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.sandbox.orcid.org/v3.0/<p>/work`\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-282e983d03e379b5", "name": "Dangling fetch: POST http://localhost:4000/api/literature/search/public (backend/scripts/test-search-pipeline-e2e.ts:50)", "shortDescription": {"text": "Dangling fetch: POST http://localhost:4000/api/literature/search/public (backend/scripts/test-search-pipeline-e2e.ts:50)"}, "fullDescription": {"text": "`backend/scripts/test-search-pipeline-e2e.ts:50` calls `POST http://localhost:4000/api/literature/search/public` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/http:/localhost:4000/api/literature/search/public`\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-6fdb65dbfb90c72b", "name": "Dangling fetch: GET /api/user (backend/src/modules/literature/interfaces/result.interface.ts:334)", "shortDescription": {"text": "Dangling fetch: GET /api/user (backend/src/modules/literature/interfaces/result.interface.ts:334)"}, "fullDescription": {"text": "`backend/src/modules/literature/interfaces/result.interface.ts:334` calls `GET /api/user` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/user`\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-e2f223db19657c8d", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (backend/src/modules/literature/services/theme-to-survey", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (backend/src/modules/literature/services/theme-to-survey-item.service.ts:444)"}, "fullDescription": {"text": "`backend/src/modules/literature/services/theme-to-survey-item.service.ts:444` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\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-ca34be097a456960", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (backend/src/modules/literature/services/theme-to-survey", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (backend/src/modules/literature/services/theme-to-survey-item.service.ts:515)"}, "fullDescription": {"text": "`backend/src/modules/literature/services/theme-to-survey-item.service.ts:515` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\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-fe336a6faabce548", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (backend/src/modules/literature/services/theme-to-survey", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (backend/src/modules/literature/services/theme-to-survey-item.service.ts:580)"}, "fullDescription": {"text": "`backend/src/modules/literature/services/theme-to-survey-item.service.ts:580` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\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-e01bea04e764b451", "name": "Unused endpoint: GET /${name}/:id", "shortDescription": {"text": "Unused endpoint: GET /${name}/:id"}, "fullDescription": {"text": "`scripts/create-file.js` declares `GET /${name}/:id` 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-2b2dfa2392b98b1c", "name": "Unused endpoint: POST /reports/export", "shortDescription": {"text": "Unused endpoint: POST /reports/export"}, "fullDescription": {"text": "`frontend/components/knowledge/toolbar/ReportButton.tsx` declares `POST /reports/export` 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-1818482aa73c1d31", "name": "Unused endpoint: POST /literature/themes/merge", "shortDescription": {"text": "Unused endpoint: POST /literature/themes/merge"}, "fullDescription": {"text": "`frontend/app/(researcher)/discover/themes/components/ThemeBatchToolbar.tsx` declares `POST /literature/themes/merge` 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-18b069b4ab5c6158", "name": "Unused endpoint: POST /literature/themes/split", "shortDescription": {"text": "Unused endpoint: POST /literature/themes/split"}, "fullDescription": {"text": "`frontend/app/(researcher)/discover/themes/components/ThemeBatchToolbar.tsx` declares `POST /literature/themes/split` 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-d5313efb01c417c7", "name": "Unused endpoint: POST /auth/orcid/unlink", "shortDescription": {"text": "Unused endpoint: POST /auth/orcid/unlink"}, "fullDescription": {"text": "`frontend/app/(researcher)/discover/literature/components/ResearchAccessMenu.tsx` declares `POST /auth/orcid/unlink` 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-d9a17e63897954ed", "name": "Unused endpoint: POST /literature/gap-analysis/refine", "shortDescription": {"text": "Unused endpoint: POST /literature/gap-analysis/refine"}, "fullDescription": {"text": "`frontend/app/(researcher)/discover/gaps/GapsPageDataLayer.tsx` declares `POST /literature/gap-analysis/refine` 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-4c0648c95fed1c47", "name": "Unused endpoint: POST /literature/gap-analysis/validate", "shortDescription": {"text": "Unused endpoint: POST /literature/gap-analysis/validate"}, "fullDescription": {"text": "`frontend/app/(researcher)/discover/gaps/hooks/useGapValidation.ts` declares `POST /literature/gap-analysis/validate` 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-d20ce244d16bac09", "name": "Unused endpoint: POST /literature/gap-analysis/validate/report", "shortDescription": {"text": "Unused endpoint: POST /literature/gap-analysis/validate/report"}, "fullDescription": {"text": "`frontend/app/(researcher)/discover/gaps/hooks/useGapValidation.ts` declares `POST /literature/gap-analysis/validate/report` 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-99346b1bdf20e612", "name": "Unused endpoint: POST /literature/gap-analysis/enrich", "shortDescription": {"text": "Unused endpoint: POST /literature/gap-analysis/enrich"}, "fullDescription": {"text": "`frontend/app/(researcher)/discover/gaps/hooks/useCorpusEnrichment.ts` declares `POST /literature/gap-analysis/enrich` 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-5473d14dbed680b0", "name": "Unused endpoint: GET /literature/citation-validation/review-queue", "shortDescription": {"text": "Unused endpoint: GET /literature/citation-validation/review-queue"}, "fullDescription": {"text": "`frontend/app/(researcher)/literature/review-queue/page.tsx` declares `GET /literature/citation-validation/review-queue` 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-0687765e075bb4d9", "name": "Unused endpoint: POST /reports/preview", "shortDescription": {"text": "Unused endpoint: POST /reports/preview"}, "fullDescription": {"text": "`frontend/app/(researcher)/report/page.tsx` declares `POST /reports/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-b64bdbb62405a3b8", "name": "Unused endpoint: GET /analysis/${studyId}/results", "shortDescription": {"text": "Unused endpoint: GET /analysis/${studyId}/results"}, "fullDescription": {"text": "`frontend/lib/stores/interpretation.store.ts` declares `GET /analysis/${studyId}/results` 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-b36892106ecdc9aa", "name": "Unused endpoint: POST /auth/refresh", "shortDescription": {"text": "Unused endpoint: POST /auth/refresh"}, "fullDescription": {"text": "`frontend/lib/api/auth.ts` declares `POST /auth/refresh` 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-51bed5c4f0b81714", "name": "Unused endpoint: POST /participant/session/start", "shortDescription": {"text": "Unused endpoint: POST /participant/session/start"}, "fullDescription": {"text": "`frontend/lib/api/participant.ts` declares `POST /participant/session/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-2e8133d88b2c5214", "name": "Unused endpoint: POST /repository/index", "shortDescription": {"text": "Unused endpoint: POST /repository/index"}, "fullDescription": {"text": "`frontend/lib/api/services/repository-api.service.ts` declares `POST /repository/index` 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-c3b3558bbe215ac6", "name": "Unused endpoint: GET /repository/facets", "shortDescription": {"text": "Unused endpoint: GET /repository/facets"}, "fullDescription": {"text": "`frontend/lib/api/services/repository-api.service.ts` declares `GET /repository/facets` 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-c5ce8b81ca4bf014", "name": "Unused endpoint: GET /repository/stats", "shortDescription": {"text": "Unused endpoint: GET /repository/stats"}, "fullDescription": {"text": "`frontend/lib/api/services/repository-api.service.ts` declares `GET /repository/stats` 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-d187fbe508368e0c", "name": "Unused endpoint: DELETE /repository/search-history", "shortDescription": {"text": "Unused endpoint: DELETE /repository/search-history"}, "fullDescription": {"text": "`frontend/lib/api/services/repository-api.service.ts` declares `DELETE /repository/search-history` 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-4585c350da9e880d", "name": "Unused endpoint: POST /auth/change-password", "shortDescription": {"text": "Unused endpoint: POST /auth/change-password"}, "fullDescription": {"text": "`frontend/lib/api/services/auth.service.ts` declares `POST /auth/change-password` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-deb8df763a50c73a", "name": "Unused endpoint: POST /auth/reset-password", "shortDescription": {"text": "Unused endpoint: POST /auth/reset-password"}, "fullDescription": {"text": "`frontend/lib/api/services/auth.service.ts` declares `POST /auth/reset-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-59cb6e2c914d4369", "name": "Unused endpoint: POST /auth/2fa/enable", "shortDescription": {"text": "Unused endpoint: POST /auth/2fa/enable"}, "fullDescription": {"text": "`frontend/lib/api/services/auth.service.ts` declares `POST /auth/2fa/enable` 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-4d22329d46e296f4", "name": "Unused endpoint: DELETE /auth/2fa/disable", "shortDescription": {"text": "Unused endpoint: DELETE /auth/2fa/disable"}, "fullDescription": {"text": "`frontend/lib/api/services/auth.service.ts` declares `DELETE /auth/2fa/disable` 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-08103989631e8858", "name": "Unused endpoint: POST /literature/audit/health", "shortDescription": {"text": "Unused endpoint: POST /literature/audit/health"}, "fullDescription": {"text": "`frontend/lib/api/services/collection-audit-api.service.ts` declares `POST /literature/audit/health` 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-cd9f6e425704c7d4", "name": "Unused endpoint: POST /research-design/refine-question", "shortDescription": {"text": "Unused endpoint: POST /research-design/refine-question"}, "fullDescription": {"text": "`frontend/lib/api/services/research-design-api.service.ts` declares `POST /research-design/refine-question` 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-77cbb4230a91ed63", "name": "Unused endpoint: POST /research-design/generate-hypotheses", "shortDescription": {"text": "Unused endpoint: POST /research-design/generate-hypotheses"}, "fullDescription": {"text": "`frontend/lib/api/services/research-design-api.service.ts` declares `POST /research-design/generate-hypotheses` 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-a329598b05279b43", "name": "Unused endpoint: POST /research-design/build-theory-diagram", "shortDescription": {"text": "Unused endpoint: POST /research-design/build-theory-diagram"}, "fullDescription": {"text": "`frontend/lib/api/services/research-design-api.service.ts` declares `POST /research-design/build-theory-diagram` 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-ff95b386c122061c", "name": "Unused endpoint: POST /research-design/recommend-methodology", "shortDescription": {"text": "Unused endpoint: POST /research-design/recommend-methodology"}, "fullDescription": {"text": "`frontend/lib/api/services/research-design-api.service.ts` declares `POST /research-design/recommend-methodology` 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-1bcbe25560251481", "name": "Unused endpoint: POST /literature/jobs/latency-beacon", "shortDescription": {"text": "Unused endpoint: POST /literature/jobs/latency-beacon"}, "fullDescription": {"text": "`frontend/lib/api/services/pipeline-jobs.service.ts` declares `POST /literature/jobs/latency-beacon` 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-b81678fd70a77f96", "name": "Unused endpoint: POST /observability/fe-metrics", "shortDescription": {"text": "Unused endpoint: POST /observability/fe-metrics"}, "fullDescription": {"text": "`frontend/lib/observability/useFrontendMetrics.ts` declares `POST /observability/fe-metrics` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f40172acc881bffa", "name": "Unused endpoint: POST /literature/save", "shortDescription": {"text": "Unused endpoint: POST /literature/save"}, "fullDescription": {"text": "`frontend/lib/services/literature-api.service.ts` declares `POST /literature/save` 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-1e31e470a0e31c8b", "name": "Unused endpoint: POST /literature/papers/bulk-save", "shortDescription": {"text": "Unused endpoint: POST /literature/papers/bulk-save"}, "fullDescription": {"text": "`frontend/lib/services/literature-api.service.ts` declares `POST /literature/papers/bulk-save` 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-faea945148b89f9a", "name": "Unused endpoint: GET /literature/library", "shortDescription": {"text": "Unused endpoint: GET /literature/library"}, "fullDescription": {"text": "`frontend/lib/services/literature-api.service.ts` declares `GET /literature/library` 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-3d85024d69587034", "name": "Unused endpoint: DELETE /literature/papers/trash/empty", "shortDescription": {"text": "Unused endpoint: DELETE /literature/papers/trash/empty"}, "fullDescription": {"text": "`frontend/lib/services/literature-api.service.ts` declares `DELETE /literature/papers/trash/empty` 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-1ffb212b92448a2a", "name": "Unused endpoint: GET /literature/papers/trash", "shortDescription": {"text": "Unused endpoint: GET /literature/papers/trash"}, "fullDescription": {"text": "`frontend/lib/services/literature-api.service.ts` declares `GET /literature/papers/trash` 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-9a9f8c128f32ae60", "name": "Unused endpoint: POST /literature/gap-analysis/analyze-and-score", "shortDescription": {"text": "Unused endpoint: POST /literature/gap-analysis/analyze-and-score"}, "fullDescription": {"text": "`frontend/lib/services/literature-api.service.ts` declares `POST /literature/gap-analysis/analyze-and-score` 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-cab75b474d33d9c0", "name": "Unused endpoint: POST /q-sort/optimize", "shortDescription": {"text": "Unused endpoint: POST /q-sort/optimize"}, "fullDescription": {"text": "`frontend/lib/services/literature-api.service.ts` declares `POST /q-sort/optimize` 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-a39885e0b750a915", "name": "Unused endpoint: GET /literature/alternative", "shortDescription": {"text": "Unused endpoint: GET /literature/alternative"}, "fullDescription": {"text": "`frontend/lib/services/literature-api.service.ts` declares `GET /literature/alternative` 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-f5f0ff778bda066d", "name": "Unused endpoint: POST /literature/youtube/channel/info", "shortDescription": {"text": "Unused endpoint: POST /literature/youtube/channel/info"}, "fullDescription": {"text": "`frontend/lib/services/literature-api.service.ts` declares `POST /literature/youtube/channel/info` 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-b69963ab2f0a97a6", "name": "Unused endpoint: POST /literature/youtube/channel/videos", "shortDescription": {"text": "Unused endpoint: POST /literature/youtube/channel/videos"}, "fullDescription": {"text": "`frontend/lib/services/literature-api.service.ts` declares `POST /literature/youtube/channel/videos` 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-e72812a0ef28284b", "name": "Unused endpoint: POST /literature/papers/refresh-metadata", "shortDescription": {"text": "Unused endpoint: POST /literature/papers/refresh-metadata"}, "fullDescription": {"text": "`frontend/lib/services/literature-api.service.ts` declares `POST /literature/papers/refresh-metadata` 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-be2268c74d5e8c2f", "name": "Unused endpoint: POST /literature/gap-analysis/structural-analyze", "shortDescription": {"text": "Unused endpoint: POST /literature/gap-analysis/structural-analyze"}, "fullDescription": {"text": "`frontend/lib/services/literature-api.service.ts` declares `POST /literature/gap-analysis/structural-analyze` 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-5d75a8ead84b9246", "name": "Unused endpoint: GET /literature/gap-analysis/decisions", "shortDescription": {"text": "Unused endpoint: GET /literature/gap-analysis/decisions"}, "fullDescription": {"text": "`frontend/lib/services/literature-api.service.ts` declares `GET /literature/gap-analysis/decisions` 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-74b10c20177c7c05", "name": "Unused endpoint: GET /literature/gap-analysis/evolution", "shortDescription": {"text": "Unused endpoint: GET /literature/gap-analysis/evolution"}, "fullDescription": {"text": "`frontend/lib/services/literature-api.service.ts` declares `GET /literature/gap-analysis/evolution` 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-dff15094c5ac210e", "name": "Unused endpoint: POST /literature/gap-analysis/brief", "shortDescription": {"text": "Unused endpoint: POST /literature/gap-analysis/brief"}, "fullDescription": {"text": "`frontend/lib/services/literature-api.service.ts` declares `POST /literature/gap-analysis/brief` 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-d66d4544942915d6", "name": "Unused endpoint: POST /literature/gap-analysis/briefs-bundle", "shortDescription": {"text": "Unused endpoint: POST /literature/gap-analysis/briefs-bundle"}, "fullDescription": {"text": "`frontend/lib/services/literature-api.service.ts` declares `POST /literature/gap-analysis/briefs-bundle` 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-f34ea2bbefa929d3", "name": "Unused endpoint: POST /literature/gap-analysis/research-questions", "shortDescription": {"text": "Unused endpoint: POST /literature/gap-analysis/research-questions"}, "fullDescription": {"text": "`frontend/lib/services/literature-api.service.ts` declares `POST /literature/gap-analysis/research-questions` 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-e44a4df64159bc4f", "name": "Unused endpoint: POST /literature/gap-analysis/narrative", "shortDescription": {"text": "Unused endpoint: POST /literature/gap-analysis/narrative"}, "fullDescription": {"text": "`frontend/lib/services/literature-api.service.ts` declares `POST /literature/gap-analysis/narrative` 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-3075b51888278f3c", "name": "Unused endpoint: POST /literature/gap-analysis/hypotheses", "shortDescription": {"text": "Unused endpoint: POST /literature/gap-analysis/hypotheses"}, "fullDescription": {"text": "`frontend/lib/services/literature-api.service.ts` declares `POST /literature/gap-analysis/hypotheses` 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-50fba15edb1945e4", "name": "Unused endpoint: POST /literature/gap-analysis/export/grant-section", "shortDescription": {"text": "Unused endpoint: POST /literature/gap-analysis/export/grant-section"}, "fullDescription": {"text": "`frontend/lib/services/literature-api.service.ts` declares `POST /literature/gap-analysis/export/grant-section` 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-b427324275b05be5", "name": "Unused endpoint: POST /literature/gap-analysis/keywords", "shortDescription": {"text": "Unused endpoint: POST /literature/gap-analysis/keywords"}, "fullDescription": {"text": "`frontend/lib/services/literature-api.service.ts` declares `POST /literature/gap-analysis/keywords` 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/19347"}, "properties": {"repository": "shahabnazari/BlackQM", "repoUrl": "https://github.com/shahabnazari/BlackQM", "branch": "main"}, "results": [{"ruleId": "scanner-2b6066abb92e6364", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-orcid-popup.js:15"}, "properties": {"repobilityId": "d00971008045867e", "scanner": "scanner-primary", "fingerprint": "2b6066abb92e6364", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7cd9d93fc9b25ded", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 fix-remaining-errors.js:7"}, "properties": {"repobilityId": "fe53cd3e3a640e94", "scanner": "scanner-primary", "fingerprint": "7cd9d93fc9b25ded", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a05f014379daff81", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-live-search-quality.js:18"}, "properties": {"repobilityId": "bcd827b465a52d01", "scanner": "scanner-primary", "fingerprint": "a05f014379daff81", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aa13b6a13699879f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-enterprise-search-v4.js:18"}, "properties": {"repobilityId": "79d1f0658e17544f", "scanner": "scanner-primary", "fingerprint": "aa13b6a13699879f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cc136b1982920dd6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-phase-10-92-e2e.js:172"}, "properties": {"repobilityId": "afcce03cae4098d4", "scanner": "scanner-primary", "fingerprint": "cc136b1982920dd6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-87de7bb8bf98e9ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-literature-api.js:95"}, "properties": {"repobilityId": "682df414048234dd", "scanner": "scanner-primary", "fingerprint": "87de7bb8bf98e9ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-49944661f096b81f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 phase-6.94-final-zero.js:12"}, "properties": {"repobilityId": "daad5c6cd9b4af14", "scanner": "scanner-primary", "fingerprint": "49944661f096b81f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0c2a558d52fd8429", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 diagnostic-token-inspection.js:13"}, "properties": {"repobilityId": "7334a67f97098ea5", "scanner": "scanner-primary", "fingerprint": "0c2a558d52fd8429", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ef6c5afd62e90c46", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-semantic-scholar-direct.js:14"}, "properties": {"repobilityId": "ba273d83b1d2d4dc", "scanner": "scanner-primary", "fingerprint": "ef6c5afd62e90c46", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3d36c3753e1dae47", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 phase-6.94-layer3-enterprise.js:68"}, "properties": {"repobilityId": "56f5d754e675d630", "scanner": "scanner-primary", "fingerprint": "3d36c3753e1dae47", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-16ec5a7750c0a970", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-all-sources-backend.js:45"}, "properties": {"repobilityId": "584d1765ba2734c4", "scanner": "scanner-primary", "fingerprint": "16ec5a7750c0a970", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-27f85d17683e449d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 final-check.js:7"}, "properties": {"repobilityId": "66fc92441656fbc6", "scanner": "scanner-primary", "fingerprint": "27f85d17683e449d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb36fb17639385de", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-paper-counts.js:25"}, "properties": {"repobilityId": "4e6c2d6742d50e49", "scanner": "scanner-primary", "fingerprint": "cb36fb17639385de", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-952cf24d0e14e969", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-familiarization-fulltext.js:32"}, "properties": {"repobilityId": "faf5205731e0199b", "scanner": "scanner-primary", "fingerprint": "952cf24d0e14e969", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f0083d733722c51f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 final-zero-errors.js:10"}, "properties": {"repobilityId": "52e8819d889c6e62", "scanner": "scanner-primary", "fingerprint": "f0083d733722c51f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0258699864613921", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 phase-6.94-layer4-final.js:15"}, "properties": {"repobilityId": "f7bf71473e680f47", "scanner": "scanner-primary", "fingerprint": "0258699864613921", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bc92612a3cb379c7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-enrichment-direct.js:11"}, "properties": {"repobilityId": "388ab1748b99a10c", "scanner": "scanner-primary", "fingerprint": "bc92612a3cb379c7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0ccfbbefebed9616", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-login-flow.js:15"}, "properties": {"repobilityId": "39b3b8e164689728", "scanner": "scanner-primary", "fingerprint": "0ccfbbefebed9616", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-27511eb37218825f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-e2e-scenarios.js:66"}, "properties": {"repobilityId": "5b14129cd86d72ec", "scanner": "scanner-primary", "fingerprint": "27511eb37218825f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-45c6a29557237d82", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-source-aggregation.js:26"}, "properties": {"repobilityId": "30f2a58bccd0e189", "scanner": "scanner-primary", "fingerprint": "45c6a29557237d82", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9b63549f63cf68b3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-smart-resolver.js:17"}, "properties": {"repobilityId": "216f0a0fcfed259c", "scanner": "scanner-primary", "fingerprint": "9b63549f63cf68b3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f364aed256bf42bc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 fix-typescript-errors.js:7"}, "properties": {"repobilityId": "96e2d67e76323851", "scanner": "scanner-primary", "fingerprint": "f364aed256bf42bc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c120fd1f459e1ba2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-search-metadata.js:8"}, "properties": {"repobilityId": "39a10afd8dbae4ee", "scanner": "scanner-primary", "fingerprint": "c120fd1f459e1ba2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0efdd5c7a3b804b1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-search-quality-fixes.js:14"}, "properties": {"repobilityId": "e166f13478b116f1", "scanner": "scanner-primary", "fingerprint": "0efdd5c7a3b804b1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9021f8ea51e259ce", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-search-engine-complete.js:16"}, "properties": {"repobilityId": "2137ba9776a00caf", "scanner": "scanner-primary", "fingerprint": "9021f8ea51e259ce", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-05f7b0fb952e81dc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check-errors.js:5"}, "properties": {"repobilityId": "91a2057f5b6b6fc3", "scanner": "scanner-primary", "fingerprint": "05f7b0fb952e81dc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-60ac7893d9d83a35", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-week2-logic.js:7"}, "properties": {"repobilityId": "6cf99aedb9802b3b", "scanner": "scanner-primary", "fingerprint": "60ac7893d9d83a35", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1b6998cbb5d71e28", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-lenient-scoring.js:16"}, "properties": {"repobilityId": "b12214f38e2cb1da", "scanner": "scanner-primary", "fingerprint": "1b6998cbb5d71e28", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e41768151fe3f1a1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-improvement-cap-e2e-simple.js:42"}, "properties": {"repobilityId": "581cd1d137249825", "scanner": "scanner-primary", "fingerprint": "e41768151fe3f1a1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c13b98ac4fa69dc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 phase-6.94-layer2-fix.js:51"}, "properties": {"repobilityId": "06f3b617c7618962", "scanner": "scanner-primary", "fingerprint": "3c13b98ac4fa69dc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6fc066e493245767", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 find-search-logic.js:7"}, "properties": {"repobilityId": "5518a6a64733d55e", "scanner": "scanner-primary", "fingerprint": "6fc066e493245767", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8d0092eb814fa7c7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-fulltext-edge-cases.js:38"}, "properties": {"repobilityId": "7c59add03a62965b", "scanner": "scanner-primary", "fingerprint": "8d0092eb814fa7c7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-54e507a900df5ebf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-literature-search-e2e.js:19"}, "properties": {"repobilityId": "197e972e463d4b51", "scanner": "scanner-primary", "fingerprint": "54e507a900df5ebf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2c463c9c07c0dfc1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 __tests__/literature-to-theme-extraction-flow.test.ts:46"}, "properties": {"repobilityId": "115af924e47afa42", "scanner": "scanner-primary", "fingerprint": "2c463c9c07c0dfc1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aa9b38a682700e48", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/test-ui-components.js:12"}, "properties": {"repobilityId": "f9802bb431a0aed4", "scanner": "scanner-primary", "fingerprint": "aa9b38a682700e48", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1cd81c68d36e56ac", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/__tests__/e2e-study-creation.test.tsx:16"}, "properties": {"repobilityId": "84a259f576996ba5", "scanner": "scanner-primary", "fingerprint": "1cd81c68d36e56ac", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f1b75038822b0d2d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/tests/image-upload-test-suite.js:33"}, "properties": {"repobilityId": "818425fbcfddb2fe", "scanner": "scanner-primary", "fingerprint": "f1b75038822b0d2d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8450ca8f45fd7378", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/tests/console-cancellation-test.js:21"}, "properties": {"repobilityId": "8868e61dcf21690f", "scanner": "scanner-primary", "fingerprint": "8450ca8f45fd7378", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e76f6c22d753fb68", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/tests/console-test-suite.js:40"}, "properties": {"repobilityId": "5498f4ec2fb59e16", "scanner": "scanner-primary", "fingerprint": "e76f6c22d753fb68", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aaf4c6c3575c64b2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/tests/request-cancellation-e2e.test.ts:53"}, "properties": {"repobilityId": "5c5de66ea3fcbd8c", "scanner": "scanner-primary", "fingerprint": "aaf4c6c3575c64b2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f2eaee9ca39bb2b0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/test/utils/test-helpers.ts:263"}, "properties": {"repobilityId": "ee2bd4bdcab5e393", "scanner": "scanner-primary", "fingerprint": "f2eaee9ca39bb2b0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cd3aca90af9275e9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/scripts/fix-unused-vars.js:30"}, "properties": {"repobilityId": "33c028035f7f31be", "scanner": "scanner-primary", "fingerprint": "cd3aca90af9275e9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-26165d291b0cc21a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/scripts/zero-error-setup.js:25"}, "properties": {"repobilityId": "58ecd56a8bc58d58", "scanner": "scanner-primary", "fingerprint": "26165d291b0cc21a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-517541646a92fde0", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/components/study-creation/ParticipantPreview.tsx:147"}, "properties": {"repobilityId": "9043624f7dd77f95", "scanner": "scanner-primary", "fingerprint": "517541646a92fde0", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-15f64ae601868405", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ai/DrOnionChatPanel.tsx:1416"}, "properties": {"repobilityId": "8275e6f16d6d402d", "scanner": "scanner-primary", "fingerprint": "15f64ae601868405", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5b8536412f7eae59", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ai/SourcePassageSidebar.tsx:113"}, "properties": {"repobilityId": "0afbad94240e12d2", "scanner": "scanner-primary", "fingerprint": "5b8536412f7eae59", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6df854a86d4a07ec", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ai/SmartValidator.tsx:845"}, "properties": {"repobilityId": "8117fd31b6b61400", "scanner": "scanner-primary", "fingerprint": "6df854a86d4a07ec", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-81ca744efb002818", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ai/DrOnionContextPanel.tsx:180"}, "properties": {"repobilityId": "857dba835b594f89", "scanner": "scanner-primary", "fingerprint": "81ca744efb002818", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f49b951994925cbc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ai/DrOnionMentionAutocomplete.tsx:202"}, "properties": {"repobilityId": "d1472e78fc544caf", "scanner": "scanner-primary", "fingerprint": "f49b951994925cbc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-95252c47db9479b4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ai/ToolConfirmationCard.tsx:166"}, "properties": {"repobilityId": "ea2e19a0b441f58a", "scanner": "scanner-primary", "fingerprint": "95252c47db9479b4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-86cd4f1e16c13270", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ai/CitationChip.tsx:119"}, "properties": {"repobilityId": "89d152879dd672cc", "scanner": "scanner-primary", "fingerprint": "86cd4f1e16c13270", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-da536f0594db3efd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ai/DrOnionActionExecutor.tsx:244"}, "properties": {"repobilityId": "41b6b20e3be939d6", "scanner": "scanner-primary", "fingerprint": "da536f0594db3efd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6c1ae14862185cdd", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/components/hub/sections/VisualizationCenter.tsx:648"}, "properties": {"repobilityId": "194bcb27df46a31a", "scanner": "scanner-primary", "fingerprint": "6c1ae14862185cdd", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-020d3b695963af53", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/navigation/UserProfileMenu.tsx:135"}, "properties": {"repobilityId": "47b598fd6a486de8", "scanner": "scanner-primary", "fingerprint": "020d3b695963af53", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-51d9016f4fa7de28", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/navigation/AppBar.tsx:157"}, "properties": {"repobilityId": "93e77d9f9edb9464", "scanner": "scanner-primary", "fingerprint": "51d9016f4fa7de28", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3f0802d9620aa320", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/navigation/UnifiedSidebar.tsx:100"}, "properties": {"repobilityId": "4d7d4238151d24f6", "scanner": "scanner-primary", "fingerprint": "3f0802d9620aa320", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9728834685b3c9d8", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/components/navigation/TabletSidebar.tsx:27"}, "properties": {"repobilityId": "93b0aba577c40ddb", "scanner": "scanner-primary", "fingerprint": "9728834685b3c9d8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-8fa9ceb82d3c71a1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/navigation/Breadcrumbs.tsx:248"}, "properties": {"repobilityId": "f3fec7addba95595", "scanner": "scanner-primary", "fingerprint": "8fa9ceb82d3c71a1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cca280aa761a921d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/components/navigation/PhaseProgressIndicator.tsx:17"}, "properties": {"repobilityId": "a90943b5be361b01", "scanner": "scanner-primary", "fingerprint": "cca280aa761a921d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-7e824b265152a1f2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/questionnaire/QuestionnaireBuilderPro.tsx:187"}, "properties": {"repobilityId": "b311cc2855914340", "scanner": "scanner-primary", "fingerprint": "7e824b265152a1f2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4064a4e95a3e2a3f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/components/questionnaire/ScreeningQuestionnaire.tsx:63"}, "properties": {"repobilityId": "646269e57f76416b", "scanner": "scanner-primary", "fingerprint": "4064a4e95a3e2a3f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-b2371a54e1562906", "level": "note", "message": {"text": "React Flow <MiniMap> without dark background \u2014 frontend/components/questionnaire/VisualSkipLogicBuilder.tsx:322"}, "properties": {"repobilityId": "3bf1f231ba594981", "scanner": "scanner-primary", "fingerprint": "b2371a54e1562906", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.minimap.no-bg"]}}, {"ruleId": "scanner-5a172d96bed334ca", "level": "note", "message": {"text": "React Flow <Controls> without dark theming \u2014 frontend/components/questionnaire/VisualSkipLogicBuilder.tsx:321"}, "properties": {"repobilityId": "d80c6ee515699fa8", "scanner": "scanner-primary", "fingerprint": "5a172d96bed334ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.controls.no-bg"]}}, {"ruleId": "scanner-95790bb2469f6d84", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/questionnaire/ThemeImportModal.tsx:408"}, "properties": {"repobilityId": "38c67ed6fa4a7f29", "scanner": "scanner-primary", "fingerprint": "95790bb2469f6d84", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-999cc772df80dd22", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/questionnaire/ImportSourceSelector.tsx:254"}, "properties": {"repobilityId": "1a78a5ddc428395c", "scanner": "scanner-primary", "fingerprint": "999cc772df80dd22", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-43dd0e6964cc9d9d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/questionnaire/theme-import/ThemeSelector.tsx:108"}, "properties": {"repobilityId": "e0c38c45b54c9de8", "scanner": "scanner-primary", "fingerprint": "43dd0e6964cc9d9d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1791a239b58779cb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/questionnaire/mobile/MobileQuestionnaireWrapper.tsx:329"}, "properties": {"repobilityId": "b1a83c022c44f95c", "scanner": "scanner-primary", "fingerprint": "1791a239b58779cb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d224d34958cd34b3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/questionnaire/logic/QuestionPoolManager.tsx:741"}, "properties": {"repobilityId": "fa0eec416bfed113", "scanner": "scanner-primary", "fingerprint": "d224d34958cd34b3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-82bdafa5e3213669", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/components/ui/AutoPipelineToast.tsx:147"}, "properties": {"repobilityId": "9510cb4d460a2bf2", "scanner": "scanner-primary", "fingerprint": "82bdafa5e3213669", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-ba2d5581a441fc66", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/visualizations/dashboards/DashboardWidget.tsx:219"}, "properties": {"repobilityId": "7388ba15f966ac38", "scanner": "scanner-primary", "fingerprint": "ba2d5581a441fc66", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bcc0e934f55e5868", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/visualizations/dashboards/DashboardLayout.tsx:499"}, "properties": {"repobilityId": "945554ed73365c91", "scanner": "scanner-primary", "fingerprint": "bcc0e934f55e5868", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f0c0481bee2278cd", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 frontend/components/visualizations/dashboards/WidgetLibrary.tsx:403"}, "properties": {"repobilityId": "f5c4c7eae9520cfe", "scanner": "scanner-primary", "fingerprint": "f0c0481bee2278cd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-49b2b917bd306898", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/grid/AIGridDesignAssistant.tsx:575"}, "properties": {"repobilityId": "012f02d2aa1c4e24", "scanner": "scanner-primary", "fingerprint": "49b2b917bd306898", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-91e2d0ad65302bc6", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/components/repository/AnnotationPanel.tsx:120"}, "properties": {"repobilityId": "2489ce615964aa15", "scanner": "scanner-primary", "fingerprint": "91e2d0ad65302bc6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-d654e6a93383bbcb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/repository/ResearchCorpusPanel.tsx:295"}, "properties": {"repobilityId": "268c8b5bce8ce33c", "scanner": "scanner-primary", "fingerprint": "d654e6a93383bbcb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-85361ea0e114af94", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/auto-trigger/AutoTriggerProgressToast.tsx:146"}, "properties": {"repobilityId": "33b2ca279810b103", "scanner": "scanner-primary", "fingerprint": "85361ea0e114af94", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f3dabf80a715bf94", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/components/literature/FullTextExcerptPanel.tsx:76"}, "properties": {"repobilityId": "d1de415d6ec64872", "scanner": "scanner-primary", "fingerprint": "f3dabf80a715bf94", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-29611a82eaa3acd7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/EnhancedThemeExtractionProgress.tsx:1240"}, "properties": {"repobilityId": "5661a5ee7daa9ed9", "scanner": "scanner-primary", "fingerprint": "29611a82eaa3acd7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0dc63164ee4121e4", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/components/literature/TranscriptionsTab.tsx:359"}, "properties": {"repobilityId": "1726c1baf14b79da", "scanner": "scanner-primary", "fingerprint": "0dc63164ee4121e4", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-9aa0705098b368a5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/GeneratedSurveyPreview.tsx:273"}, "properties": {"repobilityId": "db8f3a7e60d3fd60", "scanner": "scanner-primary", "fingerprint": "9aa0705098b368a5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-623de275f8b9043f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/InstagramVideoCard.tsx:222"}, "properties": {"repobilityId": "172be0ef75b76d08", "scanner": "scanner-primary", "fingerprint": "623de275f8b9043f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-88c386477cbdd1ec", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/SessionResumeBanner.tsx:121"}, "properties": {"repobilityId": "41347a4fddbee742", "scanner": "scanner-primary", "fingerprint": "88c386477cbdd1ec", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d09684d2c0c26235", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/PipelineProgressDashboard.tsx:76"}, "properties": {"repobilityId": "48e72b105742e6a7", "scanner": "scanner-primary", "fingerprint": "d09684d2c0c26235", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8628d95114338602", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/SemanticBridgeDisplay.tsx:211"}, "properties": {"repobilityId": "6107bfb1365521f6", "scanner": "scanner-primary", "fingerprint": "8628d95114338602", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-270447a0858f6969", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/CorpusManagementPanel.tsx:271"}, "properties": {"repobilityId": "da465a64d893674e", "scanner": "scanner-primary", "fingerprint": "270447a0858f6969", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2c1b5c5af6432b4a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/TikTokVideoCard.tsx:238"}, "properties": {"repobilityId": "c82136326b332eb3", "scanner": "scanner-primary", "fingerprint": "2c1b5c5af6432b4a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cefbe32d833720db", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/SynthesisResultsPanel.tsx:111"}, "properties": {"repobilityId": "b3ec994ab1c164cb", "scanner": "scanner-primary", "fingerprint": "cefbe32d833720db", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b77530c5e2c5a944", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/ExportButton.tsx:158"}, "properties": {"repobilityId": "374535335cee179a", "scanner": "scanner-primary", "fingerprint": "b77530c5e2c5a944", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9dc6857a012fa61a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/components/literature/citation-validation/CitationValidationPanel.tsx:591"}, "properties": {"repobilityId": "3f1c515b92283010", "scanner": "scanner-primary", "fingerprint": "9dc6857a012fa61a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-48b087bdcc5986b9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/components/literature/prisma/PRISMAChecklist.tsx:563"}, "properties": {"repobilityId": "6b35c32b24980d2a", "scanner": "scanner-primary", "fingerprint": "48b087bdcc5986b9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8f8cb7706fef01bd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/components/literature/prisma/PRISMAFlowDiagram.tsx:501"}, "properties": {"repobilityId": "9b9e47e67b9b88ce", "scanner": "scanner-primary", "fingerprint": "8f8cb7706fef01bd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a3d5ea722af99061", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/components/literature/prisma/__tests__/PRISMAFlowDiagram.export.test.tsx:4"}, "properties": {"repobilityId": "b6f90f6986e8365d", "scanner": "scanner-primary", "fingerprint": "a3d5ea722af99061", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-5249ff202d2f9f7d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/components/literature/ai-research-question/AIResearchQuestionAssistant.tsx:1850"}, "properties": {"repobilityId": "343df7816fa3f880", "scanner": "scanner-primary", "fingerprint": "5249ff202d2f9f7d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-92fb5fd8214145d8", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/components/literature/ai-research-question/__tests__/integration.test.tsx:301"}, "properties": {"repobilityId": "7631f17aeed31ffb", "scanner": "scanner-primary", "fingerprint": "92fb5fd8214145d8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-d0bb6062ecf85914", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/components/literature/ai-research-question/__tests__/integration.test.tsx:253"}, "properties": {"repobilityId": "2876c231d34083b5", "scanner": "scanner-primary", "fingerprint": "d0bb6062ecf85914", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-79143e3b2993bb6c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/components/literature/ai-research-question/__tests__/AIResearchQuestionAssistant.test.tsx:177"}, "properties": {"repobilityId": "175ae1ed7e9fb0f5", "scanner": "scanner-primary", "fingerprint": "79143e3b2993bb6c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-199b71fc60d75bf5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/components/literature/sentence-provenance/SentenceProvenanceViewer.tsx:666"}, "properties": {"repobilityId": "eb8e057d18a0e28b", "scanner": "scanner-primary", "fingerprint": "199b71fc60d75bf5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1cdfa02714f751ea", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/progress/ThemeExtractionProgress.tsx:317"}, "properties": {"repobilityId": "9d35990e163a4faa", "scanner": "scanner-primary", "fingerprint": "1cdfa02714f751ea", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-04f19fee080598da", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/evidence/RoBV1Strip.tsx:149"}, "properties": {"repobilityId": "10ad2f3aae0ae384", "scanner": "scanner-primary", "fingerprint": "04f19fee080598da", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6219d11e22d4a9aa", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/evidence/UnifiedEvidencePanel.tsx:238"}, "properties": {"repobilityId": "358a8f70424a95bb", "scanner": "scanner-primary", "fingerprint": "6219d11e22d4a9aa", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b61b9766082bcf3b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/evidence/StudySnapshotChip.tsx:172"}, "properties": {"repobilityId": "0ce1a856170c7613", "scanner": "scanner-primary", "fingerprint": "b61b9766082bcf3b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e0751e621ca96136", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/literature/evidence/ThemeChip.tsx:143"}, "properties": {"repobilityId": "4c6b98d5906a92a0", "scanner": "scanner-primary", "fingerprint": "e0751e621ca96136", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-44d4894ee32c3fab", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/components/interpretation/ThemeExtractionPanel.tsx:42"}, "properties": {"repobilityId": "571e15f2cd7c733a", "scanner": "scanner-primary", "fingerprint": "44d4894ee32c3fab", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-9143d88e2ce65d2a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/interpretation/RecommendationEngine.tsx:733"}, "properties": {"repobilityId": "7562ea5906eb93af", "scanner": "scanner-primary", "fingerprint": "9143d88e2ce65d2a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-67301f1fa167f9d0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/interpretation/QuoteMiner.tsx:653"}, "properties": {"repobilityId": "573847ea9651195c", "scanner": "scanner-primary", "fingerprint": "67301f1fa167f9d0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b8772688a426922d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/components/interpretation/CrossFactorSynthesisPanel.tsx:47"}, "properties": {"repobilityId": "45fcd00b6fdd8ab9", "scanner": "scanner-primary", "fingerprint": "b8772688a426922d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-6df67737382bdb45", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/components/interpretation/FactorNarrativePanel.tsx:57"}, "properties": {"repobilityId": "aedb1b8e4b8cf77c", "scanner": "scanner-primary", "fingerprint": "6df67737382bdb45", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-688858ed0b76f4d0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/stimuli/UploadProgressTracker.tsx:264"}, "properties": {"repobilityId": "c95a13e6efffb122", "scanner": "scanner-primary", "fingerprint": "688858ed0b76f4d0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ebabb487c9443d9d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/stimuli/StimuliUploadSystemV3.tsx:663"}, "properties": {"repobilityId": "9865196461e8e609", "scanner": "scanner-primary", "fingerprint": "ebabb487c9443d9d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d0aa05c88565e844", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/stimuli/StimuliUploadSystem.tsx:383"}, "properties": {"repobilityId": "f6be88bfc19a5da3", "scanner": "scanner-primary", "fingerprint": "d0aa05c88565e844", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c0b56ee75037e5c6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/EdgeProvenanceDrawer.tsx:221"}, "properties": {"repobilityId": "ad64bc5c3a412ef7", "scanner": "scanner-primary", "fingerprint": "c0b56ee75037e5c6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a0b17e7bbcd0a828", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/KnowledgeMapShell.tsx:1319"}, "properties": {"repobilityId": "0bc55f0318de9414", "scanner": "scanner-primary", "fingerprint": "a0b17e7bbcd0a828", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f59b333cdad72e80", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/CorpusSnapshotPanel.tsx:366"}, "properties": {"repobilityId": "3a21dc02897db4b7", "scanner": "scanner-primary", "fingerprint": "f59b333cdad72e80", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c9160211f899bd39", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/panels/MetricsPanel.tsx:635"}, "properties": {"repobilityId": "816c38778ee03d0d", "scanner": "scanner-primary", "fingerprint": "c9160211f899bd39", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6affed186eb4c7ce", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/panels/NodeDetailPanel.tsx:822"}, "properties": {"repobilityId": "66645e28c3e75ff9", "scanner": "scanner-primary", "fingerprint": "6affed186eb4c7ce", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cc0bc079754d49b8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/panels/FilterPanel.tsx:446"}, "properties": {"repobilityId": "6157be6793ce0399", "scanner": "scanner-primary", "fingerprint": "cc0bc079754d49b8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b45d4f04994ddbaf", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/panels/ClusterBrowserPanel.tsx:1108"}, "properties": {"repobilityId": "73150a1f5b3e78a2", "scanner": "scanner-primary", "fingerprint": "b45d4f04994ddbaf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bbf378cd159b9c17", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/panels/ProductivityDashboard.tsx:663"}, "properties": {"repobilityId": "62bbd038216e6408", "scanner": "scanner-primary", "fingerprint": "bbf378cd159b9c17", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f9faf0f057fc9c22", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/panels/CitationTraversalPanel.tsx:234"}, "properties": {"repobilityId": "df5fc4b7ece7a7a4", "scanner": "scanner-primary", "fingerprint": "f9faf0f057fc9c22", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-369cc0c0fcacba60", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/panels/CommunityDetailPanel.tsx:409"}, "properties": {"repobilityId": "9a4b15788cf3fbc7", "scanner": "scanner-primary", "fingerprint": "369cc0c0fcacba60", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-95f1c943c01f6546", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/panels/InterdisciplinarityPanel.tsx:712"}, "properties": {"repobilityId": "31f6b7788bd2d24b", "scanner": "scanner-primary", "fingerprint": "95f1c943c01f6546", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a455be3516bdcd83", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/renderers/NodeTooltip.tsx:180"}, "properties": {"repobilityId": "0bc3663ce1276b19", "scanner": "scanner-primary", "fingerprint": "a455be3516bdcd83", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cec062c0e76507d8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/renderers/CommunityTreemap.tsx:706"}, "properties": {"repobilityId": "ec8cb7dd8dadd63c", "scanner": "scanner-primary", "fingerprint": "cec062c0e76507d8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fe6106f65317ac6a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/share/ShareLinkManager.tsx:192"}, "properties": {"repobilityId": "8f3765e93e776986", "scanner": "scanner-primary", "fingerprint": "fe6106f65317ac6a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f184e566e51d3133", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/toolbar/PurposeSwitcher.tsx:190"}, "properties": {"repobilityId": "cca2cc0fc7ab97cc", "scanner": "scanner-primary", "fingerprint": "f184e566e51d3133", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ce80f4b3f48bcdb2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/toolbar/DiscoverNav.tsx:264"}, "properties": {"repobilityId": "8f12f3a546ce8194", "scanner": "scanner-primary", "fingerprint": "ce80f4b3f48bcdb2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9021bd8ff1a17f65", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/toolbar/CrossViewNav.tsx:47"}, "properties": {"repobilityId": "227c755f1f0481f3", "scanner": "scanner-primary", "fingerprint": "9021bd8ff1a17f65", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-760a71bdfc72aaf2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/views/FieldMapView.tsx:1995"}, "properties": {"repobilityId": "18bc74f37d497180", "scanner": "scanner-primary", "fingerprint": "760a71bdfc72aaf2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ef5a424e25d146e6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/knowledge/views/gap-dashboard/ControversyExplorer.tsx:97"}, "properties": {"repobilityId": "44caf5dc340ce4f1", "scanner": "scanner-primary", "fingerprint": "ef5a424e25d146e6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7d6db999bc8b1ea4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/multimedia/MultiMediaThemeExplorer.tsx:377"}, "properties": {"repobilityId": "6b38b7236dd95f9a", "scanner": "scanner-primary", "fingerprint": "7d6db999bc8b1ea4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-915ff997abe6ab66", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/app/canonical-host-script.tsx:51"}, "properties": {"repobilityId": "0f0173f72b517d47", "scanner": "scanner-primary", "fingerprint": "915ff997abe6ab66", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-cbe1ba99049a73c3", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/app/theme-script.tsx:17"}, "properties": {"repobilityId": "b7f0b28c0ffcfaf8", "scanner": "scanner-primary", "fingerprint": "cbe1ba99049a73c3", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-87c63c26c7072c99", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/app/purpose-tint-script.tsx:69"}, "properties": {"repobilityId": "d02e1965ca59c084", "scanner": "scanner-primary", "fingerprint": "87c63c26c7072c99", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-46b3c7e9feb373fb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/preview-ai-suggestions/page.tsx:227"}, "properties": {"repobilityId": "a851abcfbc58bc19", "scanner": "scanner-primary", "fingerprint": "46b3c7e9feb373fb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e5b21956924b1f23", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/app/(participant)/study/[surveyId]/layout.tsx:145"}, "properties": {"repobilityId": "59cb9b6a4fdcbf2b", "scanner": "scanner-primary", "fingerprint": "e5b21956924b1f23", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-41efa12b2c1356e1", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/app/(participant)/study/post-survey/page.tsx:136"}, "properties": {"repobilityId": "39c5b2acdf75f2e1", "scanner": "scanner-primary", "fingerprint": "41efa12b2c1356e1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-dd4c334caba22a63", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/dashboard/page.tsx:590"}, "properties": {"repobilityId": "1ccec78c94194ba3", "scanner": "scanner-primary", "fingerprint": "dd4c334caba22a63", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c8a54aaaa35a55dc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/studies/create/page.tsx:1506"}, "properties": {"repobilityId": "c1ae0a633c537b7d", "scanner": "scanner-primary", "fingerprint": "c8a54aaaa35a55dc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a0df1215299d31a8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/meta-analysis/MetaAnalysisPanel.tsx:190"}, "properties": {"repobilityId": "757a08ad3e11fdec", "scanner": "scanner-primary", "fingerprint": "a0df1215299d31a8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ea71c1233d9e1f9c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/meta-analysis/ForestPlotChart.tsx:233"}, "properties": {"repobilityId": "10594bb2c25e875e", "scanner": "scanner-primary", "fingerprint": "ea71c1233d9e1f9c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-17280ff4d43a705c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/meta-analysis/page.tsx:113"}, "properties": {"repobilityId": "275f569ba3bee627", "scanner": "scanner-primary", "fingerprint": "17280ff4d43a705c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1415b5f2ccb6b43f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/meta-analysis/PublicationBiasPanel.tsx:292"}, "properties": {"repobilityId": "cf571c42034602e2", "scanner": "scanner-primary", "fingerprint": "1415b5f2ccb6b43f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-82e0e58d3db0cd8f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/cross-study/components/StudySelector.tsx:220"}, "properties": {"repobilityId": "b8efbd4bb43beddc", "scanner": "scanner-primary", "fingerprint": "82e0e58d3db0cd8f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-92d75f1777276880", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/PRISMAScreeningLog.tsx:269"}, "properties": {"repobilityId": "60ca85fd54a212cb", "scanner": "scanner-primary", "fingerprint": "92d75f1777276880", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bfa81d255208a067", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/BibliometricInsights.tsx:184"}, "properties": {"repobilityId": "48d68b82a2c24707", "scanner": "scanner-primary", "fingerprint": "bfa81d255208a067", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fd782a300e38a84f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/SearchArtifactVerifyPanel.tsx:299"}, "properties": {"repobilityId": "3f48d9385344e55e", "scanner": "scanner-primary", "fingerprint": "fd782a300e38a84f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-291becc66ee90f1c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/EnrichmentProgressBar.tsx:65"}, "properties": {"repobilityId": "51a5967ff1f89f63", "scanner": "scanner-primary", "fingerprint": "291becc66ee90f1c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d4222049f41843fd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/AddByIdentifierModal.tsx:366"}, "properties": {"repobilityId": "ca933446ffc7c13d", "scanner": "scanner-primary", "fingerprint": "d4222049f41843fd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d715db5cf31205b5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/PaperCard.tsx:328"}, "properties": {"repobilityId": "62030a8a56a11cd4", "scanner": "scanner-primary", "fingerprint": "d715db5cf31205b5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-07edafd907e2f19c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/ReferenceSidebar.tsx:242"}, "properties": {"repobilityId": "4902559bd6c355a9", "scanner": "scanner-primary", "fingerprint": "07edafd907e2f19c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8a2c7b0e3eb4bbfb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/SmartCollectionEditor.tsx:261"}, "properties": {"repobilityId": "cf4f3e89d6895bd8", "scanner": "scanner-primary", "fingerprint": "8a2c7b0e3eb4bbfb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-04e800a730bf67ba", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/PaperDetailDrawer.tsx:121"}, "properties": {"repobilityId": "b32ae9ecd56abb41", "scanner": "scanner-primary", "fingerprint": "04e800a730bf67ba", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c5ed64998509b657", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/components/ClaimSearchResults.tsx:151"}, "properties": {"repobilityId": "dc12697508677a0f", "scanner": "scanner-primary", "fingerprint": "c5ed64998509b657", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7ffc15e28f7e4331", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/references/tabs/LibraryTabContent.tsx:228"}, "properties": {"repobilityId": "ccd72e8c0c2da73e", "scanner": "scanner-primary", "fingerprint": "7ffc15e28f7e4331", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8246652f74f5a358", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/themes/components/ThemeSidebar.tsx:189"}, "properties": {"repobilityId": "931bb5ec7617f2d4", "scanner": "scanner-primary", "fingerprint": "8246652f74f5a358", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-62d2a1f390b5f550", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/themes/components/ThemeMergeDialog.tsx:158"}, "properties": {"repobilityId": "a097d9704cc65163", "scanner": "scanner-primary", "fingerprint": "62d2a1f390b5f550", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-523837f1375a1d01", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/themes/components/ThemeEvidencePanel.tsx:110"}, "properties": {"repobilityId": "a3a2861fe23dd19a", "scanner": "scanner-primary", "fingerprint": "523837f1375a1d01", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9bfa57fe1eecb6cb", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/app/(researcher)/discover/literature/error.tsx:36"}, "properties": {"repobilityId": "82cc2e35011c4195", "scanner": "scanner-primary", "fingerprint": "9bfa57fe1eecb6cb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-a22d8033bcbb776c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/prisma/page.tsx:268"}, "properties": {"repobilityId": "4e67493e4b654de6", "scanner": "scanner-primary", "fingerprint": "a22d8033bcbb776c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6551cf0032884139", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/CodeHighlighter.tsx:391"}, "properties": {"repobilityId": "cceae36cbfdf92ab", "scanner": "scanner-primary", "fingerprint": "6551cf0032884139", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-352d4054429bfe1d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/PrepareForAnalysisCTA.tsx:136"}, "properties": {"repobilityId": "6bdfebfcb3972861", "scanner": "scanner-primary", "fingerprint": "352d4054429bfe1d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-45b642641ba49625", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/PaperCard.tsx:297"}, "properties": {"repobilityId": "4b319a7eaabc8cda", "scanner": "scanner-primary", "fingerprint": "45b642641ba49625", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d2a6a98685efe126", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/PurposeBanner.tsx:173"}, "properties": {"repobilityId": "951645a1b0e1cf82", "scanner": "scanner-primary", "fingerprint": "d2a6a98685efe126", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e6378ceaa26a5533", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/UnifiedSearchHero.tsx:5361"}, "properties": {"repobilityId": "25a01a53e39dbbec", "scanner": "scanner-primary", "fingerprint": "e6378ceaa26a5533", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-607714e1872e10c8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/ShareStudyPanel.tsx:113"}, "properties": {"repobilityId": "37d268a174f18480", "scanner": "scanner-primary", "fingerprint": "607714e1872e10c8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-37e3795432b21bcf", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/InstitutionSelector.tsx:151"}, "properties": {"repobilityId": "570a540b50d66a51", "scanner": "scanner-primary", "fingerprint": "37e3795432b21bcf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ff0113f4dd093fe7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/CorpusSnapshotCTA.tsx:26"}, "properties": {"repobilityId": "d6ed38b57e3ee39e", "scanner": "scanner-primary", "fingerprint": "ff0113f4dd093fe7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-aaedb4ce6cbdd26a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/ResearchAccessMenu.tsx:700"}, "properties": {"repobilityId": "ec49d4d44baa49ca", "scanner": "scanner-primary", "fingerprint": "aaedb4ce6cbdd26a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8b1f6229dffb4581", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/paper-card/PaperCardErrorBoundary.tsx:133"}, "properties": {"repobilityId": "2f89e61d5371619e", "scanner": "scanner-primary", "fingerprint": "8b1f6229dffb4581", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8898c8d63043c09a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/paper-card/PaperMetadata.tsx:130"}, "properties": {"repobilityId": "a18e472bf939db54", "scanner": "scanner-primary", "fingerprint": "8898c8d63043c09a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3a6ce8ee6ded5dda", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/q-methodology/ThemeDistributionChart.tsx:106"}, "properties": {"repobilityId": "28dc052b9ff4b009", "scanner": "scanner-primary", "fingerprint": "3a6ce8ee6ded5dda", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dbbba1b62005b4da", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/app/(researcher)/discover/literature/components/q-methodology/ControversyCoveragePanel.tsx:539"}, "properties": {"repobilityId": "5f5ad03024c4c856", "scanner": "scanner-primary", "fingerprint": "dbbba1b62005b4da", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-45ada1a89d28bf15", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/app/(researcher)/discover/literature/components/q-methodology/QSortInstructionBuilder.tsx:127"}, "properties": {"repobilityId": "1c590ddfef402446", "scanner": "scanner-primary", "fingerprint": "45ada1a89d28bf15", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3623f1b51bab6d14", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/q-methodology/ThemeCoherencePanel.tsx:747"}, "properties": {"repobilityId": "37bf019b475a00f5", "scanner": "scanner-primary", "fingerprint": "3623f1b51bab6d14", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3907e74c73db5199", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/app/(researcher)/discover/literature/components/q-methodology/__tests__/ThemeDiversityPanel.test.tsx:592"}, "properties": {"repobilityId": "b7f0b3ccc7f7f454", "scanner": "scanner-primary", "fingerprint": "3907e74c73db5199", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-84dbcff1566cb525", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/app/(researcher)/discover/literature/components/q-methodology/QSortInstructionBuilder/Step4_PreviewExport.tsx:207"}, "properties": {"repobilityId": "36b77546db3b54a4", "scanner": "scanner-primary", "fingerprint": "84dbcff1566cb525", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-b15000529ff17819", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/app/(researcher)/discover/literature/components/social-media/TikTokSearchSection.tsx:117"}, "properties": {"repobilityId": "2a20d115f317c2a4", "scanner": "scanner-primary", "fingerprint": "b15000529ff17819", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-1b0085df0c287526", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/SearchPipelineOrchestra.tsx:221"}, "properties": {"repobilityId": "dd1248815f99ff97", "scanner": "scanner-primary", "fingerprint": "1b0085df0c287526", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b39e15cabd50e220", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/MinimizedPipelineBar.tsx:55"}, "properties": {"repobilityId": "2ccb5097c9a4390e", "scanner": "scanner-primary", "fingerprint": "b39e15cabd50e220", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-584882ecaf56b485", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/PipelineSummaryBanner.tsx:142"}, "properties": {"repobilityId": "e88363b6ecc0d09a", "scanner": "scanner-primary", "fingerprint": "584882ecaf56b485", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-50c4b5df8ac661ef", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/StageDetailPanel.tsx:409"}, "properties": {"repobilityId": "aff05faaa755d6c2", "scanner": "scanner-primary", "fingerprint": "50c4b5df8ac661ef", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-228c490b70dfea46", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/MethodologyReport.tsx:768"}, "properties": {"repobilityId": "d07bb2cdbd106d05", "scanner": "scanner-primary", "fingerprint": "228c490b70dfea46", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5a7f23eeff2fa554", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/hooks/__tests__/useCountStabilization.test.ts:108"}, "properties": {"repobilityId": "381e9b8c0b6e01fc", "scanner": "scanner-primary", "fingerprint": "5a7f23eeff2fa554", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-45b7efaf6b1a7528", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/citations/page.tsx:620"}, "properties": {"repobilityId": "84221aa063a50813", "scanner": "scanner-primary", "fingerprint": "45b7efaf6b1a7528", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1ad0bea3c95335f6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/coding/components/CodeCooccurrenceView.tsx:242"}, "properties": {"repobilityId": "ef89dc6bc9928b38", "scanner": "scanner-primary", "fingerprint": "1ad0bea3c95335f6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-39f7c1a6cc1b9e5c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/coding/components/CodeFrequencyMatrix.tsx:197"}, "properties": {"repobilityId": "4264679a096d1b0f", "scanner": "scanner-primary", "fingerprint": "39f7c1a6cc1b9e5c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-49b620db3801e30e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/risk-of-bias/page.tsx:214"}, "properties": {"repobilityId": "ad00d8bdada3b333", "scanner": "scanner-primary", "fingerprint": "49b620db3801e30e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-016280548a421f19", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/screening/page.tsx:1478"}, "properties": {"repobilityId": "05f7f0bd3a994dfa", "scanner": "scanner-primary", "fingerprint": "016280548a421f19", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9b23ed0309fa859c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/transcriptions/page.tsx:238"}, "properties": {"repobilityId": "ea5c02722a98f66a", "scanner": "scanner-primary", "fingerprint": "9b23ed0309fa859c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6d0f6c49fe2a5e03", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/collaboration/components/ConflictResolutionPanel.tsx:96"}, "properties": {"repobilityId": "a394ff90fed18ac5", "scanner": "scanner-primary", "fingerprint": "6d0f6c49fe2a5e03", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b048bb56e3da939e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/literature/collaboration/components/ReliabilityDashboard.tsx:286"}, "properties": {"repobilityId": "1154e6a94cea04d8", "scanner": "scanner-primary", "fingerprint": "b048bb56e3da939e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bc23827551897850", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapEvolutionView.tsx:408"}, "properties": {"repobilityId": "107932a0ef5f6f7f", "scanner": "scanner-primary", "fingerprint": "bc23827551897850", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e2fb45073ccf2bf9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapAuditDrawer.tsx:601"}, "properties": {"repobilityId": "d861f1cf4f4079fc", "scanner": "scanner-primary", "fingerprint": "e2fb45073ccf2bf9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f572826d90737884", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapSnapshotHistory.tsx:392"}, "properties": {"repobilityId": "24bad2016c20de36", "scanner": "scanner-primary", "fingerprint": "f572826d90737884", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-064ea79ff0e7721c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapRadar.tsx:253"}, "properties": {"repobilityId": "9adcfeafd30ad34c", "scanner": "scanner-primary", "fingerprint": "064ea79ff0e7721c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ea27d31b9e4606ca", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapRefinementFlow.tsx:1316"}, "properties": {"repobilityId": "a70b7033ffe55b19", "scanner": "scanner-primary", "fingerprint": "ea27d31b9e4606ca", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1cf5cc3c35ab6682", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapForestPlot.tsx:1180"}, "properties": {"repobilityId": "c173c881c128d9f4", "scanner": "scanner-primary", "fingerprint": "1cf5cc3c35ab6682", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-44500db6676c7799", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/ResultRunDetailsDrawer.tsx:106"}, "properties": {"repobilityId": "5d5ac5bdb7946f83", "scanner": "scanner-primary", "fingerprint": "44500db6676c7799", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cee283a4a3850568", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/TimeToSignalHero.tsx:495"}, "properties": {"repobilityId": "615c82e42babbbe8", "scanner": "scanner-primary", "fingerprint": "cee283a4a3850568", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-89ffde98d954f362", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapPortfolioView.tsx:119"}, "properties": {"repobilityId": "bfd0c377e508be2f", "scanner": "scanner-primary", "fingerprint": "89ffde98d954f362", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7ba72c93bbf351f1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapReviewPanel.tsx:360"}, "properties": {"repobilityId": "356e482dc9bfd2a6", "scanner": "scanner-primary", "fingerprint": "7ba72c93bbf351f1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5173047d3567d102", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/MinimizedGapPipelineBar.tsx:69"}, "properties": {"repobilityId": "47f060c0649c4e31", "scanner": "scanner-primary", "fingerprint": "5173047d3567d102", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a6deb439150888a7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapsPageHeader.tsx:156"}, "properties": {"repobilityId": "47353a4fe8da3b43", "scanner": "scanner-primary", "fingerprint": "a6deb439150888a7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9baf850183d1849f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/GapLandscape.tsx:796"}, "properties": {"repobilityId": "6a5aa0a0a59d8abf", "scanner": "scanner-primary", "fingerprint": "9baf850183d1849f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-24eabb657fa024ec", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/discover/gaps/components/PaperTracePanel.tsx:1757"}, "properties": {"repobilityId": "e58a8238306c102c", "scanner": "scanner-primary", "fingerprint": "24eabb657fa024ec", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c5045291520d224d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/app/(researcher)/discover/gaps/hooks/useGapAnalysisPipeline.ts:3356"}, "properties": {"repobilityId": "b19df213c63ed991", "scanner": "scanner-primary", "fingerprint": "c5045291520d224d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-b3a45b9d67430cb2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/home/page.tsx:496"}, "properties": {"repobilityId": "4e3725fccc77f747", "scanner": "scanner-primary", "fingerprint": "b3a45b9d67430cb2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b1d1c7edda820c38", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(researcher)/dev-landing-preview/page.tsx:392"}, "properties": {"repobilityId": "da97fc3ce53c1261", "scanner": "scanner-primary", "fingerprint": "b1d1c7edda820c38", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-53062b32355b8c86", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/app/(researcher)/reports/[studyId]/page.tsx:547"}, "properties": {"repobilityId": "5dba67e396295680", "scanner": "scanner-primary", "fingerprint": "53062b32355b8c86", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-7610983286a9d277", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/lib/stores/__tests__/constants-parity.test.ts:361"}, "properties": {"repobilityId": "4b23637ef98af2ad", "scanner": "scanner-primary", "fingerprint": "7610983286a9d277", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-54f09e1a526990e9", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/lib/api/services/analysis.service.ts:217"}, "properties": {"repobilityId": "8c78673d120f40ec", "scanner": "scanner-primary", "fingerprint": "54f09e1a526990e9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-139ed2876bba5bbc", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/lib/utils/sanitize-html.ts:318"}, "properties": {"repobilityId": "6ca57549619e6aae", "scanner": "scanner-primary", "fingerprint": "139ed2876bba5bbc", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-c92d518c63a261a3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/lib/viz/__tests__/perf-harness.test.ts:245"}, "properties": {"repobilityId": "b2f26f46f82ba73b", "scanner": "scanner-primary", "fingerprint": "c92d518c63a261a3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-499b8f9fddf28606", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/lib/react-query/config.ts:386"}, "properties": {"repobilityId": "09f361f0660e2987", "scanner": "scanner-primary", "fingerprint": "499b8f9fddf28606", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-d79cec58a9c5f6ca", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/lib/hooks/useThemeApiHandlers.ts:562"}, "properties": {"repobilityId": "4b861a5ba43b0d96", "scanner": "scanner-primary", "fingerprint": "d79cec58a9c5f6ca", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-a2b1f46d109edc3f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/lib/services/search-suggestions.service.ts:1060"}, "properties": {"repobilityId": "9db832dd2a16bbda", "scanner": "scanner-primary", "fingerprint": "a2b1f46d109edc3f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-d3eca81c164f5efd", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/lib/services/study-metrics.service.ts:80"}, "properties": {"repobilityId": "ee3771a10f036c2f", "scanner": "scanner-primary", "fingerprint": "d3eca81c164f5efd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-3b7c635fb037cf41", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/lib/services/auth-metrics.service.ts:183"}, "properties": {"repobilityId": "1b3e2d46658cc9aa", "scanner": "scanner-primary", "fingerprint": "3b7c635fb037cf41", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-342d9c7589282a1e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/lib/accessibility/__tests__/eslint-a11y-test.tsx:8"}, "properties": {"repobilityId": "5ebc25fbf88927fd", "scanner": "scanner-primary", "fingerprint": "342d9c7589282a1e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5e92bf28a7e15157", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/hooks/useParticipantFlow.ts:538"}, "properties": {"repobilityId": "acb9748f0bb47f71", "scanner": "scanner-primary", "fingerprint": "5e92bf28a7e15157", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-72f03687bd5fe4fd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/public/service-worker.js:28"}, "properties": {"repobilityId": "7c7752e8e00655d6", "scanner": "scanner-primary", "fingerprint": "72f03687bd5fe4fd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1d56f68087cf8e78", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/rollback-testing.spec.ts:317"}, "properties": {"repobilityId": "c91782784fb69de6", "scanner": "scanner-primary", "fingerprint": "1d56f68087cf8e78", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0c330c7361a4132a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/manual-ai-suggestions-429-check.spec.ts:74"}, "properties": {"repobilityId": "45a44615e2600098", "scanner": "scanner-primary", "fingerprint": "0c330c7361a4132a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b8e3bbb459195e52", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/sgr-live-inspection.spec.ts:84"}, "properties": {"repobilityId": "ba28ae9ef9aed6d7", "scanner": "scanner-primary", "fingerprint": "b8e3bbb459195e52", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6125cd3d434b8746", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/scientific-ux-proof.spec.ts:32"}, "properties": {"repobilityId": "a6b04ccbb002ef08", "scanner": "scanner-primary", "fingerprint": "6125cd3d434b8746", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-093f09be17a183a3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/real-proof.spec.ts:19"}, "properties": {"repobilityId": "9435da1a3c13caea", "scanner": "scanner-primary", "fingerprint": "093f09be17a183a3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-df66b9f0a6ba2f33", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/orcid-enterprise-flow.spec.ts:73"}, "properties": {"repobilityId": "490ecb43a07a0c65", "scanner": "scanner-primary", "fingerprint": "df66b9f0a6ba2f33", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-555d75a0b9446b40", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/lit-to-km-pipeline.spec.ts:99"}, "properties": {"repobilityId": "9a7580a32c6ddcac", "scanner": "scanner-primary", "fingerprint": "555d75a0b9446b40", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-27769dc9f1743d50", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/particle-persist-refine.spec.ts:33"}, "properties": {"repobilityId": "797c6022f3b38aa6", "scanner": "scanner-primary", "fingerprint": "27769dc9f1743d50", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-91269586156de590", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/search-hero-accessibility.spec.ts:108"}, "properties": {"repobilityId": "900d64befb167608", "scanner": "scanner-primary", "fingerprint": "91269586156de590", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b05557d4086c398f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/sgr-with-papers.spec.ts:47"}, "properties": {"repobilityId": "dbfce36f178b4986", "scanner": "scanner-primary", "fingerprint": "b05557d4086c398f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-02e52ae264ce2796", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/load-testing.spec.ts:194"}, "properties": {"repobilityId": "444e9a4c9d1d12d5", "scanner": "scanner-primary", "fingerprint": "02e52ae264ce2796", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-16df145563116675", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/phase-10970-refinement-loop.spec.ts:40"}, "properties": {"repobilityId": "260469e1e27a927d", "scanner": "scanner-primary", "fingerprint": "16df145563116675", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8d1e681c9a621162", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/auto-refresh-pipeline.spec.ts:52"}, "properties": {"repobilityId": "803f50839090fd02", "scanner": "scanner-primary", "fingerprint": "8d1e681c9a621162", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-37281233b042a99e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/source-retry-flow.spec.ts:58"}, "properties": {"repobilityId": "8b45964601bce8c2", "scanner": "scanner-primary", "fingerprint": "37281233b042a99e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8cfe44328c9fd9de", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/moat-verification.spec.ts:24"}, "properties": {"repobilityId": "79d869fd294858af", "scanner": "scanner-primary", "fingerprint": "8cfe44328c9fd9de", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a370f69a25678e49", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/orcid-login.spec.ts:10"}, "properties": {"repobilityId": "46a6382f5d42bea4", "scanner": "scanner-primary", "fingerprint": "a370f69a25678e49", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6db27d0014555ca0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/literature-page-smoke.spec.ts:27"}, "properties": {"repobilityId": "74f26efedda5ca5a", "scanner": "scanner-primary", "fingerprint": "6db27d0014555ca0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2bdb3db879200c76", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/theme-extraction-performance.spec.ts:247"}, "properties": {"repobilityId": "582f023d11dc9a15", "scanner": "scanner-primary", "fingerprint": "2bdb3db879200c76", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-db12f44982f51665", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/orcid-login-paper-fetch.spec.ts:53"}, "properties": {"repobilityId": "45e5253ea254fa85", "scanner": "scanner-primary", "fingerprint": "db12f44982f51665", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5ac773dab9bc3409", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/d1-truncation-banner.spec.ts:43"}, "properties": {"repobilityId": "1b09432edec0a152", "scanner": "scanner-primary", "fingerprint": "5ac773dab9bc3409", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-62c87ec7662f3afe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gaps-page-full-audit.spec.ts:123"}, "properties": {"repobilityId": "c4331f8f30cda8d5", "scanner": "scanner-primary", "fingerprint": "62c87ec7662f3afe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cdd4917731e1bf1c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/moat-complete-analysis.spec.ts:21"}, "properties": {"repobilityId": "ee831bf25143dfe1", "scanner": "scanner-primary", "fingerprint": "cdd4917731e1bf1c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f3a1ee4f22592c5f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/theme-extraction-error-injection.spec.ts:306"}, "properties": {"repobilityId": "ca206e1041623738", "scanner": "scanner-primary", "fingerprint": "f3a1ee4f22592c5f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6ead7180b6dd46f0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/fresh-loop-proof.spec.ts:19"}, "properties": {"repobilityId": "2241b1e448946433", "scanner": "scanner-primary", "fingerprint": "6ead7180b6dd46f0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8540d441ee38097f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/orcid-complete-dataflow.spec.ts:124"}, "properties": {"repobilityId": "9f2ee38645655950", "scanner": "scanner-primary", "fingerprint": "8540d441ee38097f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aca200a700ced87b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/global-setup.ts:199"}, "properties": {"repobilityId": "b8b6980052a208d6", "scanner": "scanner-primary", "fingerprint": "aca200a700ced87b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-90c46c7e475bae7d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/orcid-full-flow.spec.ts:58"}, "properties": {"repobilityId": "76872a0ac7689376", "scanner": "scanner-primary", "fingerprint": "90c46c7e475bae7d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-670f62a3a5608671", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/references-export-dropdown.spec.ts:49"}, "properties": {"repobilityId": "b9c26b6536f5434f", "scanner": "scanner-primary", "fingerprint": "670f62a3a5608671", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e0db24d9a77fcbbb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/cross-browser-theme-extraction.spec.ts:362"}, "properties": {"repobilityId": "579ba5f3147f2cb7", "scanner": "scanner-primary", "fingerprint": "e0db24d9a77fcbbb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2db54d33385826b7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/progressive-search-animation.spec.ts:50"}, "properties": {"repobilityId": "f21b9ce544d53f7b", "scanner": "scanner-primary", "fingerprint": "2db54d33385826b7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e37b77f13da4522b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/decay-pill.spec.ts:191"}, "properties": {"repobilityId": "7d8deebdb6bd2e5b", "scanner": "scanner-primary", "fingerprint": "e37b77f13da4522b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ce04f49cd8cac3ad", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/time-to-signal.spec.ts:454"}, "properties": {"repobilityId": "61d2e3e2f80a6fdd", "scanner": "scanner-primary", "fingerprint": "ce04f49cd8cac3ad", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c1f9d56deafef8e0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/contradicting-evidence.spec.ts:248"}, "properties": {"repobilityId": "a1af319a52188c45", "scanner": "scanner-primary", "fingerprint": "c1f9d56deafef8e0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e2c93e4a2510c9c1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/forest-plot.spec.ts:248"}, "properties": {"repobilityId": "1ca43dfa81e919e1", "scanner": "scanner-primary", "fingerprint": "e2c93e4a2510c9c1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e2870af34cdeb5b5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/runtime-contracts.spec.ts:48"}, "properties": {"repobilityId": "fb92a68b0f7751a2", "scanner": "scanner-primary", "fingerprint": "e2870af34cdeb5b5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5daa045c10d12b38", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/portfolio-matrix.spec.ts:335"}, "properties": {"repobilityId": "8d1fd6b95cd332fd", "scanner": "scanner-primary", "fingerprint": "5daa045c10d12b38", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-924ff7489b8626f0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/ui-cold-load.spec.ts:65"}, "properties": {"repobilityId": "7b1b47c9372d94cc", "scanner": "scanner-primary", "fingerprint": "924ff7489b8626f0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f84fdd2c502e9e4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/reproducibility.spec.ts:435"}, "properties": {"repobilityId": "6a1988b13c2dbb42", "scanner": "scanner-primary", "fingerprint": "2f84fdd2c502e9e4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4a8d6232b581e6a5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/wave6-ux-audit.spec.ts:24"}, "properties": {"repobilityId": "536f2ca777a188ae", "scanner": "scanner-primary", "fingerprint": "4a8d6232b581e6a5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b9fcd0ec6a75d460", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/count-consistency.spec.ts:115"}, "properties": {"repobilityId": "76a6f07ae1bb36c1", "scanner": "scanner-primary", "fingerprint": "b9fcd0ec6a75d460", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5a2d7e30657e9cd7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/top-1-exit-criteria.spec.ts:281"}, "properties": {"repobilityId": "beabebb2b7fd149f", "scanner": "scanner-primary", "fingerprint": "5a2d7e30657e9cd7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b2185c2e5b7dd354", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/user-journey-create-study-to-gaps.spec.ts:55"}, "properties": {"repobilityId": "11ebfa1dcbca0e00", "scanner": "scanner-primary", "fingerprint": "b2185c2e5b7dd354", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6c3312e2a4011f32", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/wave6-browser-verify.spec.ts:33"}, "properties": {"repobilityId": "431e35770d3afaa8", "scanner": "scanner-primary", "fingerprint": "6c3312e2a4011f32", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e0db9dc72fe1b644", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/fixtures/seed-gap-run.smoke.spec.ts:49"}, "properties": {"repobilityId": "4ad8c14818f25e92", "scanner": "scanner-primary", "fingerprint": "e0db9dc72fe1b644", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8f3c3b1fe304290e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/gap-page/fixtures/seed-gap-run.ts:642"}, "properties": {"repobilityId": "239cbff03a4aeb2c", "scanner": "scanner-primary", "fingerprint": "8f3c3b1fe304290e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3ec26945aebf76b9", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-b6208591.spec.ts:7"}, "properties": {"repobilityId": "8dfb9174a8e75eac", "scanner": "scanner-primary", "fingerprint": "3ec26945aebf76b9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-4a9745c1cf7fcd2e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-60a1da8f.spec.ts:7"}, "properties": {"repobilityId": "55d5db39bcec4196", "scanner": "scanner-primary", "fingerprint": "4a9745c1cf7fcd2e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-2ab672016d7491ec", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-d6e61c1c.spec.ts:7"}, "properties": {"repobilityId": "5ab5e01c0f29cdb6", "scanner": "scanner-primary", "fingerprint": "2ab672016d7491ec", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-00a053f44bb6eeb6", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-ae8cb716.spec.ts:7"}, "properties": {"repobilityId": "3bb6b9279fecef3b", "scanner": "scanner-primary", "fingerprint": "00a053f44bb6eeb6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-16d54ccad8cfad38", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-a66ec508.spec.ts:7"}, "properties": {"repobilityId": "be4a10aa4fe22208", "scanner": "scanner-primary", "fingerprint": "16d54ccad8cfad38", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-7b247f7e757da22e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-3444d139.spec.ts:7"}, "properties": {"repobilityId": "dde967ac6cd4938c", "scanner": "scanner-primary", "fingerprint": "7b247f7e757da22e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-6acdb0734b9293a3", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-68e4c2fe.spec.ts:7"}, "properties": {"repobilityId": "c2f5a3af8a2cf2cf", "scanner": "scanner-primary", "fingerprint": "6acdb0734b9293a3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-91c17a3fd4bb5e07", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-1e68faa4.spec.ts:7"}, "properties": {"repobilityId": "2a69c87d365bcdd3", "scanner": "scanner-primary", "fingerprint": "91c17a3fd4bb5e07", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-b65b65167277a475", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-fdf2de2d.spec.ts:7"}, "properties": {"repobilityId": "de8349431612fb09", "scanner": "scanner-primary", "fingerprint": "b65b65167277a475", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-166dae12ab30a643", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-1fdda98d.spec.ts:7"}, "properties": {"repobilityId": "573f48149fd830cc", "scanner": "scanner-primary", "fingerprint": "166dae12ab30a643", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-caccc2f2a2b01271", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-ef55d1aa.spec.ts:7"}, "properties": {"repobilityId": "ce75094fe3fb56bb", "scanner": "scanner-primary", "fingerprint": "caccc2f2a2b01271", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-a09bdabdd64733a5", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-91414307.spec.ts:7"}, "properties": {"repobilityId": "d6fc87f6d486390c", "scanner": "scanner-primary", "fingerprint": "a09bdabdd64733a5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-6739f0433adfb2f0", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/action_button-action_button-433c0070.spec.ts:7"}, "properties": {"repobilityId": "b1ec371c2d67c61b", "scanner": "scanner-primary", "fingerprint": "6739f0433adfb2f0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-be203ca560ee6acf", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-24e45a49.spec.ts:7"}, "properties": {"repobilityId": "4f697e19b551bff8", "scanner": "scanner-primary", "fingerprint": "be203ca560ee6acf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-3334c2bec5302f74", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-8996ec34.spec.ts:7"}, "properties": {"repobilityId": "589016462c4e6998", "scanner": "scanner-primary", "fingerprint": "3334c2bec5302f74", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-4082f9cf53b0d11d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-7f0c8851.spec.ts:7"}, "properties": {"repobilityId": "685440c9b6227204", "scanner": "scanner-primary", "fingerprint": "4082f9cf53b0d11d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-ea2ed0814caacb50", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-985992e4.spec.ts:7"}, "properties": {"repobilityId": "8666f9caf2f348a0", "scanner": "scanner-primary", "fingerprint": "ea2ed0814caacb50", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-5e715424d9d750ed", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-7e2cefba.spec.ts:7"}, "properties": {"repobilityId": "914f0cbb28022aca", "scanner": "scanner-primary", "fingerprint": "5e715424d9d750ed", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-d7054375835ec1ef", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-d2f7c396.spec.ts:7"}, "properties": {"repobilityId": "24ade77f0ace8693", "scanner": "scanner-primary", "fingerprint": "d7054375835ec1ef", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-ec860f7657240e5f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-54820cc3.spec.ts:7"}, "properties": {"repobilityId": "5e4782dd680ed247", "scanner": "scanner-primary", "fingerprint": "ec860f7657240e5f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-98afe03893ace05d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-7131b95c.spec.ts:7"}, "properties": {"repobilityId": "866b89112e9e36f1", "scanner": "scanner-primary", "fingerprint": "98afe03893ace05d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-ed3d60c41e9c492f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-01c44ff3.spec.ts:7"}, "properties": {"repobilityId": "08b863cdef749bae", "scanner": "scanner-primary", "fingerprint": "ed3d60c41e9c492f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-c8eed77238a33b1d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-027c6799.spec.ts:7"}, "properties": {"repobilityId": "3f5edbf916db252a", "scanner": "scanner-primary", "fingerprint": "c8eed77238a33b1d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-8ca08699862355f5", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-18b64b78.spec.ts:7"}, "properties": {"repobilityId": "3a191a98514bd7bc", "scanner": "scanner-primary", "fingerprint": "8ca08699862355f5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-e806c039e6546f88", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-b47ae093.spec.ts:7"}, "properties": {"repobilityId": "c09c7d74b116fc08", "scanner": "scanner-primary", "fingerprint": "e806c039e6546f88", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-a286533a684b472b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-4dbc8b37.spec.ts:7"}, "properties": {"repobilityId": "a6b7e677e14761ef", "scanner": "scanner-primary", "fingerprint": "a286533a684b472b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-ce65859e88e32d0c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-7b70004d.spec.ts:7"}, "properties": {"repobilityId": "bdec6d9de1411d73", "scanner": "scanner-primary", "fingerprint": "ce65859e88e32d0c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-0f38a5d15a155e1f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-eebae3be.spec.ts:7"}, "properties": {"repobilityId": "11433f36f62692ca", "scanner": "scanner-primary", "fingerprint": "0f38a5d15a155e1f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-1d73a11702158339", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-b36dc6e0.spec.ts:7"}, "properties": {"repobilityId": "db9df8023016b0b1", "scanner": "scanner-primary", "fingerprint": "1d73a11702158339", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-56c2beb42af02b1a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-3904fc29.spec.ts:7"}, "properties": {"repobilityId": "5a4b52e2ded1121c", "scanner": "scanner-primary", "fingerprint": "56c2beb42af02b1a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-4e3d6242f5098f85", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-c92254f2.spec.ts:7"}, "properties": {"repobilityId": "5cbc64ff02fcd703", "scanner": "scanner-primary", "fingerprint": "4e3d6242f5098f85", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-4386cdc74e8cc38b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-5279634c.spec.ts:7"}, "properties": {"repobilityId": "c9a3228655d65cda", "scanner": "scanner-primary", "fingerprint": "4386cdc74e8cc38b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-9d66e66b81b935f8", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-f75c1d4e.spec.ts:7"}, "properties": {"repobilityId": "dde1026def444878", "scanner": "scanner-primary", "fingerprint": "9d66e66b81b935f8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-cb6e1baf5d4268a9", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-98d98a8f.spec.ts:7"}, "properties": {"repobilityId": "040b41011fa11e36", "scanner": "scanner-primary", "fingerprint": "cb6e1baf5d4268a9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-451f1492503310e1", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-ab9d0d3a.spec.ts:7"}, "properties": {"repobilityId": "c0131e8627d21445", "scanner": "scanner-primary", "fingerprint": "451f1492503310e1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-792d1b0f4ed4328b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-4607ddcf.spec.ts:7"}, "properties": {"repobilityId": "7d897ea8a97a425e", "scanner": "scanner-primary", "fingerprint": "792d1b0f4ed4328b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-f259b4990272f24f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-6e0d4cb2.spec.ts:7"}, "properties": {"repobilityId": "4932393348ddd706", "scanner": "scanner-primary", "fingerprint": "f259b4990272f24f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-6c9c22b47e8d6694", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-a72a78e1.spec.ts:7"}, "properties": {"repobilityId": "269a974179c12a6c", "scanner": "scanner-primary", "fingerprint": "6c9c22b47e8d6694", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-0b49709c07adc748", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-310c89d4.spec.ts:7"}, "properties": {"repobilityId": "14b10e4f4b7ecc53", "scanner": "scanner-primary", "fingerprint": "0b49709c07adc748", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-19d05f7a1efbef17", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-0d6054af.spec.ts:7"}, "properties": {"repobilityId": "fccbe7a9af41dfd4", "scanner": "scanner-primary", "fingerprint": "19d05f7a1efbef17", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-00a95974d7f238d9", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-109938a4.spec.ts:7"}, "properties": {"repobilityId": "2c0f2e017f4b6bd6", "scanner": "scanner-primary", "fingerprint": "00a95974d7f238d9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-4fa270e0fb73d51c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-3429c6c8.spec.ts:7"}, "properties": {"repobilityId": "b8565cfa7cfd038d", "scanner": "scanner-primary", "fingerprint": "4fa270e0fb73d51c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-10f7e7ab4e4b0f16", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-66b3d6ab.spec.ts:7"}, "properties": {"repobilityId": "d2f5407704efd7fb", "scanner": "scanner-primary", "fingerprint": "10f7e7ab4e4b0f16", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-5abfc92c0abda1f4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-9c736d04.spec.ts:7"}, "properties": {"repobilityId": "e4583457cf9b7803", "scanner": "scanner-primary", "fingerprint": "5abfc92c0abda1f4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-d09a973d332827be", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-cbbd4bd4.spec.ts:7"}, "properties": {"repobilityId": "44c58fc2cc40836a", "scanner": "scanner-primary", "fingerprint": "d09a973d332827be", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-f61f5f9d2d23f5f5", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-323f3bad.spec.ts:7"}, "properties": {"repobilityId": "3329461ac2dd74e0", "scanner": "scanner-primary", "fingerprint": "f61f5f9d2d23f5f5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-3ba12c1266869fbe", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-a80af22e.spec.ts:7"}, "properties": {"repobilityId": "d792068ae6e3cdba", "scanner": "scanner-primary", "fingerprint": "3ba12c1266869fbe", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-0e40f570511d5279", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-5edffeae.spec.ts:7"}, "properties": {"repobilityId": "c7146106c7aa9d0c", "scanner": "scanner-primary", "fingerprint": "0e40f570511d5279", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-6caf0cef62aba265", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-c9b64aa1.spec.ts:7"}, "properties": {"repobilityId": "9098ce9a2e34b508", "scanner": "scanner-primary", "fingerprint": "6caf0cef62aba265", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-0adb750286b40231", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-5fa4d704.spec.ts:7"}, "properties": {"repobilityId": "3db193e76fdf4f9a", "scanner": "scanner-primary", "fingerprint": "0adb750286b40231", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-32859fd7d4511061", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-fd2de3ab.spec.ts:7"}, "properties": {"repobilityId": "362bf541743b2d95", "scanner": "scanner-primary", "fingerprint": "32859fd7d4511061", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-cb64f32496a8b62d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-20d1d555.spec.ts:7"}, "properties": {"repobilityId": "0e5d5d5579b6103c", "scanner": "scanner-primary", "fingerprint": "cb64f32496a8b62d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-3ad9b1f333fcb222", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-91677148.spec.ts:7"}, "properties": {"repobilityId": "f1454e5c1f410bd6", "scanner": "scanner-primary", "fingerprint": "3ad9b1f333fcb222", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-a8c29f29ace03205", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-1d26b1a9.spec.ts:7"}, "properties": {"repobilityId": "111bfc6d9bb883a5", "scanner": "scanner-primary", "fingerprint": "a8c29f29ace03205", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-47390e9f595114f7", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-5d65fcf4.spec.ts:7"}, "properties": {"repobilityId": "27e663be94b60c3b", "scanner": "scanner-primary", "fingerprint": "47390e9f595114f7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-c2d89274eb4e3e1e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-7a80bf26.spec.ts:7"}, "properties": {"repobilityId": "fe03d3249030d93f", "scanner": "scanner-primary", "fingerprint": "c2d89274eb4e3e1e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-d94b3c84e25fa750", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-4490b00f.spec.ts:7"}, "properties": {"repobilityId": "45501cf44dda8765", "scanner": "scanner-primary", "fingerprint": "d94b3c84e25fa750", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-42a1153de5a98a14", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/action_button-action_button-a4d3a676.spec.ts:7"}, "properties": {"repobilityId": "8ff1ac81701d5bff", "scanner": "scanner-primary", "fingerprint": "42a1153de5a98a14", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-c52c5e4880e80d09", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-5f503ba2.spec.ts:7"}, "properties": {"repobilityId": "f07fe788df171a49", "scanner": "scanner-primary", "fingerprint": "c52c5e4880e80d09", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-e668f9d7ea37f5aa", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-aa10250e.spec.ts:7"}, "properties": {"repobilityId": "76127b9a2166790f", "scanner": "scanner-primary", "fingerprint": "e668f9d7ea37f5aa", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-e9379a0ab47a9ef8", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-3d99955d.spec.ts:7"}, "properties": {"repobilityId": "04cb4ccf3bea24e4", "scanner": "scanner-primary", "fingerprint": "e9379a0ab47a9ef8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-5e81bac582978a84", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-b6ccab71.spec.ts:7"}, "properties": {"repobilityId": "ee0cff3a7573feb8", "scanner": "scanner-primary", "fingerprint": "5e81bac582978a84", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-095057eec20e139d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-f269c685.spec.ts:7"}, "properties": {"repobilityId": "a99d329b12eff2dc", "scanner": "scanner-primary", "fingerprint": "095057eec20e139d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-01334d0bc2fbf069", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-adc4f2e5.spec.ts:7"}, "properties": {"repobilityId": "0b8f40eb4ff440ec", "scanner": "scanner-primary", "fingerprint": "01334d0bc2fbf069", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-1bb0f2df83afc035", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-9abb607d.spec.ts:7"}, "properties": {"repobilityId": "a41aa0f029f5532b", "scanner": "scanner-primary", "fingerprint": "1bb0f2df83afc035", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-573a76aff8b31826", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-7a4a572b.spec.ts:7"}, "properties": {"repobilityId": "c7329aeda243f4c7", "scanner": "scanner-primary", "fingerprint": "573a76aff8b31826", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-dafbc42553043235", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-33373989.spec.ts:7"}, "properties": {"repobilityId": "97247cc298d432ab", "scanner": "scanner-primary", "fingerprint": "dafbc42553043235", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-be14292a4f63af0f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-8a64b91e.spec.ts:7"}, "properties": {"repobilityId": "ad00dda3aa3436bd", "scanner": "scanner-primary", "fingerprint": "be14292a4f63af0f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-da141c3ce5fce1d4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-f7840957.spec.ts:7"}, "properties": {"repobilityId": "0a218567f85f3de1", "scanner": "scanner-primary", "fingerprint": "da141c3ce5fce1d4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-d6ab7a06bfa84324", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-26b70e49.spec.ts:7"}, "properties": {"repobilityId": "76cd23e2d573494c", "scanner": "scanner-primary", "fingerprint": "d6ab7a06bfa84324", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-8a6348c541b8cf8a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-9791ee84.spec.ts:7"}, "properties": {"repobilityId": "ade9b71c077362bd", "scanner": "scanner-primary", "fingerprint": "8a6348c541b8cf8a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-86d7228318c672c2", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-a418e0cd.spec.ts:7"}, "properties": {"repobilityId": "6483522b93973080", "scanner": "scanner-primary", "fingerprint": "86d7228318c672c2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-0072fafa9e782560", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-7ab1aff0.spec.ts:7"}, "properties": {"repobilityId": "922a7220c4570c2c", "scanner": "scanner-primary", "fingerprint": "0072fafa9e782560", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-a78d9ba1a59bfb55", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-3b391ab9.spec.ts:7"}, "properties": {"repobilityId": "d0e427dc1f34e1e8", "scanner": "scanner-primary", "fingerprint": "a78d9ba1a59bfb55", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-b4190ec8bbd62e93", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-ad338815.spec.ts:7"}, "properties": {"repobilityId": "51f9669e6652bdcb", "scanner": "scanner-primary", "fingerprint": "b4190ec8bbd62e93", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-49e9f74199ed9ad6", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-bcb08d01.spec.ts:7"}, "properties": {"repobilityId": "89b66b4755b71ae9", "scanner": "scanner-primary", "fingerprint": "49e9f74199ed9ad6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-cfa75c23d7b4599f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-8ea28ac9.spec.ts:7"}, "properties": {"repobilityId": "d41a2f3b9d6975a2", "scanner": "scanner-primary", "fingerprint": "cfa75c23d7b4599f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-f841e29427cfc463", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-48502335.spec.ts:7"}, "properties": {"repobilityId": "52b88db588b07035", "scanner": "scanner-primary", "fingerprint": "f841e29427cfc463", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-f951d4bfd5706366", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-ec7b85d7.spec.ts:7"}, "properties": {"repobilityId": "48808f040f02768f", "scanner": "scanner-primary", "fingerprint": "f951d4bfd5706366", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-16f19abcd8b2f54a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-f0d24e8d.spec.ts:7"}, "properties": {"repobilityId": "b7d82633e113f002", "scanner": "scanner-primary", "fingerprint": "16f19abcd8b2f54a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-d9366830b684a3b9", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-20efaf0d.spec.ts:7"}, "properties": {"repobilityId": "4898d076aeb32a19", "scanner": "scanner-primary", "fingerprint": "d9366830b684a3b9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-873b766afcb8e7b2", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-08c9b088.spec.ts:7"}, "properties": {"repobilityId": "8f1ab5384850875d", "scanner": "scanner-primary", "fingerprint": "873b766afcb8e7b2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-f93a4fa7d182b0c1", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-df743596.spec.ts:7"}, "properties": {"repobilityId": "9421eeaa13abae27", "scanner": "scanner-primary", "fingerprint": "f93a4fa7d182b0c1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-7a15dc1124c451ef", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-36523c9d.spec.ts:7"}, "properties": {"repobilityId": "4563ae3b62298fda", "scanner": "scanner-primary", "fingerprint": "7a15dc1124c451ef", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-92f52904f85453f8", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-784eabaf.spec.ts:7"}, "properties": {"repobilityId": "6636199378c008a2", "scanner": "scanner-primary", "fingerprint": "92f52904f85453f8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-20d72e069f6b6fa0", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-f0260893.spec.ts:7"}, "properties": {"repobilityId": "9f7b0cadbf0f3a4c", "scanner": "scanner-primary", "fingerprint": "20d72e069f6b6fa0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-a55a0836e198da03", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-d7b5c69e.spec.ts:7"}, "properties": {"repobilityId": "68fd1df42cb905f4", "scanner": "scanner-primary", "fingerprint": "a55a0836e198da03", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-86ed407ce27f4c0a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-2ae404c7.spec.ts:7"}, "properties": {"repobilityId": "e957b5e3a2980931", "scanner": "scanner-primary", "fingerprint": "86ed407ce27f4c0a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-8eeec9cefd0547b3", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-c5ef17c8.spec.ts:7"}, "properties": {"repobilityId": "247d68225e878ccf", "scanner": "scanner-primary", "fingerprint": "8eeec9cefd0547b3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-2567b5844cd3cd7e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-919b83ad.spec.ts:7"}, "properties": {"repobilityId": "12d60ec80d34e416", "scanner": "scanner-primary", "fingerprint": "2567b5844cd3cd7e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-077b3ffdd3bc02f2", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-ab9a8966.spec.ts:7"}, "properties": {"repobilityId": "1f9197b03d2a7d7d", "scanner": "scanner-primary", "fingerprint": "077b3ffdd3bc02f2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-2b66619aeee8424d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-11684fd5.spec.ts:7"}, "properties": {"repobilityId": "08c28d3593addf45", "scanner": "scanner-primary", "fingerprint": "2b66619aeee8424d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-c1aeac722d7ba690", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-77b4df47.spec.ts:7"}, "properties": {"repobilityId": "9ec6445aedb6a28d", "scanner": "scanner-primary", "fingerprint": "c1aeac722d7ba690", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-6ed5c8e025a2cfc4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-a67d7f22.spec.ts:7"}, "properties": {"repobilityId": "41035f467b6cc1f3", "scanner": "scanner-primary", "fingerprint": "6ed5c8e025a2cfc4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-c21798b24cdad03d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-02c2d26e.spec.ts:7"}, "properties": {"repobilityId": "1f573759a1c32af3", "scanner": "scanner-primary", "fingerprint": "c21798b24cdad03d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-636651d582804301", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-b28eccf7.spec.ts:7"}, "properties": {"repobilityId": "267f706e3ef3481d", "scanner": "scanner-primary", "fingerprint": "636651d582804301", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-079d40ed4cf679a8", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/action_button-action_button-125e9083.spec.ts:7"}, "properties": {"repobilityId": "d1f30d09382631d6", "scanner": "scanner-primary", "fingerprint": "079d40ed4cf679a8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-219c77b3a1bf20bd", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-f669b884.spec.ts:7"}, "properties": {"repobilityId": "f5d46061f00d8c31", "scanner": "scanner-primary", "fingerprint": "219c77b3a1bf20bd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-8888622eb0d76889", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-a6758169.spec.ts:7"}, "properties": {"repobilityId": "8e984c0c1e561668", "scanner": "scanner-primary", "fingerprint": "8888622eb0d76889", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-4be2e9e0437cf7d0", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-08109106.spec.ts:7"}, "properties": {"repobilityId": "80a30a917c656991", "scanner": "scanner-primary", "fingerprint": "4be2e9e0437cf7d0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-e0777adb62305fb7", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-e5a4a0de.spec.ts:7"}, "properties": {"repobilityId": "cf00a612fc110ef5", "scanner": "scanner-primary", "fingerprint": "e0777adb62305fb7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-a663752408de787e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/action_button-action_button-0d2a4b54.spec.ts:7"}, "properties": {"repobilityId": "54a3b0e1dc27839f", "scanner": "scanner-primary", "fingerprint": "a663752408de787e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-ad7c01737f03b764", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/action_button-action_button-6244899a.spec.ts:7"}, "properties": {"repobilityId": "07b1a34b97b21d38", "scanner": "scanner-primary", "fingerprint": "ad7c01737f03b764", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-3b0890ce8a6b2827", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-a5ae48ba.spec.ts:7"}, "properties": {"repobilityId": "a69da3cfc93e858f", "scanner": "scanner-primary", "fingerprint": "3b0890ce8a6b2827", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-e73364481a4685bf", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-0f3ce752.spec.ts:7"}, "properties": {"repobilityId": "a5c486638dcc3a85", "scanner": "scanner-primary", "fingerprint": "e73364481a4685bf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-b024a34789936ec8", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-06be1313.spec.ts:7"}, "properties": {"repobilityId": "5c2f6d54a5fa5d20", "scanner": "scanner-primary", "fingerprint": "b024a34789936ec8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-6767727be1e361a3", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/action_button-action_button-cbac69f3.spec.ts:7"}, "properties": {"repobilityId": "fa8bb481a550d287", "scanner": "scanner-primary", "fingerprint": "6767727be1e361a3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-b602468592a41fff", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-570d54cf.spec.ts:7"}, "properties": {"repobilityId": "dd13bf31920b9ce4", "scanner": "scanner-primary", "fingerprint": "b602468592a41fff", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-9e51442bb40df2f9", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-b3806e8c.spec.ts:7"}, "properties": {"repobilityId": "73f4e21c1a7577fa", "scanner": "scanner-primary", "fingerprint": "9e51442bb40df2f9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-d0899e470096078e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-ccf84a2e.spec.ts:7"}, "properties": {"repobilityId": "a51e27168695a79a", "scanner": "scanner-primary", "fingerprint": "d0899e470096078e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-6b0e852b08245004", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-509eaf9b.spec.ts:7"}, "properties": {"repobilityId": "2246e4797f39d42a", "scanner": "scanner-primary", "fingerprint": "6b0e852b08245004", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-7e1c555982ff174d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-92e8e1d1.spec.ts:7"}, "properties": {"repobilityId": "57e9fe5b1877190c", "scanner": "scanner-primary", "fingerprint": "7e1c555982ff174d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-19776a721531c3ab", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-b92d9a67.spec.ts:7"}, "properties": {"repobilityId": "14912511b453e20c", "scanner": "scanner-primary", "fingerprint": "19776a721531c3ab", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-6f2c0ec95482cc78", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/action_button-action_button-d54cc7f3.spec.ts:7"}, "properties": {"repobilityId": "b08edfadee00230c", "scanner": "scanner-primary", "fingerprint": "6f2c0ec95482cc78", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-e4e2d0eabed17a1a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-ae5f048a.spec.ts:7"}, "properties": {"repobilityId": "aad3cf6f85699430", "scanner": "scanner-primary", "fingerprint": "e4e2d0eabed17a1a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-576059540c6f0166", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-49293c36.spec.ts:7"}, "properties": {"repobilityId": "3acd095e292558e8", "scanner": "scanner-primary", "fingerprint": "576059540c6f0166", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-f47f1a9cf01febe7", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-0d03b1eb.spec.ts:7"}, "properties": {"repobilityId": "20c5acd3cdcca655", "scanner": "scanner-primary", "fingerprint": "f47f1a9cf01febe7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-3ebd63b69a2279e5", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-3649e57f.spec.ts:7"}, "properties": {"repobilityId": "87464de2e9fc551b", "scanner": "scanner-primary", "fingerprint": "3ebd63b69a2279e5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-8bda3d670c56f94a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-f0b07433.spec.ts:7"}, "properties": {"repobilityId": "ddd5db25c0699e2c", "scanner": "scanner-primary", "fingerprint": "8bda3d670c56f94a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-86b2ee556c952485", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-bc6ec15b.spec.ts:7"}, "properties": {"repobilityId": "74c29c4a12670f36", "scanner": "scanner-primary", "fingerprint": "86b2ee556c952485", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-def60e21fa75d61e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-e4e73428.spec.ts:7"}, "properties": {"repobilityId": "0a0c23ade2849dae", "scanner": "scanner-primary", "fingerprint": "def60e21fa75d61e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-6d0004f35e5e01c9", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-f9ed6475.spec.ts:7"}, "properties": {"repobilityId": "20dfd499e7745d73", "scanner": "scanner-primary", "fingerprint": "6d0004f35e5e01c9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-0ef71be854f23a2d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/chart-chart-b28598a3.spec.ts:7"}, "properties": {"repobilityId": "97c0ca218a3d8d64", "scanner": "scanner-primary", "fingerprint": "0ef71be854f23a2d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-97990ec4dcb7fc43", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-b5e40c63.spec.ts:7"}, "properties": {"repobilityId": "61dd398df82d9cec", "scanner": "scanner-primary", "fingerprint": "97990ec4dcb7fc43", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-6cfeee6dc3c9ef7b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-89567a95.spec.ts:7"}, "properties": {"repobilityId": "46c512be70c9c4aa", "scanner": "scanner-primary", "fingerprint": "6cfeee6dc3c9ef7b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-44969c3bd6014288", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-64050c4f.spec.ts:7"}, "properties": {"repobilityId": "ae1c2770893bc93c", "scanner": "scanner-primary", "fingerprint": "44969c3bd6014288", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-cb1796e0ca0e3cc8", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-e587a001.spec.ts:7"}, "properties": {"repobilityId": "d2a6bac10be9f46d", "scanner": "scanner-primary", "fingerprint": "cb1796e0ca0e3cc8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-88a30f24d780d4a0", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-520b36ac.spec.ts:7"}, "properties": {"repobilityId": "ca9a8b7615f5a06b", "scanner": "scanner-primary", "fingerprint": "88a30f24d780d4a0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-2314f950f73ebd81", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-95042cf9.spec.ts:7"}, "properties": {"repobilityId": "dd78a3d65bea6a5f", "scanner": "scanner-primary", "fingerprint": "2314f950f73ebd81", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-5fe648f24ea3ae66", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-5b5ee1c4.spec.ts:7"}, "properties": {"repobilityId": "b7f22006c3589653", "scanner": "scanner-primary", "fingerprint": "5fe648f24ea3ae66", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-7062ed8f2aee2e5c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-e80ed871.spec.ts:7"}, "properties": {"repobilityId": "e14f9cb7fc66d658", "scanner": "scanner-primary", "fingerprint": "7062ed8f2aee2e5c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-2af90c9fbd894e6c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-abac1162.spec.ts:7"}, "properties": {"repobilityId": "d515b10da48db8c1", "scanner": "scanner-primary", "fingerprint": "2af90c9fbd894e6c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-6ad376340de6df5b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/panel-panel-d62ec026.spec.ts:7"}, "properties": {"repobilityId": "319aed0a1276c32c", "scanner": "scanner-primary", "fingerprint": "6ad376340de6df5b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-2634ebd850ab818e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-dd3257e6.spec.ts:7"}, "properties": {"repobilityId": "9d18ea1c5c2b0799", "scanner": "scanner-primary", "fingerprint": "2634ebd850ab818e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-3b787a08fd107a81", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-27f56a67.spec.ts:7"}, "properties": {"repobilityId": "0347e76deac9df85", "scanner": "scanner-primary", "fingerprint": "3b787a08fd107a81", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-1f72cf5802f84bab", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/modal-modal-ee9fd96c.spec.ts:7"}, "properties": {"repobilityId": "4c20edc19d416e63", "scanner": "scanner-primary", "fingerprint": "1f72cf5802f84bab", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-fe427736a93f9989", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/e2e/k2-wiring/action_button-action_button-c35c5ea1.spec.ts:7"}, "properties": {"repobilityId": "8b85ba18f2efa027", "scanner": "scanner-primary", "fingerprint": "fe427736a93f9989", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-ad22f0b13eeaa09b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/test-utils/helpers.ts:196"}, "properties": {"repobilityId": "a1714b3354502a06", "scanner": "scanner-primary", "fingerprint": "ad22f0b13eeaa09b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-40e7c6ca17dcf1dc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/comprehensive-a++-test.js:35"}, "properties": {"repobilityId": "04b12b1cd4cbc781", "scanner": "scanner-primary", "fingerprint": "40e7c6ca17dcf1dc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e5a01e471462ff11", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/simple-modal-test.js:5"}, "properties": {"repobilityId": "200d6d30e6b60dab", "scanner": "scanner-primary", "fingerprint": "e5a01e471462ff11", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8f8e3356ea62d800", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/callback-test.js:4"}, "properties": {"repobilityId": "4050b5e038551c38", "scanner": "scanner-primary", "fingerprint": "8f8e3356ea62d800", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-214af9d9d497bb74", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/edge-case-tests.js:10"}, "properties": {"repobilityId": "d5d4dd8d883be5d9", "scanner": "scanner-primary", "fingerprint": "214af9d9d497bb74", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-07082b5a2a0ef3e9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev-startup-guard.js:170"}, "properties": {"repobilityId": "39c201c074bb57bd", "scanner": "scanner-primary", "fingerprint": "07082b5a2a0ef3e9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ba12bcae61966766", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev-zombie-killer.js:71"}, "properties": {"repobilityId": "dab78a2984c3ca34", "scanner": "scanner-primary", "fingerprint": "ba12bcae61966766", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ae530f0a47c3c8d3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/browser-inspector.js:79"}, "properties": {"repobilityId": "ad7c10ebdd8dd7c0", "scanner": "scanner-primary", "fingerprint": "ae530f0a47c3c8d3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a403957aebed57ed", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/connect-orcid.js:27"}, "properties": {"repobilityId": "6043ad18c9bd37f4", "scanner": "scanner-primary", "fingerprint": "a403957aebed57ed", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-16dcff10569db317", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-login-frontend.js:7"}, "properties": {"repobilityId": "c4586854af5abc54", "scanner": "scanner-primary", "fingerprint": "16dcff10569db317", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d55913c7ed37549e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/browser-search-test.js:4"}, "properties": {"repobilityId": "3d5a43496515929c", "scanner": "scanner-primary", "fingerprint": "d55913c7ed37549e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-56160bcad386ac62", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/file-watcher.js:134"}, "properties": {"repobilityId": "95f8015c38aec474", "scanner": "scanner-primary", "fingerprint": "56160bcad386ac62", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e29700d56a864052", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/orcid-dom-error-test.js:36"}, "properties": {"repobilityId": "a0e6697bb6e937c2", "scanner": "scanner-primary", "fingerprint": "e29700d56a864052", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-be153d94d54a7268", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev-stop.js:314"}, "properties": {"repobilityId": "2c75cec62052dbfb", "scanner": "scanner-primary", "fingerprint": "be153d94d54a7268", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-40be03faca1ef68c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev-status.js:144"}, "properties": {"repobilityId": "f8a5aeb7c8546330", "scanner": "scanner-primary", "fingerprint": "40be03faca1ef68c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-55e15f7d872e8c60", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/orcid-e2e-test.js:4"}, "properties": {"repobilityId": "a5c4960d287ae10e", "scanner": "scanner-primary", "fingerprint": "55e15f7d872e8c60", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-52d62e8645c907a1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/debug-login.js:9"}, "properties": {"repobilityId": "cffa46a7137feef9", "scanner": "scanner-primary", "fingerprint": "52d62e8645c907a1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e518ced56f678ba3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-ai-assistant-modal.js:10"}, "properties": {"repobilityId": "6770bd7fa932ac9b", "scanner": "scanner-primary", "fingerprint": "e518ced56f678ba3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eb7f8ba1bcb232d9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-all-pages.ts:54"}, "properties": {"repobilityId": "360ff5488d689879", "scanner": "scanner-primary", "fingerprint": "eb7f8ba1bcb232d9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-665f18c65598d591", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/live-test.js:10"}, "properties": {"repobilityId": "f83beab6b7b42e9c", "scanner": "scanner-primary", "fingerprint": "665f18c65598d591", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aa03613f55910d88", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-browser-login.js:6"}, "properties": {"repobilityId": "3286fce72ebdf4d0", "scanner": "scanner-primary", "fingerprint": "aa03613f55910d88", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ee91732301c57dc9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/comprehensive-search-test.js:225"}, "properties": {"repobilityId": "21e3b5b89d077c31", "scanner": "scanner-primary", "fingerprint": "ee91732301c57dc9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-99e2e3ed87dcfbbb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/simulate-search-pipeline.js:58"}, "properties": {"repobilityId": "0be9756e5b8cf716", "scanner": "scanner-primary", "fingerprint": "99e2e3ed87dcfbbb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0675e8769c94de38", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-orcid-success-page.js:12"}, "properties": {"repobilityId": "a65e41596a28eca9", "scanner": "scanner-primary", "fingerprint": "0675e8769c94de38", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9a9bb77c0b491205", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pw-search-debug.js:7"}, "properties": {"repobilityId": "dd558cc36b706c9d", "scanner": "scanner-primary", "fingerprint": "9a9bb77c0b491205", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d53f8311bf26c67c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-orcid-sources.js:8"}, "properties": {"repobilityId": "6c668502a6e8b33c", "scanner": "scanner-primary", "fingerprint": "d53f8311bf26c67c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b9fd86f657f20412", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev-netflix.js:253"}, "properties": {"repobilityId": "91857117971058a5", "scanner": "scanner-primary", "fingerprint": "b9fd86f657f20412", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c8ce86bea755967a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-apple-ui-imports.js:83"}, "properties": {"repobilityId": "cea3499976b7cab4", "scanner": "scanner-primary", "fingerprint": "c8ce86bea755967a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7563ec72652dd96e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev-process-guardian.js:118"}, "properties": {"repobilityId": "518d610345d1313e", "scanner": "scanner-primary", "fingerprint": "7563ec72652dd96e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-56bc6dae32d4b527", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/stop-ultimate.js:29"}, "properties": {"repobilityId": "b1f0091e03306106", "scanner": "scanner-primary", "fingerprint": "56bc6dae32d4b527", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dcf627be85fba781", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-file-placement.js:38"}, "properties": {"repobilityId": "68752d449c53f498", "scanner": "scanner-primary", "fingerprint": "dcf627be85fba781", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c2d8557ffdae157a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-ai-modal.js:10"}, "properties": {"repobilityId": "e3cf5dcd15b0025f", "scanner": "scanner-primary", "fingerprint": "c2d8557ffdae157a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ec4ce6ff337dfeb7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/orcid-comprehensive-e2e.js:21"}, "properties": {"repobilityId": "0eb774b20eded076", "scanner": "scanner-primary", "fingerprint": "ec4ce6ff337dfeb7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e75844b5335b35b5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-orcid-comprehensive-login.js:56"}, "properties": {"repobilityId": "f4b77d3ba24b66d1", "scanner": "scanner-primary", "fingerprint": "e75844b5335b35b5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7600832101840e96", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-navigation.ts:105"}, "properties": {"repobilityId": "572ae835af8b69ef", "scanner": "scanner-primary", "fingerprint": "7600832101840e96", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-92ef901d256095df", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-env-v2.js:287"}, "properties": {"repobilityId": "e89e1cbc1f88aeb7", "scanner": "scanner-primary", "fingerprint": "92ef901d256095df", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-059a22cc9e9845b0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/orcid-a-plus-plus-plus-test.js:38"}, "properties": {"repobilityId": "b892cc154e7c821c", "scanner": "scanner-primary", "fingerprint": "059a22cc9e9845b0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dde0ed2aba9e11f0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/comprehensive-test.js:29"}, "properties": {"repobilityId": "960fa6aa3a4e49a3", "scanner": "scanner-primary", "fingerprint": "dde0ed2aba9e11f0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d78f5122acf988f2", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 scripts/health-monitor.js:158"}, "properties": {"repobilityId": "8093c553874ca4a9", "scanner": "scanner-primary", "fingerprint": "d78f5122acf988f2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-21dfecf3ab94d053", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/health-monitor.js:156"}, "properties": {"repobilityId": "4d3e3e3d1010dbc1", "scanner": "scanner-primary", "fingerprint": "21dfecf3ab94d053", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fcb05230594fa1bc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/browser-inspector.ts:114"}, "properties": {"repobilityId": "e292d5eb3c81b1d5", "scanner": "scanner-primary", "fingerprint": "fcb05230594fa1bc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4cccc467ddf49bc6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-jest-to-vitest.js:82"}, "properties": {"repobilityId": "f9f3ed5f13951722", "scanner": "scanner-primary", "fingerprint": "4cccc467ddf49bc6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c322bb13dcd8e1eb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-orcid-full-journey.js:36"}, "properties": {"repobilityId": "43d8e1fa573142d2", "scanner": "scanner-primary", "fingerprint": "c322bb13dcd8e1eb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ac8205a883abfe9c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/memory-guardian.js:54"}, "properties": {"repobilityId": "d750eec61be2bc0f", "scanner": "scanner-primary", "fingerprint": "ac8205a883abfe9c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-157a482450bd8001", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/analyze-orcid-error.js:23"}, "properties": {"repobilityId": "c48ded973e26e71f", "scanner": "scanner-primary", "fingerprint": "157a482450bd8001", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-105a510262d6ab25", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/search-test.js:4"}, "properties": {"repobilityId": "3b3e61fb0455f101", "scanner": "scanner-primary", "fingerprint": "105a510262d6ab25", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5dc96f8dc7947218", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-orcid-pipeline.js:29"}, "properties": {"repobilityId": "4bf587441e1aa67d", "scanner": "scanner-primary", "fingerprint": "5dc96f8dc7947218", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5ebdcc2b218a81bb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/live-orcid-test.js:17"}, "properties": {"repobilityId": "0fc65b6c0afa1e72", "scanner": "scanner-primary", "fingerprint": "5ebdcc2b218a81bb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-62a757e9ef03e22d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/comprehensive-architecture-audit.js:21"}, "properties": {"repobilityId": "068e178ae29d09c2", "scanner": "scanner-primary", "fingerprint": "62a757e9ef03e22d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3a936091ee48e71d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/simulate-orcid-connection.js:20"}, "properties": {"repobilityId": "45f4d5a4bc221d11", "scanner": "scanner-primary", "fingerprint": "3a936091ee48e71d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-40a4a18417e6852d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/forensic-arxiv-deep.js:130"}, "properties": {"repobilityId": "a8a1d175081f23d2", "scanner": "scanner-primary", "fingerprint": "40a4a18417e6852d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-47ce3a01e6294576", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-orcid-profile.js:15"}, "properties": {"repobilityId": "2ec6fa273eb40011", "scanner": "scanner-primary", "fingerprint": "47ce3a01e6294576", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-929668f09f8c4534", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-orcid-live.js:15"}, "properties": {"repobilityId": "9ea1a451ea52c2d0", "scanner": "scanner-primary", "fingerprint": "929668f09f8c4534", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-481d918c85ab5f63", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev-netflix-v2.js:204"}, "properties": {"repobilityId": "ee5a637a0e6814c2", "scanner": "scanner-primary", "fingerprint": "481d918c85ab5f63", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b920b9e3c510e38f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-metrics-series.js:286"}, "properties": {"repobilityId": "8bdd6079ee3c869f", "scanner": "scanner-primary", "fingerprint": "b920b9e3c510e38f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fbe149f22e92b2c8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-orcid-automated.js:32"}, "properties": {"repobilityId": "e1ed766e54b396a5", "scanner": "scanner-primary", "fingerprint": "fbe149f22e92b2c8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0550a9f7010e7e31", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/design-language-lint.js:562"}, "properties": {"repobilityId": "46c3ee1c19fa87ea", "scanner": "scanner-primary", "fingerprint": "0550a9f7010e7e31", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-368bcd6bbc842b63", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/click-test.js:4"}, "properties": {"repobilityId": "4e56c91b270d9582", "scanner": "scanner-primary", "fingerprint": "368bcd6bbc842b63", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fd73cfc12b151376", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-structure.js:118"}, "properties": {"repobilityId": "7d38c7ae1a9a06ba", "scanner": "scanner-primary", "fingerprint": "fd73cfc12b151376", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0450326559d733ce", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apple-hig-sweep.js:328"}, "properties": {"repobilityId": "26c3715abfc40a96", "scanner": "scanner-primary", "fingerprint": "0450326559d733ce", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5eb74f7da0ef7234", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/integration-test.js:36"}, "properties": {"repobilityId": "e432fe73b65464cc", "scanner": "scanner-primary", "fingerprint": "5eb74f7da0ef7234", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-50ad67528f86a05d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-orcid-complete.js:29"}, "properties": {"repobilityId": "876e564b9f3781f9", "scanner": "scanner-primary", "fingerprint": "50ad67528f86a05d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9f78070fd46c8c87", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/forensic-eric-audit.js:138"}, "properties": {"repobilityId": "cea691bb3891243f", "scanner": "scanner-primary", "fingerprint": "9f78070fd46c8c87", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-66e7781d54fd178c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/monitor.js:242"}, "properties": {"repobilityId": "c903317791d48c82", "scanner": "scanner-primary", "fingerprint": "66e7781d54fd178c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b806047e10cf52a3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/watch-orcid-logs.js:24"}, "properties": {"repobilityId": "e7274fb3ac6dcb15", "scanner": "scanner-primary", "fingerprint": "b806047e10cf52a3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b24932561b226092", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/find-shortcuts-ui.js:12"}, "properties": {"repobilityId": "37bea1576b0437d4", "scanner": "scanner-primary", "fingerprint": "b24932561b226092", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d5f03b3eef83f7de", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e-orcid-search-test.js:78"}, "properties": {"repobilityId": "563f27a151324517", "scanner": "scanner-primary", "fingerprint": "d5f03b3eef83f7de", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-53c84c5e24c14a71", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/forensic-arxiv-audit.js:138"}, "properties": {"repobilityId": "c3a0d3edbf2ce5f4", "scanner": "scanner-primary", "fingerprint": "53c84c5e24c14a71", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-448a78f6e9bbdcaf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/diagnose-orcid-profile.js:12"}, "properties": {"repobilityId": "9ff576413e0fc4ab", "scanner": "scanner-primary", "fingerprint": "448a78f6e9bbdcaf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ac000ca9845e4825", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-search-overclaims.js:248"}, "properties": {"repobilityId": "da8cc4061c2ad3cd", "scanner": "scanner-primary", "fingerprint": "ac000ca9845e4825", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e0145cc599148caa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/quick-ai-test.js:5"}, "properties": {"repobilityId": "070b63f2b6822adf", "scanner": "scanner-primary", "fingerprint": "e0145cc599148caa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-91204ad50079c061", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-login-flow.js:18"}, "properties": {"repobilityId": "1204dcd4b1de964d", "scanner": "scanner-primary", "fingerprint": "91204ad50079c061", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-95b81b66fa494f03", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-authz.js:184"}, "properties": {"repobilityId": "8d5879d0b037025f", "scanner": "scanner-primary", "fingerprint": "95b81b66fa494f03", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fac43936c6dd8976", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-fulltext-per-source.js:67"}, "properties": {"repobilityId": "5e90922e264f78d4", "scanner": "scanner-primary", "fingerprint": "fac43936c6dd8976", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-066eb1f73ef4817f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/quick-svg-test.js:4"}, "properties": {"repobilityId": "98f6827e44022ff2", "scanner": "scanner-primary", "fingerprint": "066eb1f73ef4817f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0df8d06681dc97df", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-lit-review-orcid.js:40"}, "properties": {"repobilityId": "e2a023a87c6a3d3a", "scanner": "scanner-primary", "fingerprint": "0df8d06681dc97df", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8faf4047895ea985", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-mock-data.ts:226"}, "properties": {"repobilityId": "f936798cc5f355b5", "scanner": "scanner-primary", "fingerprint": "8faf4047895ea985", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7bd13cdb5c04c221", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/auto-organize.js:156"}, "properties": {"repobilityId": "bdcd4c24cfff9172", "scanner": "scanner-primary", "fingerprint": "7bd13cdb5c04c221", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-52cb0c2852e39830", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-phase-10240-streaming.js:29"}, "properties": {"repobilityId": "fb80122237a5a400", "scanner": "scanner-primary", "fingerprint": "52cb0c2852e39830", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ac89664f420a55b5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-env.js:108"}, "properties": {"repobilityId": "bfde1f7fae58e6c4", "scanner": "scanner-primary", "fingerprint": "ac89664f420a55b5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cf2c29338ba84f6f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-jest-to-vitest-v2.js:199"}, "properties": {"repobilityId": "929bb7f84e4c661e", "scanner": "scanner-primary", "fingerprint": "cf2c29338ba84f6f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-86ba24a62c4d6566", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apple-design-validate.js:168"}, "properties": {"repobilityId": "267cef23e50f7b10", "scanner": "scanner-primary", "fingerprint": "86ba24a62c4d6566", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8a6389f86cda2123", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-auth-flow.js:9"}, "properties": {"repobilityId": "0025f00826ab9a90", "scanner": "scanner-primary", "fingerprint": "8a6389f86cda2123", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8f385fc6a3c53056", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pw-debug.js:12"}, "properties": {"repobilityId": "6070c5c2ac5bb9fc", "scanner": "scanner-primary", "fingerprint": "8f385fc6a3c53056", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-19b1efd34c678861", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/login-test.js:4"}, "properties": {"repobilityId": "1c1e8ac4ec94c2f3", "scanner": "scanner-primary", "fingerprint": "19b1efd34c678861", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fdc2538ddf2ad8ab", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-hook-dependencies.js:409"}, "properties": {"repobilityId": "1f9b7b1ffd88fe14", "scanner": "scanner-primary", "fingerprint": "fdc2538ddf2ad8ab", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3934841369f121fe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-login-functionality.js:72"}, "properties": {"repobilityId": "df47bfe81b09ffef", "scanner": "scanner-primary", "fingerprint": "3934841369f121fe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3060af0177f7bb5f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-integration.ts:34"}, "properties": {"repobilityId": "09a98142cce9107c", "scanner": "scanner-primary", "fingerprint": "3060af0177f7bb5f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-03fe447cadc4c29c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/browser-oauth-test.js:16"}, "properties": {"repobilityId": "ffce685fce9d549a", "scanner": "scanner-primary", "fingerprint": "03fe447cadc4c29c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-437b3ea3cad0a2e3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-fulltext-search.js:22"}, "properties": {"repobilityId": "308e6d2c21f8e424", "scanner": "scanner-primary", "fingerprint": "437b3ea3cad0a2e3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9adcd953e5671c49", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-dev-manager-v2.js:41"}, "properties": {"repobilityId": "d32c1fd27f96e6ce", "scanner": "scanner-primary", "fingerprint": "9adcd953e5671c49", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b850a5a4619c4fa2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e-orcid-paper-fetch-journey.js:43"}, "properties": {"repobilityId": "ed1d082534435076", "scanner": "scanner-primary", "fingerprint": "b850a5a4619c4fa2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b5a90d02bb7b1a0f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-with-login.js:13"}, "properties": {"repobilityId": "4f7f7754cde6ccfc", "scanner": "scanner-primary", "fingerprint": "b5a90d02bb7b1a0f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-38d77ace81d98f88", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-qsort-persistence.js:9"}, "properties": {"repobilityId": "0119be40737961a6", "scanner": "scanner-primary", "fingerprint": "38d77ace81d98f88", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6a5b279a8b3c7945", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sync-collab-protocol.js:39"}, "properties": {"repobilityId": "3f485e4674c54814", "scanner": "scanner-primary", "fingerprint": "6a5b279a8b3c7945", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fed0c71521a91e6a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-orcid-behavior.js:34"}, "properties": {"repobilityId": "7374487445755c5b", "scanner": "scanner-primary", "fingerprint": "fed0c71521a91e6a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-401c7e11c0628e42", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/debug-orcid-callback.js:18"}, "properties": {"repobilityId": "401a341562cdc64d", "scanner": "scanner-primary", "fingerprint": "401c7e11c0628e42", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6b80bfa807db98a8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-cors-ports.js:26"}, "properties": {"repobilityId": "542825fb30be70c9", "scanner": "scanner-primary", "fingerprint": "6b80bfa807db98a8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-64e5a1841a20ecb7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-file.js:562"}, "properties": {"repobilityId": "84cb30d5cb7e9591", "scanner": "scanner-primary", "fingerprint": "64e5a1841a20ecb7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-68973a988365c678", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-backend-connectivity.ts:78"}, "properties": {"repobilityId": "80dfcda370b6dcc8", "scanner": "scanner-primary", "fingerprint": "68973a988365c678", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-104565e2d130bdd2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-fulltext-word-count.js:64"}, "properties": {"repobilityId": "85aa0a247d8d21bc", "scanner": "scanner-primary", "fingerprint": "104565e2d130bdd2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5646669ac5b0f280", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/vscode-browser-test.js:44"}, "properties": {"repobilityId": "67e1010090bede0e", "scanner": "scanner-primary", "fingerprint": "5646669ac5b0f280", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7a19325cc8c43920", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/smoke-test.js:22"}, "properties": {"repobilityId": "2fde6a910cad67f7", "scanner": "scanner-primary", "fingerprint": "7a19325cc8c43920", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ec967496a3b6e1ee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/quick-orcid-flow-test.js:10"}, "properties": {"repobilityId": "356a261e568ec606", "scanner": "scanner-primary", "fingerprint": "ec967496a3b6e1ee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9ff6a10b51f9f1fd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-ultimate-v4-day11.js:114"}, "properties": {"repobilityId": "55ad222dd3719d95", "scanner": "scanner-primary", "fingerprint": "9ff6a10b51f9f1fd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-17857e7b26ce6f9b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-ultimate.js:81"}, "properties": {"repobilityId": "a5218b8368b9f22e", "scanner": "scanner-primary", "fingerprint": "17857e7b26ce6f9b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9e1eb3f52e9a28d9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/stop-enterprise.js:24"}, "properties": {"repobilityId": "58dd22b2486f3218", "scanner": "scanner-primary", "fingerprint": "9e1eb3f52e9a28d9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eecf39622f9e20ac", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-ultimate-v4.js:66"}, "properties": {"repobilityId": "92c2633cbbf96f0a", "scanner": "scanner-primary", "fingerprint": "eecf39622f9e20ac", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a70fee5b03eff3b0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/stop-ultimate.js:33"}, "properties": {"repobilityId": "013edd23eb111dda", "scanner": "scanner-primary", "fingerprint": "a70fee5b03eff3b0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9c3382e37bc074a4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-ultimate-v3.js:97"}, "properties": {"repobilityId": "31ed574f74685106", "scanner": "scanner-primary", "fingerprint": "9c3382e37bc074a4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b037c680c23a4c84", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-enterprise-strict.js:118"}, "properties": {"repobilityId": "6c5b373b6558be1d", "scanner": "scanner-primary", "fingerprint": "b037c680c23a4c84", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e9a8a9ae7d6a03b2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-ultimate-v2.js:48"}, "properties": {"repobilityId": "d7c00cd46bd132e0", "scanner": "scanner-primary", "fingerprint": "e9a8a9ae7d6a03b2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a00787ec1fefb68c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-manager-v5-protected.js:133"}, "properties": {"repobilityId": "f1421c43f1b7e831", "scanner": "scanner-primary", "fingerprint": "a00787ec1fefb68c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ecd27db1f644018b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-ultimate-original.js:81"}, "properties": {"repobilityId": "e033335a8ab434dc", "scanner": "scanner-primary", "fingerprint": "ecd27db1f644018b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-96d194a3e86522e3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-ultimate-v3-enhanced.js:97"}, "properties": {"repobilityId": "87707a698373c700", "scanner": "scanner-primary", "fingerprint": "96d194a3e86522e3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f180a59ea01338d9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-enterprise.js:27"}, "properties": {"repobilityId": "d7e7a06cf8d5b769", "scanner": "scanner-primary", "fingerprint": "f180a59ea01338d9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cfcb0610c1e04f3c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archived-managers/dev-lite.js:27"}, "properties": {"repobilityId": "26473db7ccb5c9ba", "scanner": "scanner-primary", "fingerprint": "cfcb0610c1e04f3c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-534977de9d703843", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 public/service-worker.js:22"}, "properties": {"repobilityId": "6fcfbf0115e29d81", "scanner": "scanner-primary", "fingerprint": "534977de9d703843", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-04e8a2787e5a5d0b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-type-guard.js:42"}, "properties": {"repobilityId": "b9ed1dbc42a440ca", "scanner": "scanner-primary", "fingerprint": "04e8a2787e5a5d0b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-73e9f6384311e1bc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-progressive-funnel-e2e.js:84"}, "properties": {"repobilityId": "681dacce0991c0e2", "scanner": "scanner-primary", "fingerprint": "73e9f6384311e1bc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e0e577782775871f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-with-new-user.ts:9"}, "properties": {"repobilityId": "af2b3a75ca1d1f9c", "scanner": "scanner-primary", "fingerprint": "e0e577782775871f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e25b9881a910d3b5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-grobid-integration.js:92"}, "properties": {"repobilityId": "f5da8166ca223b40", "scanner": "scanner-primary", "fingerprint": "e25b9881a910d3b5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0425dbb51d85eb07", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-theme-extraction.js:77"}, "properties": {"repobilityId": "bd19c107d1f09343", "scanner": "scanner-primary", "fingerprint": "0425dbb51d85eb07", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ac07d9d7cb876f35", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-edge-cases-zero-results.js:108"}, "properties": {"repobilityId": "a25b9a96e9f30c4f", "scanner": "scanner-primary", "fingerprint": "ac07d9d7cb876f35", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e574c58dd962d3cb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-bm25-relevance-filtering.js:12"}, "properties": {"repobilityId": "2c389f744feefe79", "scanner": "scanner-primary", "fingerprint": "e574c58dd962d3cb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e6c76eadd9bf7822", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-theme-extraction.ts:178"}, "properties": {"repobilityId": "222b8d653fae7d8d", "scanner": "scanner-primary", "fingerprint": "e6c76eadd9bf7822", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3768ded33766c2ac", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-phase-10.98-e2e.js:29"}, "properties": {"repobilityId": "03c21e5de2098fa6", "scanner": "scanner-primary", "fingerprint": "3768ded33766c2ac", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-760f99f6b1c62d6c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-get-library.ts:11"}, "properties": {"repobilityId": "afb8717d030b22be", "scanner": "scanner-primary", "fingerprint": "760f99f6b1c62d6c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-34cd105e4db0a3a6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/venue-scoring-walkthrough.ts:12"}, "properties": {"repobilityId": "93e57d89fb78d2ef", "scanner": "scanner-primary", "fingerprint": "34cd105e4db0a3a6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f538891744ba0f81", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-journal-metrics.js:14"}, "properties": {"repobilityId": "d4a91486cbe86217", "scanner": "scanner-primary", "fingerprint": "f538891744ba0f81", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8ef7aee19dd1575f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-save-paper.ts:9"}, "properties": {"repobilityId": "468ed27c4d46393d", "scanner": "scanner-primary", "fingerprint": "8ef7aee19dd1575f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2678ce7a41be266f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-q-statement-endpoint.ts:24"}, "properties": {"repobilityId": "aa40cd07eed1f0f6", "scanner": "scanner-primary", "fingerprint": "2678ce7a41be266f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2c88dec57171aa7a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-extraction.js:8"}, "properties": {"repobilityId": "ff568b976744a3df", "scanner": "scanner-primary", "fingerprint": "2c88dec57171aa7a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3501448221dc1a99", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-auth-api.ts:4"}, "properties": {"repobilityId": "419612188657cde0", "scanner": "scanner-primary", "fingerprint": "3501448221dc1a99", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eedcc0e52e9b118f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-dimension-compatibility.js:124"}, "properties": {"repobilityId": "7449979d93991d82", "scanner": "scanner-primary", "fingerprint": "eedcc0e52e9b118f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1daf1318c57dca0f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-purpose-validation-only.js:95"}, "properties": {"repobilityId": "833ee7cfc56ee502", "scanner": "scanner-primary", "fingerprint": "1daf1318c57dca0f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-28a24736a50eb44f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-grobid-edge-cases.js:36"}, "properties": {"repobilityId": "cb910fb7417495bf", "scanner": "scanner-primary", "fingerprint": "28a24736a50eb44f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4f0f93f6262864f5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-springer-integration.js:12"}, "properties": {"repobilityId": "53897da3b1dd254c", "scanner": "scanner-primary", "fingerprint": "4f0f93f6262864f5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-77a96f324939ea71", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-quality-threshold-filter.js:61"}, "properties": {"repobilityId": "ac424964071f60fd", "scanner": "scanner-primary", "fingerprint": "77a96f324939ea71", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-601f6c31b821bea3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-grobid-real-papers.js:173"}, "properties": {"repobilityId": "7382ea2ee6a34045", "scanner": "scanner-primary", "fingerprint": "601f6c31b821bea3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-189efd6ef8dfe297", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/check-user-status.js:8"}, "properties": {"repobilityId": "d831d1568bf4def3", "scanner": "scanner-primary", "fingerprint": "189efd6ef8dfe297", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e04e7569a80b3d8d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-grobid-parse.js:30"}, "properties": {"repobilityId": "09434d3e7bdf9a38", "scanner": "scanner-primary", "fingerprint": "e04e7569a80b3d8d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-62ceade3cc8f4583", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-collection-audit.js:119"}, "properties": {"repobilityId": "fa7ddb79b17272e2", "scanner": "scanner-primary", "fingerprint": "62ceade3cc8f4583", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5b901a1ee939a2b1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/integration-test-fulltext-adaptive.ts:145"}, "properties": {"repobilityId": "a73220942e969a98", "scanner": "scanner-primary", "fingerprint": "5b901a1ee939a2b1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0e73874dd098ab2c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/fix-types.js:130"}, "properties": {"repobilityId": "8eae762a6ace6b29", "scanner": "scanner-primary", "fingerprint": "0e73874dd098ab2c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f8f75636093377ae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-sciencedirect-extraction.js:12"}, "properties": {"repobilityId": "9ce9cf12cc2c256e", "scanner": "scanner-primary", "fingerprint": "f8f75636093377ae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2b5c1611ed6ae966", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-sciencedirect-simple.js:12"}, "properties": {"repobilityId": "4501bdbebc6c5425", "scanner": "scanner-primary", "fingerprint": "2b5c1611ed6ae966", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-482762f27bd64a7c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-ncbi-api-key.js:13"}, "properties": {"repobilityId": "3899ef310a75a90a", "scanner": "scanner-primary", "fingerprint": "482762f27bd64a7c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-30f6a12385bf6f29", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-phase-10.102-phase-2-complete.js:23"}, "properties": {"repobilityId": "76a3de0f6a24b60b", "scanner": "scanner-primary", "fingerprint": "30f6a12385bf6f29", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-760246fc503d9813", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-xml-parsing.js:31"}, "properties": {"repobilityId": "69b6a5882629ff51", "scanner": "scanner-primary", "fingerprint": "760246fc503d9813", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c42aa345e1de05a1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-direct-extraction.js:21"}, "properties": {"repobilityId": "f158f41ae3a77699", "scanner": "scanner-primary", "fingerprint": "c42aa345e1de05a1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f9b4059dd491b3ae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-xml-with-text-node.js:35"}, "properties": {"repobilityId": "46a5c5c8de67b0e7", "scanner": "scanner-primary", "fingerprint": "f9b4059dd491b3ae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-45c3663ee68ee899", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-search-with-filtering.js:17"}, "properties": {"repobilityId": "93be58a94d6153dd", "scanner": "scanner-primary", "fingerprint": "45c3663ee68ee899", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eecbff32bef6d23d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-excerpt-extraction-simple.js:9"}, "properties": {"repobilityId": "8229abe03fe6c56e", "scanner": "scanner-primary", "fingerprint": "eecbff32bef6d23d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bedd028752d45538", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-sciencedirect-extraction-with-output.js:19"}, "properties": {"repobilityId": "641e97321888353a", "scanner": "scanner-primary", "fingerprint": "bedd028752d45538", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-04aa0fc5f5a78e20", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-phase-10.94-complete-e2e.js:92"}, "properties": {"repobilityId": "294c74433a3e3b52", "scanner": "scanner-primary", "fingerprint": "04aa0fc5f5a78e20", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2ee5b007a9cae254", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-admin-login.ts:7"}, "properties": {"repobilityId": "bdf2b49eff8e5b71", "scanner": "scanner-primary", "fingerprint": "2ee5b007a9cae254", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7c8ff151853612d1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-phase-10.98-all-fixes-e2e.js:81"}, "properties": {"repobilityId": "9869442777eee6cc", "scanner": "scanner-primary", "fingerprint": "7c8ff151853612d1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-40f6b5c872abeea8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-text-extraction-waterfall.js:41"}, "properties": {"repobilityId": "023d3fff63438e6b", "scanner": "scanner-primary", "fingerprint": "40f6b5c872abeea8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cfe647f46eb0f785", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test-phase-10.99-critical-fixes.js:179"}, "properties": {"repobilityId": "aeb201530875d3c3", "scanner": "scanner-primary", "fingerprint": "cfe647f46eb0f785", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5bc382e03c27888c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/integration/teardown-testcontainers.ts:24"}, "properties": {"repobilityId": "fd5e28cb3941d0fb", "scanner": "scanner-primary", "fingerprint": "5bc382e03c27888c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e4576dd32ae4c3ab", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/integration/literature-pipeline.integration.spec.ts:125"}, "properties": {"repobilityId": "9ed1c11392210537", "scanner": "scanner-primary", "fingerprint": "e4576dd32ae4c3ab", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6f5362fd18c23ed9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/integration/setup-testcontainers.ts:45"}, "properties": {"repobilityId": "9f3f938f4330e427", "scanner": "scanner-primary", "fingerprint": "6f5362fd18c23ed9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b26e2eb7bf227120", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/ws-search-concurrency.harness.js:106"}, "properties": {"repobilityId": "017df347a5a83b0b", "scanner": "scanner-primary", "fingerprint": "b26e2eb7bf227120", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7ad0a942bb569bf7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/opt3-tier-stream-probe.js:27"}, "properties": {"repobilityId": "d96741b3db71bde5", "scanner": "scanner-primary", "fingerprint": "7ad0a942bb569bf7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c8a0984c8e4d4a32", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/k6-mixed-workload.js:247"}, "properties": {"repobilityId": "97e324ee9d8e81a0", "scanner": "scanner-primary", "fingerprint": "c8a0984c8e4d4a32", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e047d5229503ec92", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/k6-theme-extraction.js:201"}, "properties": {"repobilityId": "e08fb147deb04844", "scanner": "scanner-primary", "fingerprint": "e047d5229503ec92", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a548de2d4a9f65fb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/k6-stress-test.js:104"}, "properties": {"repobilityId": "0a44d4dd8fa1ccb7", "scanner": "scanner-primary", "fingerprint": "a548de2d4a9f65fb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-79bcaad3fecac8bf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/item6-pdf-pool-probe.js:49"}, "properties": {"repobilityId": "827661ae19e9007b", "scanner": "scanner-primary", "fingerprint": "79bcaad3fecac8bf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ccc664a76ed8e5a4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/eff8-event-loop-lag-probe.js:26"}, "properties": {"repobilityId": "1494423288e525bb", "scanner": "scanner-primary", "fingerprint": "ccc664a76ed8e5a4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4221374f0a96b731", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/result-cache-twouser-probe.js:28"}, "properties": {"repobilityId": "16735a7797774f19", "scanner": "scanner-primary", "fingerprint": "4221374f0a96b731", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-650f37baca3d3210", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/literature-performance.spec.ts:92"}, "properties": {"repobilityId": "321908b03089ce3a", "scanner": "scanner-primary", "fingerprint": "650f37baca3d3210", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-088ead7bd3dd7100", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/k6-literature-search.js:145"}, "properties": {"repobilityId": "0dd40c2115957569", "scanner": "scanner-primary", "fingerprint": "088ead7bd3dd7100", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7423d91c13b4fcd9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/k6-wave9-load-test.js:288"}, "properties": {"repobilityId": "7935bf9737a290d5", "scanner": "scanner-primary", "fingerprint": "7423d91c13b4fcd9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6e921d14019fa9fd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/k6-wave9-soak-test.js:132"}, "properties": {"repobilityId": "e6023a1e0191cfcc", "scanner": "scanner-primary", "fingerprint": "6e921d14019fa9fd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5e9d00acb4f5b3e5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/k6-pr-smoke.js:127"}, "properties": {"repobilityId": "7c297575e9c9b827", "scanner": "scanner-primary", "fingerprint": "5e9d00acb4f5b3e5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-175d94c99fd30ee9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/eff8-rerank-byte-identity-probe.js:26"}, "properties": {"repobilityId": "534ce7068112a183", "scanner": "scanner-primary", "fingerprint": "175d94c99fd30ee9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9e18c6788389d6ab", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/performance/k6-sprint12-load-test.js:503"}, "properties": {"repobilityId": "527810fd0828143d", "scanner": "scanner-primary", "fingerprint": "9e18c6788389d6ab", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4514bfbf69e6aae2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/edge-cases/edge-case-validation.e2e-spec.ts:111"}, "properties": {"repobilityId": "8ca7d96c3bf7272f", "scanner": "scanner-primary", "fingerprint": "4514bfbf69e6aae2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dd21d4a8ee7229b1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/contract/api-provider.pact.spec.ts:177"}, "properties": {"repobilityId": "06daa14c74ed1950", "scanner": "scanner-primary", "fingerprint": "dd21d4a8ee7229b1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d0e1e6bd9e7f7d3c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/manual/cohens-kappa-calculator.js:97"}, "properties": {"repobilityId": "c3b4de1c056649ee", "scanner": "scanner-primary", "fingerprint": "d0e1e6bd9e7f7d3c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1fb2811cffef59cb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/chaos/ws-disconnect-chaos.js:304"}, "properties": {"repobilityId": "a101d4cf22cf9eb9", "scanner": "scanner-primary", "fingerprint": "1fb2811cffef59cb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f51500fb2039abd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/e2e/literature-critical-path.e2e-spec.ts:119"}, "properties": {"repobilityId": "02ebf493ea2751fe", "scanner": "scanner-primary", "fingerprint": "2f51500fb2039abd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f98110b8c45d41e8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/e2e/refine-stage-validation.e2e-spec.ts:63"}, "properties": {"repobilityId": "59d6e9632fedfc32", "scanner": "scanner-primary", "fingerprint": "f98110b8c45d41e8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-97092c3688af5354", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/e2e/search-stream-300-papers.e2e-spec.ts:148"}, "properties": {"repobilityId": "01fa6536ccb4b016", "scanner": "scanner-primary", "fingerprint": "97092c3688af5354", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9f369126a124e4cc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/e2e/failure-scenarios.e2e-spec.ts:140"}, "properties": {"repobilityId": "91dbeb1c4e715ba8", "scanner": "scanner-primary", "fingerprint": "9f369126a124e4cc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5ff4e1c586ec3fb1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/e2e/literature-comprehensive.e2e-spec.ts:123"}, "properties": {"repobilityId": "a18b69e9ca1a483b", "scanner": "scanner-primary", "fingerprint": "5ff4e1c586ec3fb1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eaa07cc1afc275c1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/e2e/performance.e2e-spec.ts:192"}, "properties": {"repobilityId": "63c1822c5bfd955f", "scanner": "scanner-primary", "fingerprint": "eaa07cc1afc275c1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ba892c670acad4dc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/test/e2e/purpose-aware-search.e2e-spec.ts:147"}, "properties": {"repobilityId": "81c9288e1ca94924", "scanner": "scanner-primary", "fingerprint": "ba892c670acad4dc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ce4507a06e39b319", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/quality-profile-compare.ts:93"}, "properties": {"repobilityId": "3f085afd97c52a77", "scanner": "scanner-primary", "fingerprint": "ce4507a06e39b319", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-07dfbe70c06599df", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/benchmark-literature-sources.ts:124"}, "properties": {"repobilityId": "8fbf7835e20f22de", "scanner": "scanner-primary", "fingerprint": "07dfbe70c06599df", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4da581997453b78d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/refresh-orcid-token.ts:120"}, "properties": {"repobilityId": "393ec7f72123e808", "scanner": "scanner-primary", "fingerprint": "4da581997453b78d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ed0a1222fb864b4d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/source-health-check.ts:77"}, "properties": {"repobilityId": "f113eb75f0be98e5", "scanner": "scanner-primary", "fingerprint": "ed0a1222fb864b4d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6ca4110c95f9613b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-request-cancellation.ts:89"}, "properties": {"repobilityId": "22051d121eee3cd4", "scanner": "scanner-primary", "fingerprint": "6ca4110c95f9613b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8ee28b5f0a17d70e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/analyze-fulltext-success-rate.ts:85"}, "properties": {"repobilityId": "8fafa72721b3bad5", "scanner": "scanner-primary", "fingerprint": "8ee28b5f0a17d70e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c173df14cf6c540a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-source-limits.ts:29"}, "properties": {"repobilityId": "4dd12ebc68681c34", "scanner": "scanner-primary", "fingerprint": "c173df14cf6c540a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4c22179b0558ce64", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/load-test-literature.ts:165"}, "properties": {"repobilityId": "b634d8950b8cc904", "scanner": "scanner-primary", "fingerprint": "4c22179b0558ce64", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b27b7795a5d727ed", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/mh06-citation-coverage-audit.ts:43"}, "properties": {"repobilityId": "71b411ee549854cc", "scanner": "scanner-primary", "fingerprint": "b27b7795a5d727ed", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2b042db7caf0ef96", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/retraction-watch-sync.ts:24"}, "properties": {"repobilityId": "3206086095c42295", "scanner": "scanner-primary", "fingerprint": "2b042db7caf0ef96", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4e4e2069febd4f61", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-unwired-controllers.ts:27"}, "properties": {"repobilityId": "865f2677e1320d26", "scanner": "scanner-primary", "fingerprint": "4e4e2069febd4f61", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-feca0de061b99b3c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-pipeline-refine-stage.ts:57"}, "properties": {"repobilityId": "2415f978655ed341", "scanner": "scanner-primary", "fingerprint": "feca0de061b99b3c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-83013d58cb0a0759", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/diagnose-journal-metrics.ts:44"}, "properties": {"repobilityId": "5d6a4d8251035d60", "scanner": "scanner-primary", "fingerprint": "83013d58cb0a0759", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5c30792a9d41ced1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/diagnose-quality-scores.js:246"}, "properties": {"repobilityId": "9ebc36f2a11968a1", "scanner": "scanner-primary", "fingerprint": "5c30792a9d41ced1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f7551caf9bc9d1a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/build-fulltext-ground-truth.js:135"}, "properties": {"repobilityId": "a750bd7b0b9f3bec", "scanner": "scanner-primary", "fingerprint": "2f7551caf9bc9d1a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fe2e15432bdcb0cc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-grobid-extraction-e2e.ts:99"}, "properties": {"repobilityId": "9e10680683b73da8", "scanner": "scanner-primary", "fingerprint": "fe2e15432bdcb0cc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6c75906698aa16b0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-source-balance-e2e.ts:166"}, "properties": {"repobilityId": "be64e01af3ab6ca0", "scanner": "scanner-primary", "fingerprint": "6c75906698aa16b0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3030cf7dd5eaaf56", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/dev-login-helper.ts:13"}, "properties": {"repobilityId": "37dbe0dce01f06a4", "scanner": "scanner-primary", "fingerprint": "3030cf7dd5eaaf56", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bd840d20151c2eac", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/citation-enrichment-backfill.ts:74"}, "properties": {"repobilityId": "23675bfefd88019a", "scanner": "scanner-primary", "fingerprint": "bd840d20151c2eac", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1cd5d10090a1ef46", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/pipeline-checkpoint-arxiv.ts:228"}, "properties": {"repobilityId": "db88a77e257f8cfc", "scanner": "scanner-primary", "fingerprint": "1cd5d10090a1ef46", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cc14fe01520f0847", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/add-orcid-publications.ts:70"}, "properties": {"repobilityId": "b81d8772ce932dc6", "scanner": "scanner-primary", "fingerprint": "cc14fe01520f0847", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-24884038ce5f967d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/pipeline-validate-profiles.ts:206"}, "properties": {"repobilityId": "5c35d6a68ac9882d", "scanner": "scanner-primary", "fingerprint": "24884038ce5f967d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-222d92ebe52d0e4b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/verify-orcid-config.js:11"}, "properties": {"repobilityId": "6eb5f3df5a475a61", "scanner": "scanner-primary", "fingerprint": "222d92ebe52d0e4b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3f9a28c606cda73e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/diagnose-search.ts:23"}, "properties": {"repobilityId": "bb54da4d448bdb0d", "scanner": "scanner-primary", "fingerprint": "3f9a28c606cda73e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c50b3d991ff65134", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/source-isolation-probe.ts:96"}, "properties": {"repobilityId": "f644c52cecc4b968", "scanner": "scanner-primary", "fingerprint": "c50b3d991ff65134", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-12ba536a135fe2a2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-youtube-api.js:13"}, "properties": {"repobilityId": "dbbf7e62aed3b5f7", "scanner": "scanner-primary", "fingerprint": "12ba536a135fe2a2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-24cd1f2ac826077e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-fulltext-success-rate.ts:45"}, "properties": {"repobilityId": "7cee951548b0abd1", "scanner": "scanner-primary", "fingerprint": "24cd1f2ac826077e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-87087ae1d899167a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/warm-cache.ts:109"}, "properties": {"repobilityId": "5a1b0e40a3f979ca", "scanner": "scanner-primary", "fingerprint": "87087ae1d899167a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-24c5b5f645997c19", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/source-error-detail.ts:71"}, "properties": {"repobilityId": "e445a8f463f754af", "scanner": "scanner-primary", "fingerprint": "24c5b5f645997c19", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de3b73b2e066abf2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/reranker-probe.ts:44"}, "properties": {"repobilityId": "a95aef56f36844a6", "scanner": "scanner-primary", "fingerprint": "de3b73b2e066abf2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ceddb50c57910b96", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/reset-user-state.ts:177"}, "properties": {"repobilityId": "6fd47b3af5173886", "scanner": "scanner-primary", "fingerprint": "ceddb50c57910b96", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a33d255f1c52c7b0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/check-orcid-tokens.ts:17"}, "properties": {"repobilityId": "7da817a2c6c6fd4f", "scanner": "scanner-primary", "fingerprint": "a33d255f1c52c7b0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-73ec527aad3b8df1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/benchmark-social-media.ts:42"}, "properties": {"repobilityId": "c7c3ad7274f7af28", "scanner": "scanner-primary", "fingerprint": "73ec527aad3b8df1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e541d3b5b525fd4e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/phase-10.711-migration-mark-existing-users-verified.ts:31"}, "properties": {"repobilityId": "2af27a484ac5bc5d", "scanner": "scanner-primary", "fingerprint": "e541d3b5b525fd4e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-411e03075d16b547", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/benchmark-pipeline.ts:350"}, "properties": {"repobilityId": "a5bef60c3c2a45c0", "scanner": "scanner-primary", "fingerprint": "411e03075d16b547", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6476e19afd565606", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/audit-paper-titles.ts:35"}, "properties": {"repobilityId": "ca512489807baf8d", "scanner": "scanner-primary", "fingerprint": "6476e19afd565606", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9a749e04c4c1b100", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/pipeline-validate-all-sources.ts:254"}, "properties": {"repobilityId": "7d7939bbbdc16613", "scanner": "scanner-primary", "fingerprint": "9a749e04c4c1b100", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5580712dce1d7097", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/analyze-papers-from-db.ts:16"}, "properties": {"repobilityId": "2469e10ea4f4247d", "scanner": "scanner-primary", "fingerprint": "5580712dce1d7097", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2e1b002ced625205", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/create-test-report.ts:14"}, "properties": {"repobilityId": "c54ee7f179ea3655", "scanner": "scanner-primary", "fingerprint": "2e1b002ced625205", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2edebd996aa45936", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-journal-prestige-calculation.ts:46"}, "properties": {"repobilityId": "bc8e25eeca72c9bb", "scanner": "scanner-primary", "fingerprint": "2edebd996aa45936", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8ebaada794ccc984", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/replace-console-with-logger.js:23"}, "properties": {"repobilityId": "98099b08fc28f053", "scanner": "scanner-primary", "fingerprint": "8ebaada794ccc984", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-617c3b795c67c18d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/staging-silhouette-distribution.ts:205"}, "properties": {"repobilityId": "4c1726562a8428d8", "scanner": "scanner-primary", "fingerprint": "617c3b795c67c18d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e74b99beffe4b378", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/floor-cosine-probe.ts:86"}, "properties": {"repobilityId": "f91bdeb65503dc48", "scanner": "scanner-primary", "fingerprint": "e74b99beffe4b378", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9fbda2e032bf276f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/check-orcid-user.ts:29"}, "properties": {"repobilityId": "06d283ebdce833c6", "scanner": "scanner-primary", "fingerprint": "9fbda2e032bf276f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-03638f6c0080e8ae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/migrate-normalize-paper-titles.ts:53"}, "properties": {"repobilityId": "c54c2ea1c89755c8", "scanner": "scanner-primary", "fingerprint": "03638f6c0080e8ae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c94ec2f98e41ed8c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/check-route-parity.ts:169"}, "properties": {"repobilityId": "d9a40c08f8809c1b", "scanner": "scanner-primary", "fingerprint": "c94ec2f98e41ed8c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c57bb6aebf66c579", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/test-search-pipeline-e2e.ts:47"}, "properties": {"repobilityId": "7d9804876b3f232b", "scanner": "scanner-primary", "fingerprint": "c57bb6aebf66c579", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2e90c7b47ff6de82", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/simple-detection-test.ts:65"}, "properties": {"repobilityId": "7fb83b518844fbe8", "scanner": "scanner-primary", "fingerprint": "2e90c7b47ff6de82", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3888e26d7193f448", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/live-detection-test.ts:35"}, "properties": {"repobilityId": "b67cf061d551d672", "scanner": "scanner-primary", "fingerprint": "3888e26d7193f448", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9e90b8ef987da9c2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/pipeline-validate-source.ts:51"}, "properties": {"repobilityId": "e5c95b8811654050", "scanner": "scanner-primary", "fingerprint": "9e90b8ef987da9c2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5532ee091323c0fa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/eval/generate-smoke-fixture.ts:565"}, "properties": {"repobilityId": "0e0c2a05bf9754ec", "scanner": "scanner-primary", "fingerprint": "5532ee091323c0fa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e8333f5aa6298053", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/eval/rebaseline.ts:102"}, "properties": {"repobilityId": "fb1286571b24a008", "scanner": "scanner-primary", "fingerprint": "e8333f5aa6298053", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6de207980a4aa082", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/scripts/eval/run-beir.ts:49"}, "properties": {"repobilityId": "8429f691502089f1", "scanner": "scanner-primary", "fingerprint": "6de207980a4aa082", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4f37a61bc6099e7b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/prisma/reset-password.ts:7"}, "properties": {"repobilityId": "23b89491e28bb5df", "scanner": "scanner-primary", "fingerprint": "4f37a61bc6099e7b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e6f1bf074f831c8e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/prisma/seed.ts:8"}, "properties": {"repobilityId": "be513322403f615b", "scanner": "scanner-primary", "fingerprint": "e6f1bf074f831c8e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c39a478eabc63173", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/prisma/check-users.ts:6"}, "properties": {"repobilityId": "9d115cdb8feaf257", "scanner": "scanner-primary", "fingerprint": "c39a478eabc63173", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-42c88135bde95fc0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/prisma/test-login.ts:7"}, "properties": {"repobilityId": "f949cccfe6a9c99e", "scanner": "scanner-primary", "fingerprint": "42c88135bde95fc0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-98024c0eea028432", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/prisma/test-admin.ts:7"}, "properties": {"repobilityId": "5c6744ee0ca4885a", "scanner": "scanner-primary", "fingerprint": "98024c0eea028432", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4513c9a8d0de989e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/prisma/reset-admin-password.ts:10"}, "properties": {"repobilityId": "68922f77d2986b46", "scanner": "scanner-primary", "fingerprint": "4513c9a8d0de989e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1af38764a70f0f64", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/prisma/seed-simple.ts:7"}, "properties": {"repobilityId": "95175c6fef883fe7", "scanner": "scanner-primary", "fingerprint": "1af38764a70f0f64", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3ba07a400c1a1345", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/generate-openapi.ts:49"}, "properties": {"repobilityId": "e95b6e39e2db70b5", "scanner": "scanner-primary", "fingerprint": "3ba07a400c1a1345", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a326fb254b27e894", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/common/security/types/authenticated-socket.types.ts:128"}, "properties": {"repobilityId": "f2f04bf463fd8ccb", "scanner": "scanner-primary", "fingerprint": "a326fb254b27e894", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b842996c938613a6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/common/utils/json-utils.ts:48"}, "properties": {"repobilityId": "2b4c7acb35897b93", "scanner": "scanner-primary", "fingerprint": "b842996c938613a6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6a4d46cd2805e348", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/batch-process-papers.ts:16"}, "properties": {"repobilityId": "7d56143b6f727913", "scanner": "scanner-primary", "fingerprint": "6a4d46cd2805e348", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9b071d2fc6eb1725", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/migrate-pmid-and-queue.ts:16"}, "properties": {"repobilityId": "3af9fad6ff120f81", "scanner": "scanner-primary", "fingerprint": "9b071d2fc6eb1725", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-14481f571895ddde", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/check-papers.ts:6"}, "properties": {"repobilityId": "fba7f34c9061daf5", "scanner": "scanner-primary", "fingerprint": "14481f571895ddde", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c649f52d5e75b37b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/validate-phase-1-results.ts:103"}, "properties": {"repobilityId": "b81bc32664383c54", "scanner": "scanner-primary", "fingerprint": "c649f52d5e75b37b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-595f005dec1e1a6f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/backfill-paper-collections.ts:23"}, "properties": {"repobilityId": "ea1f0d72a75af8ef", "scanner": "scanner-primary", "fingerprint": "595f005dec1e1a6f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-47c672c1ed3e8133", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/scripts/phase-10.106-test-runner.ts:259"}, "properties": {"repobilityId": "2736e9cd75748306", "scanner": "scanner-primary", "fingerprint": "47c672c1ed3e8133", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cc78f97334511dc5", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/ai/services/dr-onionstein-proactive.service.ts:747"}, "properties": {"repobilityId": "ea9cc23a58b1fb34", "scanner": "scanner-primary", "fingerprint": "cc78f97334511dc5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-286955a57b96c85f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/navigation/navigation-state.service.ts:120"}, "properties": {"repobilityId": "37f15a010b128a43", "scanner": "scanner-primary", "fingerprint": "286955a57b96c85f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-e9a6ea4e46e25917", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/auth/services/audit.service.ts:232"}, "properties": {"repobilityId": "089c41292bb94c97", "scanner": "scanner-primary", "fingerprint": "e9a6ea4e46e25917", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-4bd344c661d20c65", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/q-sort/services/viewpoint-balance.service.ts:72"}, "properties": {"repobilityId": "bea54518e28c466f", "scanner": "scanner-primary", "fingerprint": "4bd344c661d20c65", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2a16dcdd3690eb91", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/repository/services/research-repository.service.ts:1080"}, "properties": {"repobilityId": "78bb74141a2600dd", "scanner": "scanner-primary", "fingerprint": "2a16dcdd3690eb91", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-e0cedb088525f650", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/study/study.service.ts:919"}, "properties": {"repobilityId": "a4c3dfcb4f4cfd9d", "scanner": "scanner-primary", "fingerprint": "e0cedb088525f650", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-77a6a3ba6836f34b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/literature.service.ts:1088"}, "properties": {"repobilityId": "7cc21c867f74f3a8", "scanner": "scanner-primary", "fingerprint": "77a6a3ba6836f34b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-5ae873c917cacfce", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/types/fulltext-progress.types.ts:56"}, "properties": {"repobilityId": "5ad68c1d7ff48062", "scanner": "scanner-primary", "fingerprint": "5ae873c917cacfce", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-10c28158399f9730", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/benchmarks/orchestration-performance.benchmark.ts:1389"}, "properties": {"repobilityId": "e4a2d0805c10f903", "scanner": "scanner-primary", "fingerprint": "10c28158399f9730", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5415872e3d8b0b00", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/benchmarks/cache-performance.benchmark.ts:114"}, "properties": {"repobilityId": "4fef8b2d4f9d01b6", "scanner": "scanner-primary", "fingerprint": "5415872e3d8b0b00", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-86c0cd00ed243383", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/benchmarks/coherence-performance.benchmark.ts:330"}, "properties": {"repobilityId": "4892fc322a055f9c", "scanner": "scanner-primary", "fingerprint": "86c0cd00ed243383", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-60087a8811abaaf0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/evaluation/import-synergy-gold-set.ts:159"}, "properties": {"repobilityId": "37ccb3434df352b2", "scanner": "scanner-primary", "fingerprint": "60087a8811abaaf0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-02efe839aee214d0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/evaluation/run-retrieval-eval.ts:113"}, "properties": {"repobilityId": "d88a9d2212a87808", "scanner": "scanner-primary", "fingerprint": "02efe839aee214d0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a27c5f4ec4d52476", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/evaluation/publish-benchmark.ts:274"}, "properties": {"repobilityId": "fb37156e840884f7", "scanner": "scanner-primary", "fingerprint": "a27c5f4ec4d52476", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-43dd43079a5f10e6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/evaluation/__tests__/gold-set-eval.spec.ts:88"}, "properties": {"repobilityId": "eb4b64e64bac12c6", "scanner": "scanner-primary", "fingerprint": "43dd43079a5f10e6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-449d961badcef98e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/interfaces/theme-extraction-options.interface.ts:99"}, "properties": {"repobilityId": "67888e68c2fc20b4", "scanner": "scanner-primary", "fingerprint": "449d961badcef98e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cbe91506817e0529", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/interfaces/result.interface.ts:43"}, "properties": {"repobilityId": "5a6aab9da3cbecec", "scanner": "scanner-primary", "fingerprint": "cbe91506817e0529", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c0cdf443c993fce4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/workers/ranking.worker.ts:215"}, "properties": {"repobilityId": "360891b37dc829e5", "scanner": "scanner-primary", "fingerprint": "c0cdf443c993fce4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1fcdeddc9df92805", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/workers/embedding.worker.ts:97"}, "properties": {"repobilityId": "e5801459ac851c62", "scanner": "scanner-primary", "fingerprint": "1fcdeddc9df92805", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-58d4a42a9d911441", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/workers/kmeans.worker.ts:232"}, "properties": {"repobilityId": "c82f3472755655c2", "scanner": "scanner-primary", "fingerprint": "58d4a42a9d911441", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-373320413bb67a7b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/workers/embedding-microservice.ts:97"}, "properties": {"repobilityId": "0e0f106415a19641", "scanner": "scanner-primary", "fingerprint": "373320413bb67a7b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-235289f84da9177a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/workers/cross-encoder.worker.ts:97"}, "properties": {"repobilityId": "3ceefb71b861bbed", "scanner": "scanner-primary", "fingerprint": "235289f84da9177a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-90e1d1578836f578", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/controllers/collaborative-screening.controller.ts:541"}, "properties": {"repobilityId": "05d810e3741d7abb", "scanner": "scanner-primary", "fingerprint": "90e1d1578836f578", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-ec5db156f30cf263", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/controllers/fulltext.controller.ts:340"}, "properties": {"repobilityId": "4c0e1ed389f5655c", "scanner": "scanner-primary", "fingerprint": "ec5db156f30cf263", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-4c3ced92c9025928", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/qualitative-analysis-pipeline.service.ts:135"}, "properties": {"repobilityId": "95f83c4dfcfdb087", "scanner": "scanner-primary", "fingerprint": "4c3ced92c9025928", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-867eb01c423ec2aa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/http-client-config.service.ts:245"}, "properties": {"repobilityId": "656a744e97aaa1b1", "scanner": "scanner-primary", "fingerprint": "867eb01c423ec2aa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c93538c1d2030bca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/paper-permissions.service.ts:95"}, "properties": {"repobilityId": "0cdd91df523171dc", "scanner": "scanner-primary", "fingerprint": "c93538c1d2030bca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8f46b118f5d82503", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/unified-theme-extraction.service.ts:4309"}, "properties": {"repobilityId": "705e8fc02667ec12", "scanner": "scanner-primary", "fingerprint": "8f46b118f5d82503", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eb990427d2f46a58", "level": "note", "message": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 backend/src/modules/literature/services/theoretical-sampling.service.ts:399"}, "properties": {"repobilityId": "1ab26d3d18d2541d", "scanner": "scanner-primary", "fingerprint": "eb990427d2f46a58", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.edge-label.no-bg"]}}, {"ruleId": "scanner-27443e79cc348356", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/survey-construction-pipeline.service.ts:120"}, "properties": {"repobilityId": "7954682569853199", "scanner": "scanner-primary", "fingerprint": "27443e79cc348356", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b6be9d674d556f55", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/api-quota-monitor.service.ts:500"}, "properties": {"repobilityId": "abff8e1ce46c8b93", "scanner": "scanner-primary", "fingerprint": "b6be9d674d556f55", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-1346025d97573bee", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/openalex-enrichment.service.ts:963"}, "properties": {"repobilityId": "cb21c94f2c6629a2", "scanner": "scanner-primary", "fingerprint": "1346025d97573bee", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-472e15c5e663e598", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/theme-to-statement.service.ts:572"}, "properties": {"repobilityId": "14e27e2ca88a4f8c", "scanner": "scanner-primary", "fingerprint": "472e15c5e663e598", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-ab1778cf61a3d9ed", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/memory-aware-partial-results.ts:179"}, "properties": {"repobilityId": "6b2ecc58a6ed6efc", "scanner": "scanner-primary", "fingerprint": "ab1778cf61a3d9ed", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e2148f42afac8f7b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/scopus.service.ts:134"}, "properties": {"repobilityId": "8c8922c878a1cde4", "scanner": "scanner-primary", "fingerprint": "e2148f42afac8f7b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ff9be35123f740a1", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/ssrn.service.ts:157"}, "properties": {"repobilityId": "bd576c204b107ff1", "scanner": "scanner-primary", "fingerprint": "ff9be35123f740a1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-ae2107e4bcf55df3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/paper-database.service.ts:375"}, "properties": {"repobilityId": "b810345dea091278", "scanner": "scanner-primary", "fingerprint": "ae2107e4bcf55df3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c48da3a3abffd69e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/social-media-intelligence.service.ts:305"}, "properties": {"repobilityId": "450ab5a1ffc342e1", "scanner": "scanner-primary", "fingerprint": "c48da3a3abffd69e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-48ae427d31018f31", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/paper-metadata.service.ts:171"}, "properties": {"repobilityId": "ea90f6f4a2e00496", "scanner": "scanner-primary", "fingerprint": "48ae427d31018f31", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6c49e392174f1241", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/alternative-sources.service.ts:304"}, "properties": {"repobilityId": "6314c0284a697111", "scanner": "scanner-primary", "fingerprint": "6c49e392174f1241", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-79b3ceb5980fcb72", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/batch-extraction-orchestrator.service.ts:203"}, "properties": {"repobilityId": "e69c9d1e787f981e", "scanner": "scanner-primary", "fingerprint": "79b3ceb5980fcb72", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b00471f79bc48b86", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/intelligent-fulltext-detection.service.ts:3505"}, "properties": {"repobilityId": "7fc18f9dd88ef236", "scanner": "scanner-primary", "fingerprint": "b00471f79bc48b86", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-570ae031f3994835", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/screening-auto-trigger-circuit-breaker.service.ts:275"}, "properties": {"repobilityId": "fd94e82dc9794d26", "scanner": "scanner-primary", "fingerprint": "570ae031f3994835", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-acb666f49691f330", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/claim-extraction-circuit-breaker.service.ts:275"}, "properties": {"repobilityId": "b3eac152b4f63074", "scanner": "scanner-primary", "fingerprint": "acb666f49691f330", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-9446537a127cbdd5", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/semantic-scholar.service.ts:577"}, "properties": {"repobilityId": "809dd2fa269f2482", "scanner": "scanner-primary", "fingerprint": "9446537a127cbdd5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-67cd58956fd55870", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/theme-extraction-progress.service.ts:515"}, "properties": {"repobilityId": "fde2003136833da7", "scanner": "scanner-primary", "fingerprint": "67cd58956fd55870", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-c64f7788220b6873", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/__tests__/eric.service.spec.ts:525"}, "properties": {"repobilityId": "0ad49cb6ac0506b3", "scanner": "scanner-primary", "fingerprint": "c64f7788220b6873", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-40a908972833f915", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/__tests__/request-cancellation.integration.spec.ts:414"}, "properties": {"repobilityId": "1d6e9af10f4633aa", "scanner": "scanner-primary", "fingerprint": "40a908972833f915", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8724d56e94cf3178", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/__tests__/real-data-flow.spec.ts:252"}, "properties": {"repobilityId": "d40dc9bd4d17d572", "scanner": "scanner-primary", "fingerprint": "8724d56e94cf3178", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-640e501501b56782", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/__tests__/phase-2-patent-validation.e2e.spec.ts:699"}, "properties": {"repobilityId": "e4c4efad3d7a4880", "scanner": "scanner-primary", "fingerprint": "640e501501b56782", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-a29c6f6dcc95b5bf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/__tests__/pipeline-audit.service.example.ts:19"}, "properties": {"repobilityId": "1b91da5741fa6a8f", "scanner": "scanner-primary", "fingerprint": "a29c6f6dcc95b5bf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e109c780cb5a4ff1", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/__tests__/intelligent-fulltext-orcid-integration.spec.ts:251"}, "properties": {"repobilityId": "02ce273cb4be3fd4", "scanner": "scanner-primary", "fingerprint": "e109c780cb5a4ff1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-82493d4155d2216d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/__tests__/paper-analyzer.example.ts:37"}, "properties": {"repobilityId": "fd43ef7f21653947", "scanner": "scanner-primary", "fingerprint": "82493d4155d2216d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9da63ac97ad56b40", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/__tests__/fulltext-ground-truth.spec.ts:128"}, "properties": {"repobilityId": "a80be0515a605a82", "scanner": "scanner-primary", "fingerprint": "9da63ac97ad56b40", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8b0f98f9a436e8e7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/__tests__/lsh-similarity.service.spec.ts:280"}, "properties": {"repobilityId": "fa5ae0acea5950a2", "scanner": "scanner-primary", "fingerprint": "8b0f98f9a436e8e7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-375bd299701b422f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/bibliometric/link-prediction.algorithm.ts:188"}, "properties": {"repobilityId": "cee689b02aacf769", "scanner": "scanner-primary", "fingerprint": "375bd299701b422f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5ef29454c0e5c662", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/literature/services/bibliometric/wall-clock-budget.ts:195"}, "properties": {"repobilityId": "50579900b2b12209", "scanner": "scanner-primary", "fingerprint": "5ef29454c0e5c662", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-598a92bea6bf5295", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/theme-extraction/coherence-calculation.service.ts:1655"}, "properties": {"repobilityId": "70345569e8a383c5", "scanner": "scanner-primary", "fingerprint": "598a92bea6bf5295", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7c394500ee2c0e29", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/theme-extraction/validation-strategy.service.ts:965"}, "properties": {"repobilityId": "f05081f09d221bf0", "scanner": "scanner-primary", "fingerprint": "7c394500ee2c0e29", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f31d0af8a072a299", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/theme-extraction/saturation-analysis.service.spec.ts:1494"}, "properties": {"repobilityId": "3aa8faf35ae52922", "scanner": "scanner-primary", "fingerprint": "f31d0af8a072a299", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8afe75da582e9429", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/community-detection/__benchmarks__/sbm-vs-leiden.bench.ts:329"}, "properties": {"repobilityId": "841fe9e416de5a47", "scanner": "scanner-primary", "fingerprint": "8afe75da582e9429", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dc481cbacbe372c2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/literature/services/iterative-fetch/__tests__/per-source-yield-evaluation.integration.spec.ts:320"}, "properties": {"repobilityId": "50eec4fdd7d4c825", "scanner": "scanner-primary", "fingerprint": "dc481cbacbe372c2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9475deb9a377679d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/regression.spec.ts:34"}, "properties": {"repobilityId": "d9f4e2284a53557f", "scanner": "scanner-primary", "fingerprint": "9475deb9a377679d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d4f67763419158ba", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/basic-integration.spec.ts:33"}, "properties": {"repobilityId": "06a09d2608c3048d", "scanner": "scanner-primary", "fingerprint": "d4f67763419158ba", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5807f7c1c5f94457", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/e2e-simulation.spec.ts:30"}, "properties": {"repobilityId": "873e76594551b17d", "scanner": "scanner-primary", "fingerprint": "5807f7c1c5f94457", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f65d95d137f1d0db", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/performance/response-time.performance.spec.ts:131"}, "properties": {"repobilityId": "81469f3099e842db", "scanner": "scanner-primary", "fingerprint": "f65d95d137f1d0db", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ac5782f10dbfc232", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/performance/stress-testing.performance.spec.ts:75"}, "properties": {"repobilityId": "88f1105adf437e21", "scanner": "scanner-primary", "fingerprint": "ac5782f10dbfc232", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e1ab162d65a7297f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/performance/scalability.performance.spec.ts:173"}, "properties": {"repobilityId": "7bc0cfee75b6fc7a", "scanner": "scanner-primary", "fingerprint": "e1ab162d65a7297f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a88b9c470f2d39fb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/performance/memory-usage.performance.spec.ts:127"}, "properties": {"repobilityId": "02e1054bbc519643", "scanner": "scanner-primary", "fingerprint": "a88b9c470f2d39fb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-98dc52584b95887b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/performance/simple-performance.spec.ts:23"}, "properties": {"repobilityId": "bb4775ccdd3a18bb", "scanner": "scanner-primary", "fingerprint": "98dc52584b95887b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cf8ba428a73a8318", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/performance/load-testing.performance.spec.ts:99"}, "properties": {"repobilityId": "4ed3c66f9fe5b615", "scanner": "scanner-primary", "fingerprint": "cf8ba428a73a8318", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e735c43acb74e929", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/smoke/analysis-pipeline.smoke.spec.ts:48"}, "properties": {"repobilityId": "e888f54e243d8710", "scanner": "scanner-primary", "fingerprint": "e735c43acb74e929", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-13ca77d09b196d92", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/smoke/visualization.smoke.spec.ts:53"}, "properties": {"repobilityId": "a6fa3c04be33aae7", "scanner": "scanner-primary", "fingerprint": "13ca77d09b196d92", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-11100aff7d312f44", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/smoke/user-journey.smoke.spec.ts:37"}, "properties": {"repobilityId": "aa70160090d4c12b", "scanner": "scanner-primary", "fingerprint": "11100aff7d312f44", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a11d8a2d098caa1f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/modules/analysis/__tests__/smoke/api-health.smoke.spec.ts:47"}, "properties": {"repobilityId": "29491d3a09e6da06", "scanner": "scanner-primary", "fingerprint": "a11d8a2d098caa1f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7ec6c5d1286acbab", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/analysis/services/literature-comparison.service.ts:703"}, "properties": {"repobilityId": "171307832a930e53", "scanner": "scanner-primary", "fingerprint": "7ec6c5d1286acbab", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-08b1f7eee353cbda", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/modules/analysis/services/__tests__/pqmethod-compatibility.service.spec.ts:6"}, "properties": {"repobilityId": "3174bf0bc00a3c6d", "scanner": "scanner-primary", "fingerprint": "08b1f7eee353cbda", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-6d6fe7e9a9bbab7d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 backend/src/services/post-survey.service.ts:94"}, "properties": {"repobilityId": "558f2032c1c5e4bb", "scanner": "scanner-primary", "fingerprint": "6d6fe7e9a9bbab7d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-7138c5589d592cd7", "level": "warning", "message": {"text": "Privileged port 19 in use"}, "properties": {"repobilityId": "a6b5b06deac36eac", "scanner": "scanner-primary", "fingerprint": "7138c5589d592cd7", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "observation/throttler-audit.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2ec87378db94401f", "level": "warning", "message": {"text": "Privileged port 30 in use"}, "properties": {"repobilityId": "54f172e7d16fc662", "scanner": "scanner-primary", "fingerprint": "2ec87378db94401f", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "observation/throttler-audit.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e41883134991f778", "level": "warning", "message": {"text": "Privileged port 1 in use"}, "properties": {"repobilityId": "ddf3fa6c29abb8d2", "scanner": "scanner-primary", "fingerprint": "e41883134991f778", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/run-edge-case-tests.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-badab95930a2c8f9", "level": "warning", "message": {"text": "Privileged port 999 in use"}, "properties": {"repobilityId": "f3d0a20a459426b3", "scanner": "scanner-primary", "fingerprint": "badab95930a2c8f9", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "k8s/postgres-statefulset.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e48d439634af9ee6", "level": "warning", "message": {"text": "Privileged port 851 in use"}, "properties": {"repobilityId": "8677b2a2a5ebfc1f", "scanner": "scanner-primary", "fingerprint": "e48d439634af9ee6", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/fix-strict-comprehensive.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-244b9a0fa07fc205", "level": "warning", "message": {"text": "Privileged port 2 in use"}, "properties": {"repobilityId": "755b04866010e843", "scanner": "scanner-primary", "fingerprint": "244b9a0fa07fc205", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/soak.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-faa134129e5545ff", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "99a13b6fa65863b7", "scanner": "scanner-primary", "fingerprint": "faa134129e5545ff", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/Dockerfile"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-faa134129e5545ff", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "95093d8cceaad540", "scanner": "scanner-primary", "fingerprint": "faa134129e5545ff", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/Dockerfile"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-faa134129e5545ff", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "3ec57b81799e27c8", "scanner": "scanner-primary", "fingerprint": "faa134129e5545ff", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/Dockerfile"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-3d2a6283f9ebab24", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "d7daa94cc0691488", "scanner": "scanner-primary", "fingerprint": "3d2a6283f9ebab24", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/Dockerfile"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-3d2a6283f9ebab24", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "148e2a5ce06c32c7", "scanner": "scanner-primary", "fingerprint": "3d2a6283f9ebab24", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/Dockerfile"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-3d2a6283f9ebab24", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "e202d93a52cedb07", "scanner": "scanner-primary", "fingerprint": "3d2a6283f9ebab24", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/Dockerfile"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-a399389f5f17b106", "level": "error", "message": {"text": "Runtime dotenv file present in repo: frontend/.env.production"}, "properties": {"repobilityId": "f727d22a89e309c5", "scanner": "scanner-primary", "fingerprint": "a399389f5f17b106", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["secrets", "config", "env-file", "runtime-env"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/.env.production"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-87dd3b407d3b5331", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in fix-remaining-errors.js:5"}, "properties": {"repobilityId": "e92f64a28b2417c5", "scanner": "scanner-primary", "fingerprint": "87dd3b407d3b5331", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "fix-remaining-errors.js"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-64663f6cfb7f47ff", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in phase-6.94-final-zero.js:10"}, "properties": {"repobilityId": "412918368cb2e8b8", "scanner": "scanner-primary", "fingerprint": "64663f6cfb7f47ff", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "phase-6.94-final-zero.js"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-098bf23d48193df5", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in phase-6.94-layer3-enterprise.js:11"}, "properties": {"repobilityId": "aa3ee6b6570d3ab6", "scanner": "scanner-primary", "fingerprint": "098bf23d48193df5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "phase-6.94-layer3-enterprise.js"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-48c70abeb536fa5d", "level": "error", "message": {"text": "Possible secret in diagnostic-auth-test.sh"}, "properties": {"repobilityId": "b5f7aa986ef5e6d8", "scanner": "scanner-primary", "fingerprint": "48c70abeb536fa5d", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "diagnostic-auth-test.sh"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-3782ec9e8774143a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in final-check.js:2"}, "properties": {"repobilityId": "46aca2ae57ef45ad", "scanner": "scanner-primary", "fingerprint": "3782ec9e8774143a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "final-check.js"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-bd21b66fddf22ea1", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in final-zero-errors.js:8"}, "properties": {"repobilityId": "ce61afc6838ca148", "scanner": "scanner-primary", "fingerprint": "bd21b66fddf22ea1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "final-zero-errors.js"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-5422b85237f2b663", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in phase-6.94-layer4-final.js:11"}, "properties": {"repobilityId": "9e8b9c79d6a35c3b", "scanner": "scanner-primary", "fingerprint": "5422b85237f2b663", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "phase-6.94-layer4-final.js"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-27725ab872ad0b64", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in fix-typescript-errors.js:5"}, "properties": {"repobilityId": "0b6cdbb39da49889", "scanner": "scanner-primary", "fingerprint": "27725ab872ad0b64", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "fix-typescript-errors.js"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-18b07b6d9516bf53", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in check-errors.js:3"}, "properties": {"repobilityId": "42a66dfbcabd65a5", "scanner": "scanner-primary", "fingerprint": "18b07b6d9516bf53", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "check-errors.js"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-4ed8866ab0a55615", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in phase-6.94-layer2-fix.js:11"}, "properties": {"repobilityId": "a4e42d699dce68bb", "scanner": "scanner-primary", "fingerprint": "4ed8866ab0a55615", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "phase-6.94-layer2-fix.js"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-256acbe842bd484b", "level": "error", "message": {"text": "Possible secret in test-fulltext-edge-cases.js"}, "properties": {"repobilityId": "8d20d816b25794d4", "scanner": "scanner-primary", "fingerprint": "256acbe842bd484b", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test-fulltext-edge-cases.js"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-3a853acc70e66522", "level": "error", "message": {"text": "Possible secret in test-literature-search-e2e.js"}, "properties": {"repobilityId": "be5ab56b30b4677d", "scanner": "scanner-primary", "fingerprint": "3a853acc70e66522", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test-literature-search-e2e.js"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-d1c8dbf6d0f1f0e4", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/__tests__/validation-test.tsx:136"}, "properties": {"repobilityId": "877b13a19c53eed3", "scanner": "scanner-primary", "fingerprint": "d1c8dbf6d0f1f0e4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/__tests__/validation-test.tsx"}, "region": {"startLine": 136}}}]}, {"ruleId": "scanner-ce3bda2141d9c965", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in frontend/scripts/fix-unused-vars.js:5"}, "properties": {"repobilityId": "9b40b271e60bd487", "scanner": "scanner-primary", "fingerprint": "ce3bda2141d9c965", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/scripts/fix-unused-vars.js"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-2a42da2feaf41dab", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in frontend/scripts/zero-error-setup.js:11"}, "properties": {"repobilityId": "d35def609677987c", "scanner": "scanner-primary", "fingerprint": "2a42da2feaf41dab", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/scripts/zero-error-setup.js"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-4dd6881113899fd1", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/components/study-creation/ParticipantPreview.tsx:147"}, "properties": {"repobilityId": "79e27320c8ae9829", "scanner": "scanner-primary", "fingerprint": "4dd6881113899fd1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/components/study-creation/ParticipantPreview.tsx"}, "region": {"startLine": 147}}}]}, {"ruleId": "scanner-c6afccc3004507ea", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/components/hub/sections/VisualizationCenter.tsx:648"}, "properties": {"repobilityId": "c384a739ec0532cb", "scanner": "scanner-primary", "fingerprint": "c6afccc3004507ea", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/components/hub/sections/VisualizationCenter.tsx"}, "region": {"startLine": 648}}}]}, {"ruleId": "scanner-f0e178b83bc8e395", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/components/ui/AutoPipelineToast.tsx:147"}, "properties": {"repobilityId": "2e9873b888cebdca", "scanner": "scanner-primary", "fingerprint": "f0e178b83bc8e395", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/components/ui/AutoPipelineToast.tsx"}, "region": {"startLine": 147}}}]}, {"ruleId": "scanner-2faa006a7daa77cf", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/components/visualizations/__tests__/export.test.ts:363"}, "properties": {"repobilityId": "18b0a0dfca557cbe", "scanner": "scanner-primary", "fingerprint": "2faa006a7daa77cf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/components/visualizations/__tests__/export.test.ts"}, "region": {"startLine": 363}}}]}, {"ruleId": "scanner-10f3d11ee1db1e96", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/components/literature/FullTextExcerptPanel.tsx:76"}, "properties": {"repobilityId": "b757338d97d05649", "scanner": "scanner-primary", "fingerprint": "10f3d11ee1db1e96", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/components/literature/FullTextExcerptPanel.tsx"}, "region": {"startLine": 76}}}]}, {"ruleId": "scanner-a6dc1744fc52df86", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/components/literature/TranscriptionsTab.tsx:359"}, "properties": {"repobilityId": "f715b9382523bd7e", "scanner": "scanner-primary", "fingerprint": "a6dc1744fc52df86", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/components/literature/TranscriptionsTab.tsx"}, "region": {"startLine": 359}}}]}, {"ruleId": "scanner-c21f1f0e09262efe", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/components/literature/__tests__/SessionResumeBanner.test.tsx:155"}, "properties": {"repobilityId": "e299679f39e0ca43", "scanner": "scanner-primary", "fingerprint": "c21f1f0e09262efe", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/components/literature/__tests__/SessionResumeBanner.test.tsx"}, "region": {"startLine": 155}}}]}, {"ruleId": "scanner-ba5d0237258ce0db", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/components/accessibility/AccessibilityManager.tsx:132"}, "properties": {"repobilityId": "b0b6d49ab60d9b16", "scanner": "scanner-primary", "fingerprint": "ba5d0237258ce0db", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/components/accessibility/AccessibilityManager.tsx"}, "region": {"startLine": 132}}}]}, {"ruleId": "scanner-ad514bc6fe43cd99", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in frontend/components/knowledge/__tests__/KnowledgeMapAnnouncer.test.tsx:600"}, "properties": {"repobilityId": "576d8ccb28a1280c", "scanner": "scanner-primary", "fingerprint": "ad514bc6fe43cd99", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/components/knowledge/__tests__/KnowledgeMapAnnouncer.test.tsx"}, "region": {"startLine": 600}}}]}, {"ruleId": "scanner-c183f68afdfbaaf7", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/components/knowledge/hooks/__tests__/useKnowledgeMapKeyboard.test.ts:54"}, "properties": {"repobilityId": "45f8b4c2d85ca3c0", "scanner": "scanner-primary", "fingerprint": "c183f68afdfbaaf7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/components/knowledge/hooks/__tests__/useKnowledgeMapKeyboard.test.ts"}, "region": {"startLine": 54}}}]}, {"ruleId": "scanner-4bfc210679570f0a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/components/knowledge/hooks/__tests__/useGraphInteraction.test.ts:111"}, "properties": {"repobilityId": "865b46865e6ae6aa", "scanner": "scanner-primary", "fingerprint": "4bfc210679570f0a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/components/knowledge/hooks/__tests__/useGraphInteraction.test.ts"}, "region": {"startLine": 111}}}]}, {"ruleId": "scanner-ddb5b7f694a80f0e", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/app/canonical-host-script.tsx:51"}, "properties": {"repobilityId": "fc349417e7182ac8", "scanner": "scanner-primary", "fingerprint": "ddb5b7f694a80f0e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/app/canonical-host-script.tsx"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-940aefe7d61d8bf6", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/app/theme-script.tsx:17"}, "properties": {"repobilityId": "3b6e7633ec3aa6c9", "scanner": "scanner-primary", "fingerprint": "940aefe7d61d8bf6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/app/theme-script.tsx"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-e854fc5b2cb32ad6", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/app/purpose-tint-script.tsx:69"}, "properties": {"repobilityId": "f873e66621a814ae", "scanner": "scanner-primary", "fingerprint": "e854fc5b2cb32ad6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/app/purpose-tint-script.tsx"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-711d8cbbbb0f4ffa", "level": "error", "message": {"text": "Possible secret in frontend/app/auth/login/page.tsx"}, "properties": {"repobilityId": "3760d0744ecfe0d2", "scanner": "scanner-primary", "fingerprint": "711d8cbbbb0f4ffa", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/app/auth/login/page.tsx"}, "region": {"startLine": 178}}}]}, {"ruleId": "scanner-711d8cbbbb0f4ffa", "level": "error", "message": {"text": "Possible secret in frontend/app/auth/login/page.tsx"}, "properties": {"repobilityId": "3760d0744ecfe0d2", "scanner": "scanner-primary", "fingerprint": "711d8cbbbb0f4ffa", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/app/auth/login/page.tsx"}, "region": {"startLine": 255}}}]}, {"ruleId": "scanner-1e16753e8c459264", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/app/auth/oauth/callback/page.tsx:247"}, "properties": {"repobilityId": "9105b110688a4f96", "scanner": "scanner-primary", "fingerprint": "1e16753e8c459264", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/app/auth/oauth/callback/page.tsx"}, "region": {"startLine": 247}}}]}, {"ruleId": "scanner-5fd5318d97454436", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/app/auth/register/page.tsx:154"}, "properties": {"repobilityId": "3239b501e504a12b", "scanner": "scanner-primary", "fingerprint": "5fd5318d97454436", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/app/auth/register/page.tsx"}, "region": {"startLine": 154}}}]}, {"ruleId": "scanner-efb3a678f6c6af4b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/app/(researcher)/studies/create/page.tsx:368"}, "properties": {"repobilityId": "ffb9070ed745165b", "scanner": "scanner-primary", "fingerprint": "efb3a678f6c6af4b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/app/(researcher)/studies/create/page.tsx"}, "region": {"startLine": 368}}}]}, {"ruleId": "scanner-5d9d3cee3680718e", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/app/(researcher)/discover/themes/page.tsx:147"}, "properties": {"repobilityId": "f9865402dbcb8a9a", "scanner": "scanner-primary", "fingerprint": "5d9d3cee3680718e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/app/(researcher)/discover/themes/page.tsx"}, "region": {"startLine": 147}}}]}, {"ruleId": "scanner-34931475c27e69c3", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/app/(researcher)/discover/literature/prisma/page.tsx:223"}, "properties": {"repobilityId": "d1a29b01a9f60fcb", "scanner": "scanner-primary", "fingerprint": "34931475c27e69c3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/app/(researcher)/discover/literature/prisma/page.tsx"}, "region": {"startLine": 223}}}]}, {"ruleId": "scanner-477ca9c1497f9eeb", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/app/(researcher)/discover/literature/lib/__tests__/panel-export.test.ts:100"}, "properties": {"repobilityId": "8f288cac38453321", "scanner": "scanner-primary", "fingerprint": "477ca9c1497f9eeb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/app/(researcher)/discover/literature/lib/__tests__/panel-export.test.ts"}, "region": {"startLine": 100}}}]}, {"ruleId": "scanner-683243105c238f65", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/app/(researcher)/reports/[studyId]/page.tsx:547"}, "properties": {"repobilityId": "ea679a289a401aaf", "scanner": "scanner-primary", "fingerprint": "683243105c238f65", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/app/(researcher)/reports/[studyId]/page.tsx"}, "region": {"startLine": 547}}}]}, {"ruleId": "scanner-72b8754ff5a02f78", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/lib/visualization/__tests__/export.test.ts:272"}, "properties": {"repobilityId": "0740bfbd53170fa6", "scanner": "scanner-primary", "fingerprint": "72b8754ff5a02f78", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/lib/visualization/__tests__/export.test.ts"}, "region": {"startLine": 272}}}]}, {"ruleId": "scanner-7f00b39a9f382ed2", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/lib/api/__tests__/participant-enhanced.test.ts:232"}, "properties": {"repobilityId": "257ab356b0b1687b", "scanner": "scanner-primary", "fingerprint": "7f00b39a9f382ed2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/lib/api/__tests__/participant-enhanced.test.ts"}, "region": {"startLine": 232}}}]}, {"ruleId": "scanner-fa7adec04a11693c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/lib/utils/__tests__/capture-dom-snapshot.test.ts:6"}, "properties": {"repobilityId": "6a1d797c75f69808", "scanner": "scanner-primary", "fingerprint": "fa7adec04a11693c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/lib/utils/__tests__/capture-dom-snapshot.test.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-85e358fcd5d6e240", "level": "note", "message": {"text": "Insecure pattern 'document_write' in frontend/lib/hooks/useDrOnionWebSocket.ts:440"}, "properties": {"repobilityId": "e610117165349ce9", "scanner": "scanner-primary", "fingerprint": "85e358fcd5d6e240", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/lib/hooks/useDrOnionWebSocket.ts"}, "region": {"startLine": 440}}}]}, {"ruleId": "scanner-18942c640c270441", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/lib/service-worker/register.ts:76"}, "properties": {"repobilityId": "af1482498616aae7", "scanner": "scanner-primary", "fingerprint": "18942c640c270441", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/lib/service-worker/register.ts"}, "region": {"startLine": 76}}}]}, {"ruleId": "scanner-314f9edee5dcafdd", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/hooks/useParticipant.ts:41"}, "properties": {"repobilityId": "de59a5f4fb4833f9", "scanner": "scanner-primary", "fingerprint": "314f9edee5dcafdd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/hooks/useParticipant.ts"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-0108b5bbe917ab89", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/public/test-js.html:13"}, "properties": {"repobilityId": "b40f4db93d006193", "scanner": "scanner-primary", "fingerprint": "0108b5bbe917ab89", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/public/test-js.html"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-789b74a4ad509a43", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/e2e/dr-onionstein-enhanced.spec.ts:174"}, "properties": {"repobilityId": "16acd30ce036547b", "scanner": "scanner-primary", "fingerprint": "789b74a4ad509a43", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/e2e/dr-onionstein-enhanced.spec.ts"}, "region": {"startLine": 174}}}]}, {"ruleId": "scanner-7318715f7bde17ca", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/e2e/dr-onionstein-e2e.spec.ts:97"}, "properties": {"repobilityId": "14078383df14ff39", "scanner": "scanner-primary", "fingerprint": "7318715f7bde17ca", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/e2e/dr-onionstein-e2e.spec.ts"}, "region": {"startLine": 97}}}]}, {"ruleId": "scanner-46446bea84745418", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/e2e/phase-10999-methodology-live.spec.ts:81"}, "properties": {"repobilityId": "a93432b26907591e", "scanner": "scanner-primary", "fingerprint": "46446bea84745418", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/e2e/phase-10999-methodology-live.spec.ts"}, "region": {"startLine": 81}}}]}, {"ruleId": "scanner-d5b1a11c8bac00cf", "level": "error", "message": {"text": "Possible secret in frontend/e2e/orcid-enterprise-flow.spec.ts"}, "properties": {"repobilityId": "95bf77554684dc1f", "scanner": "scanner-primary", "fingerprint": "d5b1a11c8bac00cf", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/e2e/orcid-enterprise-flow.spec.ts"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-d37e61a443a126d0", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/e2e/a-plus-plus-smoke.spec.ts:149"}, "properties": {"repobilityId": "f01e83c4e1ec8115", "scanner": "scanner-primary", "fingerprint": "d37e61a443a126d0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/e2e/a-plus-plus-smoke.spec.ts"}, "region": {"startLine": 149}}}]}, {"ruleId": "scanner-5d07c78857a7d27e", "level": "error", "message": {"text": "Possible secret in frontend/e2e/particle-persist-refine.spec.ts"}, "properties": {"repobilityId": "8937c125919860f1", "scanner": "scanner-primary", "fingerprint": "5d07c78857a7d27e", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/e2e/particle-persist-refine.spec.ts"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-3bab62777382cb63", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/e2e/particle-persist-refine.spec.ts:26"}, "properties": {"repobilityId": "da9bccea63f315c9", "scanner": "scanner-primary", "fingerprint": "3bab62777382cb63", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/e2e/particle-persist-refine.spec.ts"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-9564cc945a6d0962", "level": "error", "message": {"text": "Possible secret in frontend/e2e/phase-10970-refinement-loop.spec.ts"}, "properties": {"repobilityId": "9afd6c2483afa4f2", "scanner": "scanner-primary", "fingerprint": "9564cc945a6d0962", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/e2e/phase-10970-refinement-loop.spec.ts"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-78c15d5c5385f77f", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/e2e/phase-10999-methodology-export.spec.ts:83"}, "properties": {"repobilityId": "ba40313350168653", "scanner": "scanner-primary", "fingerprint": "78c15d5c5385f77f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/e2e/phase-10999-methodology-export.spec.ts"}, "region": {"startLine": 83}}}]}, {"ruleId": "scanner-4274fd542d43eed0", "level": "error", "message": {"text": "Possible secret in frontend/e2e/orcid-login.spec.ts"}, "properties": {"repobilityId": "26ee0d454897216d", "scanner": "scanner-primary", "fingerprint": "4274fd542d43eed0", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/e2e/orcid-login.spec.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-09bc48e50eb69c38", "level": "error", "message": {"text": "Possible secret in frontend/e2e/orcid-login-paper-fetch.spec.ts"}, "properties": {"repobilityId": "e6b7a91420e50fa6", "scanner": "scanner-primary", "fingerprint": "09bc48e50eb69c38", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/e2e/orcid-login-paper-fetch.spec.ts"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-471a4c5992400f0b", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/e2e/collaboration-page.spec.ts:262"}, "properties": {"repobilityId": "fee64bed75791562", "scanner": "scanner-primary", "fingerprint": "471a4c5992400f0b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/e2e/collaboration-page.spec.ts"}, "region": {"startLine": 262}}}]}, {"ruleId": "scanner-5ab31a79d1088322", "level": "error", "message": {"text": "Possible secret in frontend/e2e/orcid-complete-dataflow.spec.ts"}, "properties": {"repobilityId": "671b96f5153d31b0", "scanner": "scanner-primary", "fingerprint": "5ab31a79d1088322", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/e2e/orcid-complete-dataflow.spec.ts"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-e3d54104ed0af087", "level": "error", "message": {"text": "Possible secret in frontend/e2e/orcid-full-flow.spec.ts"}, "properties": {"repobilityId": "98676ec09238af4d", "scanner": "scanner-primary", "fingerprint": "e3d54104ed0af087", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/e2e/orcid-full-flow.spec.ts"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-3bf0ff5bcf740c91", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/e2e/coding-page.spec.ts:163"}, "properties": {"repobilityId": "89628ec338433f8e", "scanner": "scanner-primary", "fingerprint": "3bf0ff5bcf740c91", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/e2e/coding-page.spec.ts"}, "region": {"startLine": 163}}}]}, {"ruleId": "scanner-2f652ea9b6678b62", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in frontend/e2e/gap-page/di-ratchet-expansion.spec.ts:29"}, "properties": {"repobilityId": "39cdc7bd0ebf2fbc", "scanner": "scanner-primary", "fingerprint": "2f652ea9b6678b62", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/e2e/gap-page/di-ratchet-expansion.spec.ts"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-86979183d9755b4e", "level": "error", "message": {"text": "Possible secret in scripts/comprehensive-a++-test.js"}, "properties": {"repobilityId": "67f7a5c009bb1f92", "scanner": "scanner-primary", "fingerprint": "86979183d9755b4e", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/comprehensive-a++-test.js"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-e36efd609942f698", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/comprehensive-a++-test.js:312"}, "properties": {"repobilityId": "222636df66d79729", "scanner": "scanner-primary", "fingerprint": "e36efd609942f698", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/comprehensive-a++-test.js"}, "region": {"startLine": 312}}}]}, {"ruleId": "scanner-55b28d7849ba2038", "level": "error", "message": {"text": "Possible secret in scripts/test-auth-e2e.sh"}, "properties": {"repobilityId": "3f474ec31953e126", "scanner": "scanner-primary", "fingerprint": "55b28d7849ba2038", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-auth-e2e.sh"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-875ad9e1d6b7b6ac", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/dev-startup-guard.js:26"}, "properties": {"repobilityId": "4d1e9f6c49e43ddf", "scanner": "scanner-primary", "fingerprint": "875ad9e1d6b7b6ac", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/dev-startup-guard.js"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-9ffc82259a898a9b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/dev-zombie-killer.js:26"}, "properties": {"repobilityId": "247bb13fe8140e1d", "scanner": "scanner-primary", "fingerprint": "9ffc82259a898a9b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/dev-zombie-killer.js"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-5da0e2e3364cad35", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/phase-10.110-e2e-triage.mjs:23"}, "properties": {"repobilityId": "1fbc9caff7fc7fcb", "scanner": "scanner-primary", "fingerprint": "5da0e2e3364cad35", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/phase-10.110-e2e-triage.mjs"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-a7d9b4526a42aa5a", "level": "error", "message": {"text": "Possible secret in scripts/connect-orcid.js"}, "properties": {"repobilityId": "e15e65dd078cf73e", "scanner": "scanner-primary", "fingerprint": "a7d9b4526a42aa5a", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/connect-orcid.js"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-4751dd701f678e1c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/connect-orcid.js:8"}, "properties": {"repobilityId": "bcaaf4044694037d", "scanner": "scanner-primary", "fingerprint": "4751dd701f678e1c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/connect-orcid.js"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-bae61a47c991bcf7", "level": "error", "message": {"text": "Possible secret in scripts/test-login-frontend.js"}, "properties": {"repobilityId": "8cdf00fe788dbbdd", "scanner": "scanner-primary", "fingerprint": "bae61a47c991bcf7", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-login-frontend.js"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-30bd21149f637138", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/dev-stop.js:22"}, "properties": {"repobilityId": "b642bbe0ab8ca0d5", "scanner": "scanner-primary", "fingerprint": "30bd21149f637138", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/dev-stop.js"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-845b504bb64660d7", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/dev-status.js:14"}, "properties": {"repobilityId": "94fa0d39f1c8671f", "scanner": "scanner-primary", "fingerprint": "845b504bb64660d7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/dev-status.js"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-91bd3028a6756df4", "level": "error", "message": {"text": "Possible secret in scripts/ui-audit-runner.js"}, "properties": {"repobilityId": "8a02dbf4e78b44f4", "scanner": "scanner-primary", "fingerprint": "91bd3028a6756df4", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ui-audit-runner.js"}, "region": {"startLine": 144}}}]}, {"ruleId": "scanner-a18653d5d831b5ec", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ui-audit-runner.js:1"}, "properties": {"repobilityId": "f020a0b7c92f0105", "scanner": "scanner-primary", "fingerprint": "a18653d5d831b5ec", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ui-audit-runner.js"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f5469940797f60eb", "level": "error", "message": {"text": "Possible secret in scripts/debug-login.js"}, "properties": {"repobilityId": "0b459bf83bce90c6", "scanner": "scanner-primary", "fingerprint": "f5469940797f60eb", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/debug-login.js"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-4589e3261a5840ba", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/phase-10.110-feature-inventory.mjs:21"}, "properties": {"repobilityId": "e88b5d3b1b6eea14", "scanner": "scanner-primary", "fingerprint": "4589e3261a5840ba", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/phase-10.110-feature-inventory.mjs"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-59fc568dd908bb65", "level": "error", "message": {"text": "Possible secret in scripts/test-browser-login.js"}, "properties": {"repobilityId": "f20c2335b49df490", "scanner": "scanner-primary", "fingerprint": "59fc568dd908bb65", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-browser-login.js"}, "region": {"startLine": 120}}}]}, {"ruleId": "scanner-8d7f0d5eac7c1bf8", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/test-browser-login.js:96"}, "properties": {"repobilityId": "e621cabcd1fdc98d", "scanner": "scanner-primary", "fingerprint": "8d7f0d5eac7c1bf8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-browser-login.js"}, "region": {"startLine": 96}}}]}, {"ruleId": "scanner-d0bd3b3d0949d78a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/dev-netflix.js:23"}, "properties": {"repobilityId": "da89e499cbbfe978", "scanner": "scanner-primary", "fingerprint": "d0bd3b3d0949d78a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/dev-netflix.js"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-042c797f788bf2c4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/check-apple-ui-imports.js:12"}, "properties": {"repobilityId": "f337aaf8051a0a8c", "scanner": "scanner-primary", "fingerprint": "042c797f788bf2c4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check-apple-ui-imports.js"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-8c927aac4cf155da", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/dev-process-guardian.js:50"}, "properties": {"repobilityId": "d611eca8580f0463", "scanner": "scanner-primary", "fingerprint": "8c927aac4cf155da", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/dev-process-guardian.js"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-4d48529d04ffb631", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/stop-ultimate.js:9"}, "properties": {"repobilityId": "f8d81c2c184fd326", "scanner": "scanner-primary", "fingerprint": "4d48529d04ffb631", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/stop-ultimate.js"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-31311f1fb72d2104", "level": "error", "message": {"text": "Possible secret in scripts/orcid-a-plus-plus-plus-test.js"}, "properties": {"repobilityId": "727482f640dd24ef", "scanner": "scanner-primary", "fingerprint": "31311f1fb72d2104", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/orcid-a-plus-plus-plus-test.js"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-8ab32e0a2b5fd415", "level": "error", "message": {"text": "Possible secret in scripts/comprehensive-test.js"}, "properties": {"repobilityId": "f426a1c6923b8042", "scanner": "scanner-primary", "fingerprint": "8ab32e0a2b5fd415", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/comprehensive-test.js"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-5b7be2b3953abc10", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/memory-guardian.js:16"}, "properties": {"repobilityId": "ebb6a1c8c0aa29e9", "scanner": "scanner-primary", "fingerprint": "5b7be2b3953abc10", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/memory-guardian.js"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-b3f20c789bb52d81", "level": "error", "message": {"text": "Possible secret in scripts/test-orcid-pipeline.js"}, "properties": {"repobilityId": "0cb8d861bf8be6c2", "scanner": "scanner-primary", "fingerprint": "b3f20c789bb52d81", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-orcid-pipeline.js"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-bbdb33d555f8750f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/l9-race-leak-drift.mjs:29"}, "properties": {"repobilityId": "61c3bd25bf8d95da", "scanner": "scanner-primary", "fingerprint": "bbdb33d555f8750f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/l9-race-leak-drift.mjs"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-7585e89b9fe8ed44", "level": "error", "message": {"text": "Possible secret in scripts/forensic-arxiv-deep.js"}, "properties": {"repobilityId": "46ef6665b2c30579", "scanner": "scanner-primary", "fingerprint": "7585e89b9fe8ed44", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/forensic-arxiv-deep.js"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-6b87ab0fdf328ab2", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/dev-netflix-v2.js:40"}, "properties": {"repobilityId": "f4b9e79fe4441f34", "scanner": "scanner-primary", "fingerprint": "6b87ab0fdf328ab2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/dev-netflix-v2.js"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-57e6e32b29095480", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/check-metrics-series.js:37"}, "properties": {"repobilityId": "c152d2999ca23c28", "scanner": "scanner-primary", "fingerprint": "57e6e32b29095480", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check-metrics-series.js"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-f54f9fbe5df8f81c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ensure-sharp.js:28"}, "properties": {"repobilityId": "40cc16a38d530946", "scanner": "scanner-primary", "fingerprint": "f54f9fbe5df8f81c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ensure-sharp.js"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-5669d83f06407a09", "level": "error", "message": {"text": "Possible secret in scripts/integration-test.js"}, "properties": {"repobilityId": "889e8436e74daf9c", "scanner": "scanner-primary", "fingerprint": "5669d83f06407a09", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/integration-test.js"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-6ef81d653426baf5", "level": "error", "message": {"text": "Possible secret in scripts/forensic-eric-audit.js"}, "properties": {"repobilityId": "ebb0f4fdf57f1643", "scanner": "scanner-primary", "fingerprint": "6ef81d653426baf5", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/forensic-eric-audit.js"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-4436eb3f49fa81cd", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/monitor.js:8"}, "properties": {"repobilityId": "ade846d4cd0b544c", "scanner": "scanner-primary", "fingerprint": "4436eb3f49fa81cd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/monitor.js"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-829347f8ea000027", "level": "error", "message": {"text": "Possible secret in scripts/quick-integration-test.sh"}, "properties": {"repobilityId": "4a3ee05a4fe0d170", "scanner": "scanner-primary", "fingerprint": "829347f8ea000027", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/quick-integration-test.sh"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-584d1eb11ed4c388", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/k2-wiring-scaffold.mjs:231"}, "properties": {"repobilityId": "8b40c56432739e13", "scanner": "scanner-primary", "fingerprint": "584d1eb11ed4c388", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/k2-wiring-scaffold.mjs"}, "region": {"startLine": 231}}}]}, {"ruleId": "scanner-ae49ba7753325542", "level": "error", "message": {"text": "Possible secret in scripts/forensic-arxiv-audit.js"}, "properties": {"repobilityId": "d0658ee1a9363284", "scanner": "scanner-primary", "fingerprint": "ae49ba7753325542", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/forensic-arxiv-audit.js"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-4afccf7106b19cbd", "level": "error", "message": {"text": "Possible secret in scripts/test-login-flow.js"}, "properties": {"repobilityId": "4ab4c21a5be7c9b4", "scanner": "scanner-primary", "fingerprint": "4afccf7106b19cbd", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-login-flow.js"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-cae27d5321f44090", "level": "error", "message": {"text": "Possible secret in scripts/audit-fulltext-per-source.js"}, "properties": {"repobilityId": "24e4ecddbd5f8e6c", "scanner": "scanner-primary", "fingerprint": "cae27d5321f44090", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/audit-fulltext-per-source.js"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-cae27d5321f44090", "level": "error", "message": {"text": "Possible secret in scripts/audit-fulltext-per-source.js"}, "properties": {"repobilityId": "24e4ecddbd5f8e6c", "scanner": "scanner-primary", "fingerprint": "cae27d5321f44090", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/audit-fulltext-per-source.js"}, "region": {"startLine": 330}}}]}, {"ruleId": "scanner-6f5a61fe16d312c7", "level": "error", "message": {"text": "Possible secret in scripts/test-lit-review-orcid.js"}, "properties": {"repobilityId": "de767ab7a9f6a8f0", "scanner": "scanner-primary", "fingerprint": "6f5a61fe16d312c7", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-lit-review-orcid.js"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-773a7ded5b78bc97", "level": "error", "message": {"text": "Possible secret in scripts/generate-mock-data.ts"}, "properties": {"repobilityId": "15d2588e3e65077b", "scanner": "scanner-primary", "fingerprint": "773a7ded5b78bc97", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate-mock-data.ts"}, "region": {"startLine": 236}}}]}, {"ruleId": "scanner-773a7ded5b78bc97", "level": "error", "message": {"text": "Possible secret in scripts/generate-mock-data.ts"}, "properties": {"repobilityId": "15d2588e3e65077b", "scanner": "scanner-primary", "fingerprint": "773a7ded5b78bc97", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate-mock-data.ts"}, "region": {"startLine": 338}}}]}, {"ruleId": "scanner-a9b64e5171636ebc", "level": "error", "message": {"text": "Possible secret in scripts/test-auth-flow.js"}, "properties": {"repobilityId": "b1f3914f0ef11190", "scanner": "scanner-primary", "fingerprint": "a9b64e5171636ebc", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-auth-flow.js"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-fdec66958ccc2f6e", "level": "error", "message": {"text": "Possible secret in scripts/test-login-functionality.js"}, "properties": {"repobilityId": "d4f9b59dc1b116cb", "scanner": "scanner-primary", "fingerprint": "fdec66958ccc2f6e", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-login-functionality.js"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-fdec66958ccc2f6e", "level": "error", "message": {"text": "Possible secret in scripts/test-login-functionality.js"}, "properties": {"repobilityId": "d4f9b59dc1b116cb", "scanner": "scanner-primary", "fingerprint": "fdec66958ccc2f6e", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-login-functionality.js"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-fdec66958ccc2f6e", "level": "error", "message": {"text": "Possible secret in scripts/test-login-functionality.js"}, "properties": {"repobilityId": "d4f9b59dc1b116cb", "scanner": "scanner-primary", "fingerprint": "fdec66958ccc2f6e", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-login-functionality.js"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-fdec66958ccc2f6e", "level": "error", "message": {"text": "Possible secret in scripts/test-login-functionality.js"}, "properties": {"repobilityId": "d4f9b59dc1b116cb", "scanner": "scanner-primary", "fingerprint": "fdec66958ccc2f6e", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-login-functionality.js"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-fdec66958ccc2f6e", "level": "error", "message": {"text": "Possible secret in scripts/test-login-functionality.js"}, "properties": {"repobilityId": "d4f9b59dc1b116cb", "scanner": "scanner-primary", "fingerprint": "fdec66958ccc2f6e", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-login-functionality.js"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-fdec66958ccc2f6e", "level": "error", "message": {"text": "Possible secret in scripts/test-login-functionality.js"}, "properties": {"repobilityId": "d4f9b59dc1b116cb", "scanner": "scanner-primary", "fingerprint": "fdec66958ccc2f6e", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-login-functionality.js"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-7725423857e8ec7a", "level": "error", "message": {"text": "Possible secret in scripts/test-integration.ts"}, "properties": {"repobilityId": "c9ab6f006db46d5b", "scanner": "scanner-primary", "fingerprint": "7725423857e8ec7a", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-integration.ts"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-7725423857e8ec7a", "level": "error", "message": {"text": "Possible secret in scripts/test-integration.ts"}, "properties": {"repobilityId": "c9ab6f006db46d5b", "scanner": "scanner-primary", "fingerprint": "7725423857e8ec7a", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-integration.ts"}, "region": {"startLine": 344}}}]}, {"ruleId": "scanner-2084eeef6a9e816a", "level": "error", "message": {"text": "Possible secret in scripts/browser-oauth-test.js"}, "properties": {"repobilityId": "26e80a22776ea8cd", "scanner": "scanner-primary", "fingerprint": "2084eeef6a9e816a", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/browser-oauth-test.js"}, "region": {"startLine": 101}}}]}, {"ruleId": "scanner-e4742ab5d6e0840a", "level": "error", "message": {"text": "Possible secret in scripts/validate-fulltext-search.js"}, "properties": {"repobilityId": "636b6d9624990ddd", "scanner": "scanner-primary", "fingerprint": "e4742ab5d6e0840a", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/validate-fulltext-search.js"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-e4742ab5d6e0840a", "level": "error", "message": {"text": "Possible secret in scripts/validate-fulltext-search.js"}, "properties": {"repobilityId": "636b6d9624990ddd", "scanner": "scanner-primary", "fingerprint": "e4742ab5d6e0840a", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/validate-fulltext-search.js"}, "region": {"startLine": 60}}}]}, {"ruleId": "scanner-b1a47bf2f8697bbb", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/l4-ws-contract-map.mjs:33"}, "properties": {"repobilityId": "3583a25084be0d5d", "scanner": "scanner-primary", "fingerprint": "b1a47bf2f8697bbb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/l4-ws-contract-map.mjs"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-b7060f83ea0efcdb", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/test-dev-manager-v2.js:15"}, "properties": {"repobilityId": "98fef18027fc6a43", "scanner": "scanner-primary", "fingerprint": "b7060f83ea0efcdb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-dev-manager-v2.js"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-2d5debe0718226de", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/e2e-orcid-paper-fetch-journey.js:20"}, "properties": {"repobilityId": "8ca05e4aa5ae6d9f", "scanner": "scanner-primary", "fingerprint": "2d5debe0718226de", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e-orcid-paper-fetch-journey.js"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-44e825e15002f3ae", "level": "error", "message": {"text": "Possible secret in scripts/test-with-login.js"}, "properties": {"repobilityId": "4c362d9e45f8ad98", "scanner": "scanner-primary", "fingerprint": "44e825e15002f3ae", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-with-login.js"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-065da3098d2989ce", "level": "error", "message": {"text": "Possible secret in scripts/debug-orcid-callback.js"}, "properties": {"repobilityId": "3cab2b75ac41afab", "scanner": "scanner-primary", "fingerprint": "065da3098d2989ce", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/debug-orcid-callback.js"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-c1d758cca2ecdd24", "level": "error", "message": {"text": "Possible secret in scripts/test-cors-ports.js"}, "properties": {"repobilityId": "23580947abe66199", "scanner": "scanner-primary", "fingerprint": "c1d758cca2ecdd24", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-cors-ports.js"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-c1d758cca2ecdd24", "level": "error", "message": {"text": "Possible secret in scripts/test-cors-ports.js"}, "properties": {"repobilityId": "23580947abe66199", "scanner": "scanner-primary", "fingerprint": "c1d758cca2ecdd24", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-cors-ports.js"}, "region": {"startLine": 86}}}]}, {"ruleId": "scanner-79363c84443c736e", "level": "error", "message": {"text": "Possible secret in scripts/test-backend-connectivity.ts"}, "properties": {"repobilityId": "bdfcc9509542e4f9", "scanner": "scanner-primary", "fingerprint": "79363c84443c736e", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-backend-connectivity.ts"}, "region": {"startLine": 88}}}]}, {"ruleId": "scanner-79363c84443c736e", "level": "error", "message": {"text": "Possible secret in scripts/test-backend-connectivity.ts"}, "properties": {"repobilityId": "bdfcc9509542e4f9", "scanner": "scanner-primary", "fingerprint": "79363c84443c736e", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-backend-connectivity.ts"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-ef424da894fc631b", "level": "error", "message": {"text": "Possible secret in scripts/vscode-browser-test.js"}, "properties": {"repobilityId": "7977292adb1351eb", "scanner": "scanner-primary", "fingerprint": "ef424da894fc631b", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/vscode-browser-test.js"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-e73d2db04a61b8e9", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/vscode-browser-test.js:22"}, "properties": {"repobilityId": "fa97d9240fcd7522", "scanner": "scanner-primary", "fingerprint": "e73d2db04a61b8e9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/vscode-browser-test.js"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-634805552922cf96", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-ultimate-v4-day11.js:27"}, "properties": {"repobilityId": "3d2ae93484a04531", "scanner": "scanner-primary", "fingerprint": "634805552922cf96", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/archived-managers/dev-ultimate-v4-day11.js"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-ae44e06ba979d313", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in scripts/archived-managers/dev-ultimate.js:511"}, "properties": {"repobilityId": "1de7e14cf8e0495d", "scanner": "scanner-primary", "fingerprint": "ae44e06ba979d313", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/archived-managers/dev-ultimate.js"}, "region": {"startLine": 511}}}]}, {"ruleId": "scanner-dab781efbe1a3e65", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-ultimate.js:15"}, "properties": {"repobilityId": "0fe991773c7d95b1", "scanner": "scanner-primary", "fingerprint": "dab781efbe1a3e65", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/archived-managers/dev-ultimate.js"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-d26b22806f7166a1", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/archived-managers/stop-enterprise.js:11"}, "properties": {"repobilityId": "e4d34ea705db3dbe", "scanner": "scanner-primary", "fingerprint": "d26b22806f7166a1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/archived-managers/stop-enterprise.js"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-cac22995950d94bf", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-ultimate-v4.js:14"}, "properties": {"repobilityId": "0c46c4ac5eb1c484", "scanner": "scanner-primary", "fingerprint": "cac22995950d94bf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/archived-managers/dev-ultimate-v4.js"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-b453c6f269472d1a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/archived-managers/stop-ultimate.js:9"}, "properties": {"repobilityId": "77aab16817cd7dfa", "scanner": "scanner-primary", "fingerprint": "b453c6f269472d1a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/archived-managers/stop-ultimate.js"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-42d8176c3910f2dc", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-ultimate-v3.js:16"}, "properties": {"repobilityId": "a450e8e5fac3c21a", "scanner": "scanner-primary", "fingerprint": "42d8176c3910f2dc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/archived-managers/dev-ultimate-v3.js"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-5396343b4b45e516", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in scripts/archived-managers/dev-enterprise-strict.js:783"}, "properties": {"repobilityId": "6d5ae4c2963c33cd", "scanner": "scanner-primary", "fingerprint": "5396343b4b45e516", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/archived-managers/dev-enterprise-strict.js"}, "region": {"startLine": 783}}}]}, {"ruleId": "scanner-a2f0e25045f993e7", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-enterprise-strict.js:20"}, "properties": {"repobilityId": "9e3551c213b2463e", "scanner": "scanner-primary", "fingerprint": "a2f0e25045f993e7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/archived-managers/dev-enterprise-strict.js"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-1b9f05eb01c3a6db", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-ultimate-v2.js:17"}, "properties": {"repobilityId": "3897eb3c0e823583", "scanner": "scanner-primary", "fingerprint": "1b9f05eb01c3a6db", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/archived-managers/dev-ultimate-v2.js"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-55006d208d2c06c4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-manager-v5-protected.js:25"}, "properties": {"repobilityId": "974214531102c4a9", "scanner": "scanner-primary", "fingerprint": "55006d208d2c06c4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/archived-managers/dev-manager-v5-protected.js"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-adaac2bcbb1e1c29", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in scripts/archived-managers/dev-ultimate-original.js:511"}, "properties": {"repobilityId": "5843d0e58585db24", "scanner": "scanner-primary", "fingerprint": "adaac2bcbb1e1c29", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/archived-managers/dev-ultimate-original.js"}, "region": {"startLine": 511}}}]}, {"ruleId": "scanner-de0ef9ee694e6f92", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-ultimate-original.js:15"}, "properties": {"repobilityId": "4e047bc9e7b45bd1", "scanner": "scanner-primary", "fingerprint": "de0ef9ee694e6f92", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/archived-managers/dev-ultimate-original.js"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-d0b6b87de3edf313", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-ultimate-v3-enhanced.js:16"}, "properties": {"repobilityId": "a5e239db267018bd", "scanner": "scanner-primary", "fingerprint": "d0b6b87de3edf313", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/archived-managers/dev-ultimate-v3-enhanced.js"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-24d1f893726d42bc", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-enterprise.js:23"}, "properties": {"repobilityId": "ee16f49b1806ab6e", "scanner": "scanner-primary", "fingerprint": "24d1f893726d42bc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/archived-managers/dev-enterprise.js"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-c67bf0de06817b13", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/archived-managers/dev-lite.js:23"}, "properties": {"repobilityId": "aa22dd2fa92ff975", "scanner": "scanner-primary", "fingerprint": "c67bf0de06817b13", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/archived-managers/dev-lite.js"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-5c6908475c2416db", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ci/flake-rate.mjs:35"}, "properties": {"repobilityId": "a4e97550389826ae", "scanner": "scanner-primary", "fingerprint": "5c6908475c2416db", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ci/flake-rate.mjs"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-afb843f55b541f65", "level": "error", "message": {"text": "Possible secret in k8s/README.md"}, "properties": {"repobilityId": "99a08a9acd8e935a", "scanner": "scanner-primary", "fingerprint": "afb843f55b541f65", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "k8s/README.md"}, "region": {"startLine": 100}}}]}, {"ruleId": "scanner-afb843f55b541f65", "level": "error", "message": {"text": "Possible secret in k8s/README.md"}, "properties": {"repobilityId": "99a08a9acd8e935a", "scanner": "scanner-primary", "fingerprint": "afb843f55b541f65", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "k8s/README.md"}, "region": {"startLine": 105}}}]}, {"ruleId": "scanner-d02478a8f224e55b", "level": "error", "message": {"text": "Possible secret in backend/test-extraction.js"}, "properties": {"repobilityId": "b16b2887f0aad164", "scanner": "scanner-primary", "fingerprint": "d02478a8f224e55b", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/test-extraction.js"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-bd1d4cb124991dc4", "level": "error", "message": {"text": "Possible secret in backend/test-auth-api.ts"}, "properties": {"repobilityId": "179d76c671a5023d", "scanner": "scanner-primary", "fingerprint": "bd1d4cb124991dc4", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/test-auth-api.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-bd1d4cb124991dc4", "level": "error", "message": {"text": "Possible secret in backend/test-auth-api.ts"}, "properties": {"repobilityId": "179d76c671a5023d", "scanner": "scanner-primary", "fingerprint": "bd1d4cb124991dc4", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/test-auth-api.ts"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-d2818bc777db14a1", "level": "error", "message": {"text": "Possible secret in backend/test-springer-integration.js"}, "properties": {"repobilityId": "7549227880cd2a46", "scanner": "scanner-primary", "fingerprint": "d2818bc777db14a1", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/test-springer-integration.js"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-8baa4e73cc94fe97", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in backend/test-ncbi-api-key.js:59"}, "properties": {"repobilityId": "24d4b13687422ce2", "scanner": "scanner-primary", "fingerprint": "8baa4e73cc94fe97", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/test-ncbi-api-key.js"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-cd61d0bf8e753189", "level": "error", "message": {"text": "Possible secret in backend/test/performance/k6-mixed-workload.js"}, "properties": {"repobilityId": "b02a5b8b080e6884", "scanner": "scanner-primary", "fingerprint": "cd61d0bf8e753189", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/test/performance/k6-mixed-workload.js"}, "region": {"startLine": 84}}}]}, {"ruleId": "scanner-242d142970966e0d", "level": "error", "message": {"text": "Possible secret in backend/test/performance/literature-performance.spec.ts"}, "properties": {"repobilityId": "90b75a7a053ded00", "scanner": "scanner-primary", "fingerprint": "242d142970966e0d", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/test/performance/literature-performance.spec.ts"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-b3b0cd18dab11942", "level": "error", "message": {"text": "Possible secret in backend/test/edge-cases/edge-case-validation.e2e-spec.ts"}, "properties": {"repobilityId": "af2ba61e437153e3", "scanner": "scanner-primary", "fingerprint": "b3b0cd18dab11942", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/test/edge-cases/edge-case-validation.e2e-spec.ts"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-e74ea75f976958b7", "level": "error", "message": {"text": "Possible secret in backend/test/contract/api-consumer.pact.spec.ts"}, "properties": {"repobilityId": "f98a7803855a1672", "scanner": "scanner-primary", "fingerprint": "e74ea75f976958b7", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/test/contract/api-consumer.pact.spec.ts"}, "region": {"startLine": 150}}}]}, {"ruleId": "scanner-e74ea75f976958b7", "level": "error", "message": {"text": "Possible secret in backend/test/contract/api-consumer.pact.spec.ts"}, "properties": {"repobilityId": "f98a7803855a1672", "scanner": "scanner-primary", "fingerprint": "e74ea75f976958b7", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/test/contract/api-consumer.pact.spec.ts"}, "region": {"startLine": 185}}}]}, {"ruleId": "scanner-634f09204ead9dae", "level": "error", "message": {"text": "Possible secret in backend/test/contract/api-provider.pact.spec.ts"}, "properties": {"repobilityId": "1496311f677c5d40", "scanner": "scanner-primary", "fingerprint": "634f09204ead9dae", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/test/contract/api-provider.pact.spec.ts"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-634f09204ead9dae", "level": "error", "message": {"text": "Possible secret in backend/test/contract/api-provider.pact.spec.ts"}, "properties": {"repobilityId": "1496311f677c5d40", "scanner": "scanner-primary", "fingerprint": "634f09204ead9dae", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/test/contract/api-provider.pact.spec.ts"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-634f09204ead9dae", "level": "error", "message": {"text": "Possible secret in backend/test/contract/api-provider.pact.spec.ts"}, "properties": {"repobilityId": "1496311f677c5d40", "scanner": "scanner-primary", "fingerprint": "634f09204ead9dae", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/test/contract/api-provider.pact.spec.ts"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-eb084cb1601317ad", "level": "error", "message": {"text": "Possible secret in backend/test/e2e/startup.e2e-spec.ts"}, "properties": {"repobilityId": "42204e70e5cf0657", "scanner": "scanner-primary", "fingerprint": "eb084cb1601317ad", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/test/e2e/startup.e2e-spec.ts"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-39e31c26a4b5354c", "level": "error", "message": {"text": "Possible secret in backend/test/e2e/collaboration.e2e-spec.ts"}, "properties": {"repobilityId": "9749a4597f1df6d8", "scanner": "scanner-primary", "fingerprint": "39e31c26a4b5354c", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/test/e2e/collaboration.e2e-spec.ts"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-39e31c26a4b5354c", "level": "error", "message": {"text": "Possible secret in backend/test/e2e/collaboration.e2e-spec.ts"}, "properties": {"repobilityId": "9749a4597f1df6d8", "scanner": "scanner-primary", "fingerprint": "39e31c26a4b5354c", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/test/e2e/collaboration.e2e-spec.ts"}, "region": {"startLine": 268}}}]}, {"ruleId": "scanner-d837c36f4a31f22a", "level": "error", "message": {"text": "Possible secret in backend/test/e2e/literature-critical-path.e2e-spec.ts"}, "properties": {"repobilityId": "0b332b6ffac7b510", "scanner": "scanner-primary", "fingerprint": "d837c36f4a31f22a", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/test/e2e/literature-critical-path.e2e-spec.ts"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-d837c36f4a31f22a", "level": "error", "message": {"text": "Possible secret in backend/test/e2e/literature-critical-path.e2e-spec.ts"}, "properties": {"repobilityId": "0b332b6ffac7b510", "scanner": "scanner-primary", "fingerprint": "d837c36f4a31f22a", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/test/e2e/literature-critical-path.e2e-spec.ts"}, "region": {"startLine": 292}}}]}, {"ruleId": "scanner-3ebe212084c348ed", "level": "error", "message": {"text": "Possible secret in backend/test/e2e/literature-comprehensive.e2e-spec.ts"}, "properties": {"repobilityId": "0cb39ba58a37e472", "scanner": "scanner-primary", "fingerprint": "3ebe212084c348ed", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/test/e2e/literature-comprehensive.e2e-spec.ts"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-a1b9fc1aef7a3f37", "level": "error", "message": {"text": "Possible secret in backend/scripts/dev-login-helper.ts"}, "properties": {"repobilityId": "89270d003281fe00", "scanner": "scanner-primary", "fingerprint": "a1b9fc1aef7a3f37", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/dev-login-helper.ts"}, "region": {"startLine": 61}}}]}, {"ruleId": "scanner-13f34c8d7d9f36c4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in backend/scripts/benchmark-pipeline.ts:44"}, "properties": {"repobilityId": "00ac742a5e0e049f", "scanner": "scanner-primary", "fingerprint": "13f34c8d7d9f36c4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/benchmark-pipeline.ts"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-c9c19e89f3877f09", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in backend/scripts/free-port.js:24"}, "properties": {"repobilityId": "5f28f447f5560a9c", "scanner": "scanner-primary", "fingerprint": "c9c19e89f3877f09", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/free-port.js"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-85c453dd39fc7cfd", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in backend/scripts/eval/rebaseline.ts:20"}, "properties": {"repobilityId": "eb71db132d3542ab", "scanner": "scanner-primary", "fingerprint": "85c453dd39fc7cfd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/eval/rebaseline.ts"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-3b092a08bbc80777", "level": "error", "message": {"text": "Possible secret in backend/prisma/reset-admin-password.ts"}, "properties": {"repobilityId": "f937ad8a7d66edc4", "scanner": "scanner-primary", "fingerprint": "3b092a08bbc80777", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/prisma/reset-admin-password.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-08cd30d40135ecc9", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in backend/src/common/build-info.ts:1"}, "properties": {"repobilityId": "405750737a740c4f", "scanner": "scanner-primary", "fingerprint": "08cd30d40135ecc9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/common/build-info.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-edf40ee3056b0648", "level": "error", "message": {"text": "Possible secret in backend/src/common/__tests__/encryption.service.spec.ts"}, "properties": {"repobilityId": "1904b0a59f63fab3", "scanner": "scanner-primary", "fingerprint": "edf40ee3056b0648", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/common/__tests__/encryption.service.spec.ts"}, "region": {"startLine": 269}}}]}, {"ruleId": "scanner-300c65e3434370ac", "level": "error", "message": {"text": "Possible secret in backend/src/common/utils/log-sanitizer.ts"}, "properties": {"repobilityId": "0e10b5dfdff7a56d", "scanner": "scanner-primary", "fingerprint": "300c65e3434370ac", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/common/utils/log-sanitizer.ts"}, "region": {"startLine": 180}}}]}, {"ruleId": "scanner-300c65e3434370ac", "level": "error", "message": {"text": "Possible secret in backend/src/common/utils/log-sanitizer.ts"}, "properties": {"repobilityId": "0e10b5dfdff7a56d", "scanner": "scanner-primary", "fingerprint": "300c65e3434370ac", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/common/utils/log-sanitizer.ts"}, "region": {"startLine": 187}}}]}, {"ruleId": "scanner-b7fc5abe55b49484", "level": "error", "message": {"text": "Possible secret in backend/src/common/services/secrets.service.ts"}, "properties": {"repobilityId": "98ecff5372024193", "scanner": "scanner-primary", "fingerprint": "b7fc5abe55b49484", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/common/services/secrets.service.ts"}, "region": {"startLine": 67}}}]}, {"ruleId": "scanner-b7fc5abe55b49484", "level": "error", "message": {"text": "Possible secret in backend/src/common/services/secrets.service.ts"}, "properties": {"repobilityId": "98ecff5372024193", "scanner": "scanner-primary", "fingerprint": "b7fc5abe55b49484", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/common/services/secrets.service.ts"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-6e42a0937862df0c", "level": "warning", "message": {"text": "Insecure pattern 'weak_hash' in backend/src/common/pipes/__tests__/deep-sanitization.pipe.spec.ts:40"}, "properties": {"repobilityId": "db7f74f4cd2cfc1c", "scanner": "scanner-primary", "fingerprint": "6e42a0937862df0c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "weak_hash"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/common/pipes/__tests__/deep-sanitization.pipe.spec.ts"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-737723da38af3bc4", "level": "error", "message": {"text": "Possible secret in backend/src/modules/auth/__tests__/auth.service.spec.ts"}, "properties": {"repobilityId": "655e3a4e219227a4", "scanner": "scanner-primary", "fingerprint": "737723da38af3bc4", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/modules/auth/__tests__/auth.service.spec.ts"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-737723da38af3bc4", "level": "error", "message": {"text": "Possible secret in backend/src/modules/auth/__tests__/auth.service.spec.ts"}, "properties": {"repobilityId": "655e3a4e219227a4", "scanner": "scanner-primary", "fingerprint": "737723da38af3bc4", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/modules/auth/__tests__/auth.service.spec.ts"}, "region": {"startLine": 170}}}]}, {"ruleId": "scanner-737723da38af3bc4", "level": "error", "message": {"text": "Possible secret in backend/src/modules/auth/__tests__/auth.service.spec.ts"}, "properties": {"repobilityId": "655e3a4e219227a4", "scanner": "scanner-primary", "fingerprint": "737723da38af3bc4", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/modules/auth/__tests__/auth.service.spec.ts"}, "region": {"startLine": 275}}}]}, {"ruleId": "scanner-737723da38af3bc4", "level": "error", "message": {"text": "Possible secret in backend/src/modules/auth/__tests__/auth.service.spec.ts"}, "properties": {"repobilityId": "655e3a4e219227a4", "scanner": "scanner-primary", "fingerprint": "737723da38af3bc4", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/modules/auth/__tests__/auth.service.spec.ts"}, "region": {"startLine": 508}}}]}, {"ruleId": "scanner-737723da38af3bc4", "level": "error", "message": {"text": "Possible secret in backend/src/modules/auth/__tests__/auth.service.spec.ts"}, "properties": {"repobilityId": "655e3a4e219227a4", "scanner": "scanner-primary", "fingerprint": "737723da38af3bc4", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/modules/auth/__tests__/auth.service.spec.ts"}, "region": {"startLine": 681}}}]}, {"ruleId": "scanner-737723da38af3bc4", "level": "error", "message": {"text": "Possible secret in backend/src/modules/auth/__tests__/auth.service.spec.ts"}, "properties": {"repobilityId": "655e3a4e219227a4", "scanner": "scanner-primary", "fingerprint": "737723da38af3bc4", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/modules/auth/__tests__/auth.service.spec.ts"}, "region": {"startLine": 682}}}]}, {"ruleId": "scanner-737723da38af3bc4", "level": "error", "message": {"text": "Possible secret in backend/src/modules/auth/__tests__/auth.service.spec.ts"}, "properties": {"repobilityId": "655e3a4e219227a4", "scanner": "scanner-primary", "fingerprint": "737723da38af3bc4", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/modules/auth/__tests__/auth.service.spec.ts"}, "region": {"startLine": 702}}}]}, {"ruleId": "scanner-dcbaf8f5b7bd701f", "level": "error", "message": {"text": "Possible secret in backend/src/modules/auth/__tests__/auth-flow.integration.spec.ts"}, "properties": {"repobilityId": "439cde5e4151d1e8", "scanner": "scanner-primary", "fingerprint": "dcbaf8f5b7bd701f", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/modules/auth/__tests__/auth-flow.integration.spec.ts"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-dcbaf8f5b7bd701f", "level": "error", "message": {"text": "Possible secret in backend/src/modules/auth/__tests__/auth-flow.integration.spec.ts"}, "properties": {"repobilityId": "439cde5e4151d1e8", "scanner": "scanner-primary", "fingerprint": "dcbaf8f5b7bd701f", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/modules/auth/__tests__/auth-flow.integration.spec.ts"}, "region": {"startLine": 186}}}]}, {"ruleId": "scanner-dcbaf8f5b7bd701f", "level": "error", "message": {"text": "Possible secret in backend/src/modules/auth/__tests__/auth-flow.integration.spec.ts"}, "properties": {"repobilityId": "439cde5e4151d1e8", "scanner": "scanner-primary", "fingerprint": "dcbaf8f5b7bd701f", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/modules/auth/__tests__/auth-flow.integration.spec.ts"}, "region": {"startLine": 227}}}]}, {"ruleId": "scanner-dcbaf8f5b7bd701f", "level": "error", "message": {"text": "Possible secret in backend/src/modules/auth/__tests__/auth-flow.integration.spec.ts"}, "properties": {"repobilityId": "439cde5e4151d1e8", "scanner": "scanner-primary", "fingerprint": "dcbaf8f5b7bd701f", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/modules/auth/__tests__/auth-flow.integration.spec.ts"}, "region": {"startLine": 376}}}]}, {"ruleId": "scanner-dcbaf8f5b7bd701f", "level": "error", "message": {"text": "Possible secret in backend/src/modules/auth/__tests__/auth-flow.integration.spec.ts"}, "properties": {"repobilityId": "439cde5e4151d1e8", "scanner": "scanner-primary", "fingerprint": "dcbaf8f5b7bd701f", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/modules/auth/__tests__/auth-flow.integration.spec.ts"}, "region": {"startLine": 419}}}]}, {"ruleId": "scanner-dcbaf8f5b7bd701f", "level": "error", "message": {"text": "Possible secret in backend/src/modules/auth/__tests__/auth-flow.integration.spec.ts"}, "properties": {"repobilityId": "439cde5e4151d1e8", "scanner": "scanner-primary", "fingerprint": "dcbaf8f5b7bd701f", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/modules/auth/__tests__/auth-flow.integration.spec.ts"}, "region": {"startLine": 470}}}]}, {"ruleId": "scanner-dcbaf8f5b7bd701f", "level": "error", "message": {"text": "Possible secret in backend/src/modules/auth/__tests__/auth-flow.integration.spec.ts"}, "properties": {"repobilityId": "439cde5e4151d1e8", "scanner": "scanner-primary", "fingerprint": "dcbaf8f5b7bd701f", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/modules/auth/__tests__/auth-flow.integration.spec.ts"}, "region": {"startLine": 471}}}]}, {"ruleId": "scanner-dcbaf8f5b7bd701f", "level": "error", "message": {"text": "Possible secret in backend/src/modules/auth/__tests__/auth-flow.integration.spec.ts"}, "properties": {"repobilityId": "439cde5e4151d1e8", "scanner": "scanner-primary", "fingerprint": "dcbaf8f5b7bd701f", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/modules/auth/__tests__/auth-flow.integration.spec.ts"}, "region": {"startLine": 488}}}]}, {"ruleId": "scanner-dcbaf8f5b7bd701f", "level": "error", "message": {"text": "Possible secret in backend/src/modules/auth/__tests__/auth-flow.integration.spec.ts"}, "properties": {"repobilityId": "439cde5e4151d1e8", "scanner": "scanner-primary", "fingerprint": "dcbaf8f5b7bd701f", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/modules/auth/__tests__/auth-flow.integration.spec.ts"}, "region": {"startLine": 516}}}]}, {"ruleId": "scanner-a37db5fa609dfbf9", "level": "error", "message": {"text": "Possible secret in backend/src/modules/literature/__tests__/integration/cross-platform-synthesis.integration.spec.ts"}, "properties": {"repobilityId": "ff87b0336fd0495d", "scanner": "scanner-primary", "fingerprint": "a37db5fa609dfbf9", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/modules/literature/__tests__/integration/cross-platform-synthesis.integration.spec.ts"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-fcee037ce3f5f127", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in backend/src/modules/literature/evaluation/run-retrieval-eval.ts:54"}, "properties": {"repobilityId": "5d718c158ad4a36b", "scanner": "scanner-primary", "fingerprint": "fcee037ce3f5f127", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/modules/literature/evaluation/run-retrieval-eval.ts"}, "region": {"startLine": 54}}}]}, {"ruleId": "scanner-463b10203779338b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in backend/src/modules/literature/services/embedding-proxy.service.ts:25"}, "properties": {"repobilityId": "dd55eebf9ed72a63", "scanner": "scanner-primary", "fingerprint": "463b10203779338b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/modules/literature/services/embedding-proxy.service.ts"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-74d4bf0ee696b300", "level": "warning", "message": {"text": "Insecure pattern 'weak_hash' in backend/src/modules/literature/services/instagram-manual.service.spec.ts:413"}, "properties": {"repobilityId": "9bde7df3be2779a0", "scanner": "scanner-primary", "fingerprint": "74d4bf0ee696b300", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "weak_hash"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/modules/literature/services/instagram-manual.service.spec.ts"}, "region": {"startLine": 413}}}]}, {"ruleId": "scanner-90a3e8b60f7f227c", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in backend/src/modules/literature/services/wikimedia-pageviews.service.ts:173"}, "properties": {"repobilityId": "aecfb69bd0a94b48", "scanner": "scanner-primary", "fingerprint": "90a3e8b60f7f227c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/modules/literature/services/wikimedia-pageviews.service.ts"}, "region": {"startLine": 173}}}]}, {"ruleId": "scanner-e8d659d8b212131b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in backend/src/modules/literature/services/bibliometric/reproducibility-manifest.service.ts:556"}, "properties": {"repobilityId": "a3c443bb98291776", "scanner": "scanner-primary", "fingerprint": "e8d659d8b212131b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/modules/literature/services/bibliometric/reproducibility-manifest.service.ts"}, "region": {"startLine": 556}}}]}, {"ruleId": "scanner-dd1fd2bd6e7fc1ef", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in backend/src/modules/literature/services/community-detection/__benchmarks__/sbm-vs-leiden.bench.ts:183"}, "properties": {"repobilityId": "6f7c4f936971baf6", "scanner": "scanner-primary", "fingerprint": "dd1fd2bd6e7fc1ef", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/modules/literature/services/community-detection/__benchmarks__/sbm-vs-leiden.bench.ts"}, "region": {"startLine": 183}}}]}, {"ruleId": "scanner-910a93049fb3d9fc", "level": "error", "message": {"text": "Possible secret in backend/src/modules/analysis/__tests__/smoke/user-journey.smoke.spec.ts"}, "properties": {"repobilityId": "081b5797aed0b863", "scanner": "scanner-primary", "fingerprint": "910a93049fb3d9fc", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/modules/analysis/__tests__/smoke/user-journey.smoke.spec.ts"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-910a93049fb3d9fc", "level": "error", "message": {"text": "Possible secret in backend/src/modules/analysis/__tests__/smoke/user-journey.smoke.spec.ts"}, "properties": {"repobilityId": "081b5797aed0b863", "scanner": "scanner-primary", "fingerprint": "910a93049fb3d9fc", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/modules/analysis/__tests__/smoke/user-journey.smoke.spec.ts"}, "region": {"startLine": 73}}}]}, {"ruleId": "scanner-910a93049fb3d9fc", "level": "error", "message": {"text": "Possible secret in backend/src/modules/analysis/__tests__/smoke/user-journey.smoke.spec.ts"}, "properties": {"repobilityId": "081b5797aed0b863", "scanner": "scanner-primary", "fingerprint": "910a93049fb3d9fc", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/modules/analysis/__tests__/smoke/user-journey.smoke.spec.ts"}, "region": {"startLine": 421}}}]}, {"ruleId": "scanner-c7ed9723fcf288ae", "level": "error", "message": {"text": "Possible secret in backend/src/modules/analysis/__tests__/e2e/analysis-hub.e2e.spec.ts"}, "properties": {"repobilityId": "216f205bd7ce6fe5", "scanner": "scanner-primary", "fingerprint": "c7ed9723fcf288ae", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/src/modules/analysis/__tests__/e2e/analysis-hub.e2e.spec.ts"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-98eac7c7ee5d35f9", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "59aae12d97211723", "scanner": "scanner-primary", "fingerprint": "98eac7c7ee5d35f9", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-production.yml"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-98eac7c7ee5d35f9", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "164cdb4ac7e04797", "scanner": "scanner-primary", "fingerprint": "98eac7c7ee5d35f9", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-production.yml"}, "region": {"startLine": 96}}}]}, {"ruleId": "scanner-98eac7c7ee5d35f9", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b0f01c0680f9d939", "scanner": "scanner-primary", "fingerprint": "98eac7c7ee5d35f9", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-production.yml"}, "region": {"startLine": 113}}}]}, {"ruleId": "scanner-98eac7c7ee5d35f9", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "59aae12d97211723", "scanner": "scanner-primary", "fingerprint": "98eac7c7ee5d35f9", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-production.yml"}, "region": {"startLine": 148}}}]}, {"ruleId": "scanner-98eac7c7ee5d35f9", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4aff4080c859780f", "scanner": "scanner-primary", "fingerprint": "98eac7c7ee5d35f9", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-production.yml"}, "region": {"startLine": 153}}}]}, {"ruleId": "scanner-98eac7c7ee5d35f9", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b0f01c0680f9d939", "scanner": "scanner-primary", "fingerprint": "98eac7c7ee5d35f9", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-production.yml"}, "region": {"startLine": 158}}}]}, {"ruleId": "scanner-98eac7c7ee5d35f9", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ca91cf0b419648b2", "scanner": "scanner-primary", "fingerprint": "98eac7c7ee5d35f9", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-production.yml"}, "region": {"startLine": 170}}}]}, {"ruleId": "scanner-98eac7c7ee5d35f9", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "59aae12d97211723", "scanner": "scanner-primary", "fingerprint": "98eac7c7ee5d35f9", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-production.yml"}, "region": {"startLine": 243}}}]}, {"ruleId": "scanner-98eac7c7ee5d35f9", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4aff4080c859780f", "scanner": "scanner-primary", "fingerprint": "98eac7c7ee5d35f9", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-production.yml"}, "region": {"startLine": 248}}}]}, {"ruleId": "scanner-98eac7c7ee5d35f9", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b0f01c0680f9d939", "scanner": "scanner-primary", "fingerprint": "98eac7c7ee5d35f9", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-production.yml"}, "region": {"startLine": 253}}}]}, {"ruleId": "scanner-98eac7c7ee5d35f9", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ca91cf0b419648b2", "scanner": "scanner-primary", "fingerprint": "98eac7c7ee5d35f9", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-production.yml"}, "region": {"startLine": 265}}}]}, {"ruleId": "scanner-98eac7c7ee5d35f9", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "59aae12d97211723", "scanner": "scanner-primary", "fingerprint": "98eac7c7ee5d35f9", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-production.yml"}, "region": {"startLine": 323}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cb88b360dab5f9c4", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd992aa9c96def55", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 54}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f0309821c66cc5c7", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 90}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cb88b360dab5f9c4", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 110}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd992aa9c96def55", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 113}}}]}, {"ruleId": "scanner-e96c206413ab67cd", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "204bd5074c9bca0b", "scanner": "scanner-primary", "fingerprint": "e96c206413ab67cd", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 124}}}]}, {"ruleId": "scanner-e96c206413ab67cd", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "204bd5074c9bca0b", "scanner": "scanner-primary", "fingerprint": "e96c206413ab67cd", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 137}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cb88b360dab5f9c4", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 164}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f6910555114abfce", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 167}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a48ffdff324f80db", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 173}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b05aedca8deec58d", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 176}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cb88b360dab5f9c4", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 190}}}]}, {"ruleId": "scanner-e96c206413ab67cd", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "7564edbb430181d0", "scanner": "scanner-primary", "fingerprint": "e96c206413ab67cd", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 193}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f0309821c66cc5c7", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 206}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "230e5467dc8bb7d3", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 215}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cb88b360dab5f9c4", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 230}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a3bc2550676d616e", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 235}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cb88b360dab5f9c4", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 294}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd992aa9c96def55", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 297}}}]}, {"ruleId": "scanner-e0662b204e97cff6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f0309821c66cc5c7", "scanner": "scanner-primary", "fingerprint": "e0662b204e97cff6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-scan.yml"}, "region": {"startLine": 321}}}]}, {"ruleId": "scanner-2436c819d540d575", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "850a78df1d063654", "scanner": "scanner-primary", "fingerprint": "2436c819d540d575", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/rollback.yml"}, "region": {"startLine": 70}}}]}, {"ruleId": "scanner-2436c819d540d575", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "dcbfa28e6b6980d5", "scanner": "scanner-primary", "fingerprint": "2436c819d540d575", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/rollback.yml"}, "region": {"startLine": 137}}}]}, {"ruleId": "scanner-2436c819d540d575", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f118647b9b5352ed", "scanner": "scanner-primary", "fingerprint": "2436c819d540d575", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/rollback.yml"}, "region": {"startLine": 155}}}]}, {"ruleId": "scanner-2436c819d540d575", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "850a78df1d063654", "scanner": "scanner-primary", "fingerprint": "2436c819d540d575", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/rollback.yml"}, "region": {"startLine": 182}}}]}, {"ruleId": "scanner-2436c819d540d575", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "64d8e88c19900c58", "scanner": "scanner-primary", "fingerprint": "2436c819d540d575", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/rollback.yml"}, "region": {"startLine": 187}}}]}, {"ruleId": "scanner-2436c819d540d575", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f118647b9b5352ed", "scanner": "scanner-primary", "fingerprint": "2436c819d540d575", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/rollback.yml"}, "region": {"startLine": 192}}}]}, {"ruleId": "scanner-2436c819d540d575", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "850a78df1d063654", "scanner": "scanner-primary", "fingerprint": "2436c819d540d575", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/rollback.yml"}, "region": {"startLine": 272}}}]}, {"ruleId": "scanner-2436c819d540d575", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "64d8e88c19900c58", "scanner": "scanner-primary", "fingerprint": "2436c819d540d575", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/rollback.yml"}, "region": {"startLine": 277}}}]}, {"ruleId": "scanner-2436c819d540d575", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f118647b9b5352ed", "scanner": "scanner-primary", "fingerprint": "2436c819d540d575", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/rollback.yml"}, "region": {"startLine": 282}}}]}, {"ruleId": "scanner-12c83c906d87723e", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bdb08df8cf368258", "scanner": "scanner-primary", "fingerprint": "12c83c906d87723e", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/closure-radius-ratchet.yml"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-36fd3c86ff87e5ff", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "75e29310f7a503b9", "scanner": "scanner-primary", "fingerprint": "36fd3c86ff87e5ff", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-staging.yml"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-36fd3c86ff87e5ff", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "75e29310f7a503b9", "scanner": "scanner-primary", "fingerprint": "36fd3c86ff87e5ff", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-staging.yml"}, "region": {"startLine": 72}}}]}, {"ruleId": "scanner-36fd3c86ff87e5ff", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d6be298b0d265cb4", "scanner": "scanner-primary", "fingerprint": "36fd3c86ff87e5ff", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-staging.yml"}, "region": {"startLine": 75}}}]}, {"ruleId": "scanner-36fd3c86ff87e5ff", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b12883156cb50078", "scanner": "scanner-primary", "fingerprint": "36fd3c86ff87e5ff", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-staging.yml"}, "region": {"startLine": 80}}}]}, {"ruleId": "scanner-36fd3c86ff87e5ff", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d1ed83d087fbc18f", "scanner": "scanner-primary", "fingerprint": "36fd3c86ff87e5ff", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-staging.yml"}, "region": {"startLine": 88}}}]}, {"ruleId": "scanner-36fd3c86ff87e5ff", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "75e29310f7a503b9", "scanner": "scanner-primary", "fingerprint": "36fd3c86ff87e5ff", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-staging.yml"}, "region": {"startLine": 165}}}]}, {"ruleId": "scanner-36fd3c86ff87e5ff", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d6be298b0d265cb4", "scanner": "scanner-primary", "fingerprint": "36fd3c86ff87e5ff", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-staging.yml"}, "region": {"startLine": 168}}}]}, {"ruleId": "scanner-36fd3c86ff87e5ff", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b12883156cb50078", "scanner": "scanner-primary", "fingerprint": "36fd3c86ff87e5ff", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-staging.yml"}, "region": {"startLine": 173}}}]}, {"ruleId": "scanner-36fd3c86ff87e5ff", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d1ed83d087fbc18f", "scanner": "scanner-primary", "fingerprint": "36fd3c86ff87e5ff", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-staging.yml"}, "region": {"startLine": 181}}}]}, {"ruleId": "scanner-36fd3c86ff87e5ff", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "75e29310f7a503b9", "scanner": "scanner-primary", "fingerprint": "36fd3c86ff87e5ff", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-staging.yml"}, "region": {"startLine": 249}}}]}, {"ruleId": "scanner-e44086550b59f1d7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5101e55018e0725f", "scanner": "scanner-primary", "fingerprint": "e44086550b59f1d7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/stryker-mutation.yml"}, "region": {"startLine": 106}}}]}, {"ruleId": "scanner-e44086550b59f1d7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cc11247234b74130", "scanner": "scanner-primary", "fingerprint": "e44086550b59f1d7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/stryker-mutation.yml"}, "region": {"startLine": 140}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 101}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 196}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd7f3c1c34d83159", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 208}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 250}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd7f3c1c34d83159", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 281}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 328}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 430}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd7f3c1c34d83159", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 508}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 585}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd7f3c1c34d83159", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 661}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 675}}}]}, {"ruleId": "scanner-7f1e4527e6fecffa", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "db551ac8d3834700", "scanner": "scanner-primary", "fingerprint": "7f1e4527e6fecffa", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 687}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd7f3c1c34d83159", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 698}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 766}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd7f3c1c34d83159", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 972}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 1044}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd7f3c1c34d83159", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 1187}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 1204}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 1266}}}]}, {"ruleId": "scanner-8cc45581fa1fc2e6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "58bc0503581dd80a", "scanner": "scanner-primary", "fingerprint": "8cc45581fa1fc2e6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/flake-tracker.yml"}, "region": {"startLine": 67}}}]}, {"ruleId": "scanner-8cc45581fa1fc2e6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "eb5666f0b1e34e0b", "scanner": "scanner-primary", "fingerprint": "8cc45581fa1fc2e6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/flake-tracker.yml"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-12520dfa83bf9e0c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "13d3d38e465017d0", "scanner": "scanner-primary", "fingerprint": "12520dfa83bf9e0c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/supply-chain.yml"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-12520dfa83bf9e0c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d681c63719b4a121", "scanner": "scanner-primary", "fingerprint": "12520dfa83bf9e0c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/supply-chain.yml"}, "region": {"startLine": 107}}}]}, {"ruleId": "scanner-12520dfa83bf9e0c", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1f33fc8fc8d7a1bf", "scanner": "scanner-primary", "fingerprint": "12520dfa83bf9e0c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/supply-chain.yml"}, "region": {"startLine": 115}}}]}, {"ruleId": "scanner-12520dfa83bf9e0c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "84b72735210942a2", "scanner": "scanner-primary", "fingerprint": "12520dfa83bf9e0c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/supply-chain.yml"}, "region": {"startLine": 165}}}]}, {"ruleId": "scanner-12520dfa83bf9e0c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0c585d37c5dcbf84", "scanner": "scanner-primary", "fingerprint": "12520dfa83bf9e0c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/supply-chain.yml"}, "region": {"startLine": 176}}}]}, {"ruleId": "scanner-ef10786fff35a1c3", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "a1afb4774eb23cce", "scanner": "scanner-primary", "fingerprint": "ef10786fff35a1c3", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/supply-chain.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-85534030b38fb76c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b4fec26bf6e9b529", "scanner": "scanner-primary", "fingerprint": "85534030b38fb76c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/visual-baseline-capture.yml"}, "region": {"startLine": 77}}}]}, {"ruleId": "scanner-85534030b38fb76c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "385883dd3b879620", "scanner": "scanner-primary", "fingerprint": "85534030b38fb76c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/visual-baseline-capture.yml"}, "region": {"startLine": 139}}}]}, {"ruleId": "scanner-cdc33f1bcdf90590", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "83ee5d901fd5ccb2", "scanner": "scanner-primary", "fingerprint": "cdc33f1bcdf90590", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/quality-gates.yml"}, "region": {"startLine": 60}}}]}, {"ruleId": "scanner-cdc33f1bcdf90590", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "83ee5d901fd5ccb2", "scanner": "scanner-primary", "fingerprint": "cdc33f1bcdf90590", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/quality-gates.yml"}, "region": {"startLine": 125}}}]}, {"ruleId": "scanner-cdc33f1bcdf90590", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "34836e829e5d7aa5", "scanner": "scanner-primary", "fingerprint": "cdc33f1bcdf90590", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/quality-gates.yml"}, "region": {"startLine": 165}}}]}, {"ruleId": "scanner-cdc33f1bcdf90590", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "83ee5d901fd5ccb2", "scanner": "scanner-primary", "fingerprint": "cdc33f1bcdf90590", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/quality-gates.yml"}, "region": {"startLine": 202}}}]}, {"ruleId": "scanner-2a9fd3e62bf951dc", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "96692e4d9703b51b", "scanner": "scanner-primary", "fingerprint": "2a9fd3e62bf951dc", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sbm-benchmark.yml"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-2a9fd3e62bf951dc", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "18e8a663126af57f", "scanner": "scanner-primary", "fingerprint": "2a9fd3e62bf951dc", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sbm-benchmark.yml"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-2a9fd3e62bf951dc", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "45971b63165f8a4f", "scanner": "scanner-primary", "fingerprint": "2a9fd3e62bf951dc", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sbm-benchmark.yml"}, "region": {"startLine": 88}}}]}, {"ruleId": "scanner-fd29edafb835ae30", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c2c6f3983bf02cee", "scanner": "scanner-primary", "fingerprint": "fd29edafb835ae30", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/soak.yml"}, "region": {"startLine": 103}}}]}, {"ruleId": "scanner-fd29edafb835ae30", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c2c6f3983bf02cee", "scanner": "scanner-primary", "fingerprint": "fd29edafb835ae30", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/soak.yml"}, "region": {"startLine": 154}}}]}, {"ruleId": "scanner-fd29edafb835ae30", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c2c6f3983bf02cee", "scanner": "scanner-primary", "fingerprint": "fd29edafb835ae30", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/soak.yml"}, "region": {"startLine": 193}}}]}, {"ruleId": "scanner-fd29edafb835ae30", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c2c6f3983bf02cee", "scanner": "scanner-primary", "fingerprint": "fd29edafb835ae30", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/soak.yml"}, "region": {"startLine": 248}}}]}, {"ruleId": "scanner-f54d0d3a389cb4de", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "93666d037cc96330", "scanner": "scanner-primary", "fingerprint": "f54d0d3a389cb4de", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build.yml"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-f54d0d3a389cb4de", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "524cd7f22306d448", "scanner": "scanner-primary", "fingerprint": "f54d0d3a389cb4de", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build.yml"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-f54d0d3a389cb4de", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f992a0f3a9da3b1a", "scanner": "scanner-primary", "fingerprint": "f54d0d3a389cb4de", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build.yml"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-f54d0d3a389cb4de", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4bda0db7b1e7a219", "scanner": "scanner-primary", "fingerprint": "f54d0d3a389cb4de", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build.yml"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-f54d0d3a389cb4de", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "075f0e1b26becf00", "scanner": "scanner-primary", "fingerprint": "f54d0d3a389cb4de", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build.yml"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-f1fa3dd79d3d1ade", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "9e59209641bae326", "scanner": "scanner-primary", "fingerprint": "f1fa3dd79d3d1ade", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build.yml"}, "region": {"startLine": 81}}}]}, {"ruleId": "scanner-f54d0d3a389cb4de", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2c6663219b74e9a9", "scanner": "scanner-primary", "fingerprint": "f54d0d3a389cb4de", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build.yml"}, "region": {"startLine": 92}}}]}, {"ruleId": "scanner-f54d0d3a389cb4de", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "93666d037cc96330", "scanner": "scanner-primary", "fingerprint": "f54d0d3a389cb4de", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build.yml"}, "region": {"startLine": 110}}}]}, {"ruleId": "scanner-f54d0d3a389cb4de", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "524cd7f22306d448", "scanner": "scanner-primary", "fingerprint": "f54d0d3a389cb4de", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build.yml"}, "region": {"startLine": 113}}}]}, {"ruleId": "scanner-f54d0d3a389cb4de", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f992a0f3a9da3b1a", "scanner": "scanner-primary", "fingerprint": "f54d0d3a389cb4de", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build.yml"}, "region": {"startLine": 117}}}]}, {"ruleId": "scanner-f54d0d3a389cb4de", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4bda0db7b1e7a219", "scanner": "scanner-primary", "fingerprint": "f54d0d3a389cb4de", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build.yml"}, "region": {"startLine": 125}}}]}, {"ruleId": "scanner-f54d0d3a389cb4de", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "075f0e1b26becf00", "scanner": "scanner-primary", "fingerprint": "f54d0d3a389cb4de", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build.yml"}, "region": {"startLine": 138}}}]}, {"ruleId": "scanner-f1fa3dd79d3d1ade", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "9e59209641bae326", "scanner": "scanner-primary", "fingerprint": "f1fa3dd79d3d1ade", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build.yml"}, "region": {"startLine": 157}}}]}, {"ruleId": "scanner-f54d0d3a389cb4de", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2c6663219b74e9a9", "scanner": "scanner-primary", "fingerprint": "f54d0d3a389cb4de", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build.yml"}, "region": {"startLine": 168}}}]}, {"ruleId": "scanner-f54d0d3a389cb4de", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f992a0f3a9da3b1a", "scanner": "scanner-primary", "fingerprint": "f54d0d3a389cb4de", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build.yml"}, "region": {"startLine": 184}}}]}, {"ruleId": "scanner-4724e05098b6722d", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "a669f23915d1d93d", "scanner": "scanner-primary", "fingerprint": "4724e05098b6722d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cb639d9a10a47b23", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "714673743ff59cef", "scanner": "scanner-primary", "fingerprint": "cb639d9a10a47b23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5c5f519e5dafbf03", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "6e4b44dfaedb72cd", "scanner": "scanner-primary", "fingerprint": "5c5f519e5dafbf03", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/schemas/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-93dccca1fb7c158a", "level": "note", "message": {"text": "Very large file: frontend/components/ai/DrOnionChatPanel.tsx (2027 lines)"}, "properties": {"repobilityId": "9cebcad9deb3d85b", "scanner": "scanner-primary", "fingerprint": "93dccca1fb7c158a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8bd607af8cd4b0b0", "level": "note", "message": {"text": "Very large file: frontend/components/hub/sections/ResearchAlignmentMap.tsx (1368 lines)"}, "properties": {"repobilityId": "a77cae24872fbde0", "scanner": "scanner-primary", "fingerprint": "8bd607af8cd4b0b0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c647f90d17dd2a3d", "level": "note", "message": {"text": "Very large file: frontend/components/literature/EnhancedThemeExtractionProgress.tsx (1431 lines)"}, "properties": {"repobilityId": "d3de28da6fbdb627", "scanner": "scanner-primary", "fingerprint": "c647f90d17dd2a3d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4261902ee0988e93", "level": "note", "message": {"text": "Very large file: frontend/components/literature/PurposeSelectionWizard.tsx (1408 lines)"}, "properties": {"repobilityId": "baec43befe530925", "scanner": "scanner-primary", "fingerprint": "4261902ee0988e93", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-afa89369e0632efb", "level": "note", "message": {"text": "Very large file: frontend/components/literature/MethodologyModal.tsx (1291 lines)"}, "properties": {"repobilityId": "77866ea5a4004f5f", "scanner": "scanner-primary", "fingerprint": "afa89369e0632efb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-78cb2a64f60e9292", "level": "note", "message": {"text": "Very large file: frontend/components/literature/ai-research-question/AIResearchQuestionAssistant.tsx (3606 lines)"}, "properties": {"repobilityId": "8daba6a3595cb65b", "scanner": "scanner-primary", "fingerprint": "78cb2a64f60e9292", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5e04693c02c4eb44", "level": "note", "message": {"text": "Very large file: frontend/components/literature/evidence-table/EvidenceTableBuilder.tsx (1584 lines)"}, "properties": {"repobilityId": "004b494f33e01bbd", "scanner": "scanner-primary", "fingerprint": "5e04693c02c4eb44", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9f20bd2b13dfc2c6", "level": "note", "message": {"text": "Very large file: frontend/components/stimuli/StimuliUploadSystemV5.tsx (1516 lines)"}, "properties": {"repobilityId": "be3ae9b5162adf30", "scanner": "scanner-primary", "fingerprint": "9f20bd2b13dfc2c6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-01205a8006d34263", "level": "note", "message": {"text": "Very large file: frontend/components/stimuli/StimuliUploadSystemV7.tsx (1554 lines)"}, "properties": {"repobilityId": "ae950b06ae36425f", "scanner": "scanner-primary", "fingerprint": "01205a8006d34263", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e2732206a7a8ae28", "level": "note", "message": {"text": "Very large file: frontend/components/knowledge/KnowledgeMapShell.tsx (1864 lines)"}, "properties": {"repobilityId": "44f3fc185f6fac2f", "scanner": "scanner-primary", "fingerprint": "e2732206a7a8ae28", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-72e395c4605346e2", "level": "note", "message": {"text": "Very large file: frontend/components/knowledge/panels/NodeDetailPanel.tsx (1282 lines)"}, "properties": {"repobilityId": "df22f35782fda017", "scanner": "scanner-primary", "fingerprint": "72e395c4605346e2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b92d0db34c12d2df", "level": "note", "message": {"text": "Very large file: frontend/components/knowledge/renderers/SVGRenderer.tsx (2786 lines)"}, "properties": {"repobilityId": "770a2751d44546c2", "scanner": "scanner-primary", "fingerprint": "b92d0db34c12d2df", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-55880f179dcbb09a", "level": "note", "message": {"text": "Very large file: frontend/components/knowledge/views/BibliometricReportView.tsx (1223 lines)"}, "properties": {"repobilityId": "fd04875c0dfd6d23", "scanner": "scanner-primary", "fingerprint": "55880f179dcbb09a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea71d53658734939", "level": "note", "message": {"text": "Very large file: frontend/components/knowledge/views/FieldMapView.tsx (2795 lines)"}, "properties": {"repobilityId": "b56270184013f750", "scanner": "scanner-primary", "fingerprint": "ea71d53658734939", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a0597914208b4bf7", "level": "note", "message": {"text": "Very large file: frontend/components/knowledge/export/PublicationReportGenerator.ts (1684 lines)"}, "properties": {"repobilityId": "ea64212977efa5bd", "scanner": "scanner-primary", "fingerprint": "a0597914208b4bf7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1e2784fc0bb85217", "level": "note", "message": {"text": "Very large file: frontend/app/(researcher)/studies/create/page.tsx (1992 lines)"}, "properties": {"repobilityId": "ec16ec2d4ec12c65", "scanner": "scanner-primary", "fingerprint": "1e2784fc0bb85217", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a48a3bd08c3301e8", "level": "note", "message": {"text": "Very large file: frontend/app/(researcher)/design/hypothesis/page.tsx (1415 lines)"}, "properties": {"repobilityId": "3fcaf734aca5a6a4", "scanner": "scanner-primary", "fingerprint": "a48a3bd08c3301e8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-703f29b0aab20cae", "level": "note", "message": {"text": "Very large file: frontend/app/(researcher)/discover/references/page.tsx (2283 lines)"}, "properties": {"repobilityId": "155b3a190a217df6", "scanner": "scanner-primary", "fingerprint": "703f29b0aab20cae", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-499561bb100f97c4", "level": "note", "message": {"text": "Very large file: frontend/app/(researcher)/discover/literature/components/UnifiedSearchHero.tsx (5732 lines)"}, "properties": {"repobilityId": "fcb661629b26fde8", "scanner": "scanner-primary", "fingerprint": "499561bb100f97c4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1262baf57a5e847a", "level": "note", "message": {"text": "Very large file: frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/SearchPipelineOrchestra.tsx (1463 lines)"}, "properties": {"repobilityId": "97f18f6dcd625214", "scanner": "scanner-primary", "fingerprint": "1262baf57a5e847a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4e73a1d6fef8661c", "level": "note", "message": {"text": "Very large file: frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/OrbitalSourceConstellation.tsx (1590 lines)"}, "properties": {"repobilityId": "75fbc53223f1c093", "scanner": "scanner-primary", "fingerprint": "4e73a1d6fef8661c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ef9dbc15c5e1d900", "level": "note", "message": {"text": "Very large file: frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/MethodologyReport.tsx (3082 lines)"}, "properties": {"repobilityId": "96a25ee9f2566921", "scanner": "scanner-primary", "fingerprint": "ef9dbc15c5e1d900", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-42b6e46d59553065", "level": "note", "message": {"text": "Very large file: frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/SourceNode.tsx (1261 lines)"}, "properties": {"repobilityId": "8083e9873c1275f8", "scanner": "scanner-primary", "fingerprint": "42b6e46d59553065", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cb07119d45ae69e3", "level": "note", "message": {"text": "Very large file: frontend/app/(researcher)/discover/literature/hooks/useLiteraturePageState.ts (1207 lines)"}, "properties": {"repobilityId": "a060e63dc9e8c45f", "scanner": "scanner-primary", "fingerprint": "cb07119d45ae69e3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ce6be290dd36e7dc", "level": "note", "message": {"text": "Very large file: frontend/app/(researcher)/discover/literature/containers/StreamingSearchSection.tsx (1967 lines)"}, "properties": {"repobilityId": "81c0232114f9b5ab", "scanner": "scanner-primary", "fingerprint": "ce6be290dd36e7dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7a3d9eb325d58a1d", "level": "note", "message": {"text": "Very large file: frontend/app/(researcher)/discover/literature/containers/LiteratureSearchContainer.tsx (1765 lines)"}, "properties": {"repobilityId": "30139590e814c691", "scanner": "scanner-primary", "fingerprint": "7a3d9eb325d58a1d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-951bab64087af278", "level": "note", "message": {"text": "Very large file: frontend/app/(researcher)/discover/literature/screening/page.tsx (1507 lines)"}, "properties": {"repobilityId": "af6c8b8e5ee16014", "scanner": "scanner-primary", "fingerprint": "951bab64087af278", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bd56a28ee005d535", "level": "note", "message": {"text": "Very large file: frontend/app/(researcher)/discover/gaps/GapsPageDataLayer.tsx (4786 lines)"}, "properties": {"repobilityId": "a3bd641426b48151", "scanner": "scanner-primary", "fingerprint": "bd56a28ee005d535", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-09d66a1b55e885de", "level": "note", "message": {"text": "Very large file: frontend/app/(researcher)/discover/gaps/components/GapDetailView.tsx (1880 lines)"}, "properties": {"repobilityId": "0fe335d87746ef0a", "scanner": "scanner-primary", "fingerprint": "09d66a1b55e885de", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-15194a95138a62d9", "level": "note", "message": {"text": "Very large file: frontend/app/(researcher)/discover/gaps/components/GapRefinementFlow.tsx (1850 lines)"}, "properties": {"repobilityId": "384d442c21949dad", "scanner": "scanner-primary", "fingerprint": "15194a95138a62d9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8a136955607f9b54", "level": "note", "message": {"text": "Very large file: frontend/app/(researcher)/discover/gaps/components/GapCardItem.tsx (1177 lines)"}, "properties": {"repobilityId": "c814e25a3f88c518", "scanner": "scanner-primary", "fingerprint": "8a136955607f9b54", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fca012a0ed6d1029", "level": "note", "message": {"text": "Very large file: frontend/app/(researcher)/discover/gaps/components/GapForestPlot.tsx (1212 lines)"}, "properties": {"repobilityId": "e5cc454f23a50183", "scanner": "scanner-primary", "fingerprint": "fca012a0ed6d1029", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5ef8aa592d12dbed", "level": "note", "message": {"text": "Very large file: frontend/app/(researcher)/discover/gaps/components/PaperTracePanel.tsx (1915 lines)"}, "properties": {"repobilityId": "664f8fe83a47d9de", "scanner": "scanner-primary", "fingerprint": "5ef8aa592d12dbed", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2bfee8d0de423fbd", "level": "note", "message": {"text": "Very large file: frontend/app/(researcher)/discover/gaps/hooks/useGapAnalysisPipeline.ts (4387 lines)"}, "properties": {"repobilityId": "b2150fd04f3fe668", "scanner": "scanner-primary", "fingerprint": "2bfee8d0de423fbd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-049ab4155479bd56", "level": "note", "message": {"text": "Very large file: frontend/lib/types/search-stream.types.ts (1742 lines)"}, "properties": {"repobilityId": "a609ec910499f37f", "scanner": "scanner-primary", "fingerprint": "049ab4155479bd56", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d189387aa4ededc8", "level": "note", "message": {"text": "Very large file: frontend/lib/stores/knowledge-map.store.ts (1686 lines)"}, "properties": {"repobilityId": "226e06ddadd22d4f", "scanner": "scanner-primary", "fingerprint": "d189387aa4ededc8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a2325cef3fa03717", "level": "note", "message": {"text": "Very large file: frontend/lib/api/services/unified-theme-api.service.ts (1596 lines)"}, "properties": {"repobilityId": "620ed4473610ad39", "scanner": "scanner-primary", "fingerprint": "a2325cef3fa03717", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f2963e763038bb07", "level": "note", "message": {"text": "Very large file: frontend/lib/hooks/useWebSocketBase.ts (1806 lines)"}, "properties": {"repobilityId": "7c5b2dce916ce75b", "scanner": "scanner-primary", "fingerprint": "f2963e763038bb07", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3d2de184bfc0d70f", "level": "note", "message": {"text": "Very large file: frontend/lib/hooks/useSearchWebSocket.ts (3920 lines)"}, "properties": {"repobilityId": "78b17bf35dfe2864", "scanner": "scanner-primary", "fingerprint": "3d2de184bfc0d70f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b2ecf4f2f2056d69", "level": "note", "message": {"text": "Very large file: frontend/lib/hooks/useKnowledgeMapData.ts (1968 lines)"}, "properties": {"repobilityId": "c3c76d99a875624d", "scanner": "scanner-primary", "fingerprint": "b2ecf4f2f2056d69", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c0e3f73dd99ce47b", "level": "note", "message": {"text": "Very large file: frontend/lib/hooks/useResearchQuestionWebSocket.ts (1566 lines)"}, "properties": {"repobilityId": "5c90b252a6fdeadb", "scanner": "scanner-primary", "fingerprint": "c0e3f73dd99ce47b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7fa7804e27386430", "level": "note", "message": {"text": "Very large file: frontend/lib/hooks/useKnowledgeGraphBuildSocket.ts (1096 lines)"}, "properties": {"repobilityId": "6e6537949c2edd5d", "scanner": "scanner-primary", "fingerprint": "7fa7804e27386430", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-aefca24848c504dc", "level": "note", "message": {"text": "Very large file: frontend/lib/hooks/__tests__/useKnowledgeMapData.test.ts (1528 lines)"}, "properties": {"repobilityId": "75c7c6b2f680ce56", "scanner": "scanner-primary", "fingerprint": "aefca24848c504dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e08678d52efcaec4", "level": "note", "message": {"text": "Very large file: frontend/lib/services/literature-api.service.ts (6325 lines)"}, "properties": {"repobilityId": "f2a2ccb41692bf53", "scanner": "scanner-primary", "fingerprint": "e08678d52efcaec4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bebb814419460910", "level": "note", "message": {"text": "Very large file: frontend/lib/services/search-suggestions.service.ts (2571 lines)"}, "properties": {"repobilityId": "fcdce1dcf24eccd2", "scanner": "scanner-primary", "fingerprint": "bebb814419460910", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fb4b1cc5bd8297e5", "level": "note", "message": {"text": "Very large file: frontend/lib/services/__tests__/search-suggestions.service.test.ts (1908 lines)"}, "properties": {"repobilityId": "60c9ed912c67bcd8", "scanner": "scanner-primary", "fingerprint": "fb4b1cc5bd8297e5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2c63903a1b6a27a2", "level": "note", "message": {"text": "Very large file: frontend/e2e/phase-10930-knowledge-map-science.spec.ts (1179 lines)"}, "properties": {"repobilityId": "7fa069d5ccce84eb", "scanner": "scanner-primary", "fingerprint": "2c63903a1b6a27a2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-afb4f6c71292d0b3", "level": "note", "message": {"text": "Very large file: scripts/dev-netflix-v2.js (1719 lines)"}, "properties": {"repobilityId": "41e5294e71351668", "scanner": "scanner-primary", "fingerprint": "afb4f6c71292d0b3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f02475bc8527891f", "level": "note", "message": {"text": "Very large file: backend/src/common/monitoring/enhanced-metrics.service.ts (2258 lines)"}, "properties": {"repobilityId": "c0da9fc7f739db84", "scanner": "scanner-primary", "fingerprint": "f02475bc8527891f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-12bd02248c6bd651", "level": "note", "message": {"text": "Very large file: backend/src/modules/ai/constants/dr-onionstein-golden-questions.constants.ts (1554 lines)"}, "properties": {"repobilityId": "f5efbbe6ff992942", "scanner": "scanner-primary", "fingerprint": "12bd02248c6bd651", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5bbdfc6be8482535", "level": "note", "message": {"text": "Very large file: backend/src/modules/ai/gateways/dr-onionstein.gateway.ts (1772 lines)"}, "properties": {"repobilityId": "15d96b953eabb55d", "scanner": "scanner-primary", "fingerprint": "5bbdfc6be8482535", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-432f860a20fb4679", "level": "note", "message": {"text": "Very large file: backend/src/modules/ai/services/unified-ai.service.ts (2083 lines)"}, "properties": {"repobilityId": "8d093b3a87d9a23f", "scanner": "scanner-primary", "fingerprint": "432f860a20fb4679", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-86fb71e7c4494ec3", "level": "note", "message": {"text": "Very large file: backend/src/modules/ai/services/dr-onionstein-study-data.service.ts (1861 lines)"}, "properties": {"repobilityId": "8a3b5d18215bf28d", "scanner": "scanner-primary", "fingerprint": "86fb71e7c4494ec3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3974f58ae6166fc1", "level": "note", "message": {"text": "Very large file: backend/src/modules/ai/services/dr-onionstein-orchestrator.service.ts (2657 lines)"}, "properties": {"repobilityId": "85463c5a364065d0", "scanner": "scanner-primary", "fingerprint": "3974f58ae6166fc1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-77fbbe5855c7b06c", "level": "note", "message": {"text": "Very large file: backend/src/modules/ai/services/research-question-assistant.service.ts (3970 lines)"}, "properties": {"repobilityId": "75f9cf1f44ab5031", "scanner": "scanner-primary", "fingerprint": "77fbbe5855c7b06c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6ffa8a5e1db187bc", "level": "note", "message": {"text": "Very large file: backend/src/modules/ai/services/query-expansion.service.ts (1290 lines)"}, "properties": {"repobilityId": "e5b830f12e6c56ad", "scanner": "scanner-primary", "fingerprint": "6ffa8a5e1db187bc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ab5f4d73d225b0f7", "level": "note", "message": {"text": "Very large file: backend/src/modules/ai/services/__tests__/research-question-assistant.service.spec.ts (1901 lines)"}, "properties": {"repobilityId": "da3a56bc54244185", "scanner": "scanner-primary", "fingerprint": "ab5f4d73d225b0f7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ce4fd8b8e6df9c2d", "level": "note", "message": {"text": "Very large file: backend/src/modules/auth/controllers/auth.controller.ts (2910 lines)"}, "properties": {"repobilityId": "b89b1b79de235132", "scanner": "scanner-primary", "fingerprint": "ce4fd8b8e6df9c2d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1da833a2246967f8", "level": "note", "message": {"text": "Very large file: backend/src/modules/auth/services/auth.service.ts (1688 lines)"}, "properties": {"repobilityId": "40ce0ce470c0ecdd", "scanner": "scanner-primary", "fingerprint": "1da833a2246967f8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2811bc6ec477a379", "level": "note", "message": {"text": "Very large file: backend/src/modules/auth/services/user-deletion.service.ts (1588 lines)"}, "properties": {"repobilityId": "b1a25cc4c0d504c7", "scanner": "scanner-primary", "fingerprint": "2811bc6ec477a379", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1c25b119fc476ab8", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/literature.gateway.ts (3891 lines)"}, "properties": {"repobilityId": "cf49cac4b60a3300", "scanner": "scanner-primary", "fingerprint": "1c25b119fc476ab8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-516f9b9515b6f0da", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/literature.module.ts (875 lines)"}, "properties": {"repobilityId": "0366f2772af6f316", "scanner": "scanner-primary", "fingerprint": "516f9b9515b6f0da", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5493b3412340b38f", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/literature.service.ts (3091 lines)"}, "properties": {"repobilityId": "00d91956f624f336", "scanner": "scanner-primary", "fingerprint": "5493b3412340b38f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c86ef609b68e15f9", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/__tests__/integration/e2e-pipeline.integration.spec.ts (1902 lines)"}, "properties": {"repobilityId": "92675370bb52cac8", "scanner": "scanner-primary", "fingerprint": "c86ef609b68e15f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1f83f4bd2c29ecab", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/__tests__/integration/theme-extraction-6stage.integration.spec.ts (2227 lines)"}, "properties": {"repobilityId": "37fce33b3387ff0b", "scanner": "scanner-primary", "fingerprint": "1f83f4bd2c29ecab", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-213cb0a70b8235f9", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/__tests__/integration/lit-review-to-gaps.integration.spec.ts (1472 lines)"}, "properties": {"repobilityId": "a990f030ac443e77", "scanner": "scanner-primary", "fingerprint": "213cb0a70b8235f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-373cdfff6c0d0ee0", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/__tests__/integration/adversarial-pipeline.integration.spec.ts (2233 lines)"}, "properties": {"repobilityId": "9a6fd746a541f3d5", "scanner": "scanner-primary", "fingerprint": "373cdfff6c0d0ee0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ee4f146fb676f7c6", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/dto/literature.dto.ts (2930 lines)"}, "properties": {"repobilityId": "a587d62e4f0ba226", "scanner": "scanner-primary", "fingerprint": "ee4f146fb676f7c6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-92538bbc99bd6998", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/controllers/gap-analyze-writes.controller.ts (2089 lines)"}, "properties": {"repobilityId": "176b81c05be427cb", "scanner": "scanner-primary", "fingerprint": "92538bbc99bd6998", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-67b3f1991b1bb1c2", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/controllers/bibliometric-report.controller.ts (1338 lines)"}, "properties": {"repobilityId": "b1ac046a7e650469", "scanner": "scanner-primary", "fingerprint": "67b3f1991b1bb1c2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-46851a99f8d34266", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/controllers/paper-library.controller.ts (1496 lines)"}, "properties": {"repobilityId": "3b89468482ec9715", "scanner": "scanner-primary", "fingerprint": "46851a99f8d34266", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2c2afe0ea8a8d3c3", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/controllers/corpus-snapshot.controller.ts (1779 lines)"}, "properties": {"repobilityId": "0fc2353848d44cf5", "scanner": "scanner-primary", "fingerprint": "2c2afe0ea8a8d3c3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f4a1a469f66ae9c1", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/controllers/knowledge-graph.controller.ts (3403 lines)"}, "properties": {"repobilityId": "4f72c5b41646653f", "scanner": "scanner-primary", "fingerprint": "f4a1a469f66ae9c1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e5548b0bd44ed8b3", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/controllers/theme-extraction-advanced.controller.ts (2400 lines)"}, "properties": {"repobilityId": "01a14799e8e4af74", "scanner": "scanner-primary", "fingerprint": "e5548b0bd44ed8b3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e134a9acbd4bd213", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/controllers/__tests__/knowledge-graph.controller.spec.ts (2470 lines)"}, "properties": {"repobilityId": "00617da8ec7cd23c", "scanner": "scanner-primary", "fingerprint": "e134a9acbd4bd213", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b05423c2c5a552b1", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/controllers/__tests__/corpus-snapshot.controller.spec.ts (1676 lines)"}, "properties": {"repobilityId": "75d98e1ba47aaa38", "scanner": "scanner-primary", "fingerprint": "b05423c2c5a552b1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9c226b005433794f", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/controllers/__tests__/gap-analyze-writes.controller.spec.ts (1303 lines)"}, "properties": {"repobilityId": "47a82e160684b8f0", "scanner": "scanner-primary", "fingerprint": "9c226b005433794f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8dcf6bcc24edbfb4", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/gateways/screening-workflow.gateway.ts (1494 lines)"}, "properties": {"repobilityId": "7eb6e5ad596cf712", "scanner": "scanner-primary", "fingerprint": "8dcf6bcc24edbfb4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5bba3364b5483f0f", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/screening-workflow.service.ts (1829 lines)"}, "properties": {"repobilityId": "6497491cb50887b5", "scanner": "scanner-primary", "fingerprint": "5bba3364b5483f0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b8a5567af9d4d09f", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/hypothesis-generation-pipeline.service.ts (2585 lines)"}, "properties": {"repobilityId": "a546a9a23725a3be", "scanner": "scanner-primary", "fingerprint": "b8a5567af9d4d09f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d8226d4c2df2681c", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/unified-theme-extraction.service.ts (4589 lines)"}, "properties": {"repobilityId": "8a444e5ddc0c6875", "scanner": "scanner-primary", "fingerprint": "d8226d4c2df2681c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-19aadd102dbe3ab7", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/universal-citation-enrichment.service.ts (1831 lines)"}, "properties": {"repobilityId": "2f77934f25ad6e1d", "scanner": "scanner-primary", "fingerprint": "19aadd102dbe3ab7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-007d778660543d7f", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/gap-persistence.service.ts (2381 lines)"}, "properties": {"repobilityId": "f8a77306eda1a139", "scanner": "scanner-primary", "fingerprint": "007d778660543d7f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-22848eadd99a2f39", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/neural-relevance.service.ts (1366 lines)"}, "properties": {"repobilityId": "b41cab5f02be3d87", "scanner": "scanner-primary", "fingerprint": "22848eadd99a2f39", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f8d9d0d3f4f3f3de", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/collaborative-screening.service.ts (1811 lines)"}, "properties": {"repobilityId": "0088386c314aa9d4", "scanner": "scanner-primary", "fingerprint": "f8d9d0d3f4f3f3de", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2e8e023ba1ad7578", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/sentence-provenance.service.ts (1865 lines)"}, "properties": {"repobilityId": "5f6cb31cc92c94d3", "scanner": "scanner-primary", "fingerprint": "2e8e023ba1ad7578", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ab5ba32e5b7e8374", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/evidence-table.service.ts (1891 lines)"}, "properties": {"repobilityId": "b0120f60ad5c738c", "scanner": "scanner-primary", "fingerprint": "ab5ba32e5b7e8374", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d4b150b775167c3a", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/paper-database.service.ts (2872 lines)"}, "properties": {"repobilityId": "843e97d8a0c2dd5f", "scanner": "scanner-primary", "fingerprint": "d4b150b775167c3a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-dbb02c512a86b516", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/unified-thematization.service.ts (2176 lines)"}, "properties": {"repobilityId": "8144eece57d7b358", "scanner": "scanner-primary", "fingerprint": "dbb02c512a86b516", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-04a5329b0c18ff76", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/search-pipeline.service.ts (4311 lines)"}, "properties": {"repobilityId": "a183ca9d91416e3e", "scanner": "scanner-primary", "fingerprint": "04a5329b0c18ff76", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6bdcd15e1346471b", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/theme-extraction.service.ts (2496 lines)"}, "properties": {"repobilityId": "a9ce96db50304441", "scanner": "scanner-primary", "fingerprint": "6bdcd15e1346471b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ca2d432d17a5a58e", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/intelligent-fulltext-detection.service.ts (3555 lines)"}, "properties": {"repobilityId": "cd3ee7533431c372", "scanner": "scanner-primary", "fingerprint": "ca2d432d17a5a58e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2ab8d8488ac6bdbf", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/source-router.service.ts (1330 lines)"}, "properties": {"repobilityId": "e57c56f10a69464b", "scanner": "scanner-primary", "fingerprint": "2ab8d8488ac6bdbf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cd284453913b0f16", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/search-stream.service.ts (9519 lines)"}, "properties": {"repobilityId": "44251b7642f9289b", "scanner": "scanner-primary", "fingerprint": "cd284453913b0f16", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7a8b2eb6200cec7c", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/search-artifact.service.ts (1359 lines)"}, "properties": {"repobilityId": "c7c14808bb6f1044", "scanner": "scanner-primary", "fingerprint": "7a8b2eb6200cec7c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-78357e72b1833abf", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/html-full-text.service.ts (1541 lines)"}, "properties": {"repobilityId": "c3f6734bc0c139de", "scanner": "scanner-primary", "fingerprint": "78357e72b1833abf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4c4cd32fd8cc8120", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/orcid-works.service.ts (1722 lines)"}, "properties": {"repobilityId": "d2cfc6e65a678b18", "scanner": "scanner-primary", "fingerprint": "4c4cd32fd8cc8120", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-48df40a50261b69b", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/claim-extraction.service.ts (2012 lines)"}, "properties": {"repobilityId": "3126073583f64c64", "scanner": "scanner-primary", "fingerprint": "48df40a50261b69b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cd1f8c7af827bb8f", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/knowledge-graph.service.ts (6189 lines)"}, "properties": {"repobilityId": "20b6426b6a564d3c", "scanner": "scanner-primary", "fingerprint": "cd1f8c7af827bb8f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d43c214b08c428cb", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/citation-validation.service.ts (2419 lines)"}, "properties": {"repobilityId": "a8a98728b5a9d779", "scanner": "scanner-primary", "fingerprint": "d43c214b08c428cb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-557e77a0598aa8f0", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/prisma-generator.service.ts (1790 lines)"}, "properties": {"repobilityId": "295733eb9401192b", "scanner": "scanner-primary", "fingerprint": "557e77a0598aa8f0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-eb155523f277ac6a", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/corpus-snapshot.service.ts (1629 lines)"}, "properties": {"repobilityId": "dff4a2998a34b456", "scanner": "scanner-primary", "fingerprint": "eb155523f277ac6a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d8cc8d7184deb42a", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/structural-gap-resonance.service.ts (1949 lines)"}, "properties": {"repobilityId": "646abe459c46ec73", "scanner": "scanner-primary", "fingerprint": "d8cc8d7184deb42a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-db01a478756b07c7", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/pdf-parsing.service.ts (2666 lines)"}, "properties": {"repobilityId": "30698300f68b7e15", "scanner": "scanner-primary", "fingerprint": "db01a478756b07c7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-afb641d61ceed2e3", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/gap-analyzer.service.spec.ts (1830 lines)"}, "properties": {"repobilityId": "58e37608eb8a0b30", "scanner": "scanner-primary", "fingerprint": "afb641d61ceed2e3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6f4200bb8d2a8672", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/__tests__/gap-refinement-loop.service.spec.ts (1633 lines)"}, "properties": {"repobilityId": "529904a13a71288f", "scanner": "scanner-primary", "fingerprint": "6f4200bb8d2a8672", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8d49616728d6f0e0", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/__tests__/discourse-triangulation.service.spec.ts (1479 lines)"}, "properties": {"repobilityId": "8774c5ef46a8599b", "scanner": "scanner-primary", "fingerprint": "8d49616728d6f0e0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7a1e1f770eff817b", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/__tests__/evidence-quality-scorer.service.spec.ts (1649 lines)"}, "properties": {"repobilityId": "f465bcb238f46254", "scanner": "scanner-primary", "fingerprint": "7a1e1f770eff817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7a27855db3978854", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/__tests__/intelligent-fulltext-detection.service.spec.ts (1643 lines)"}, "properties": {"repobilityId": "36d8468b9b55a357", "scanner": "scanner-primary", "fingerprint": "7a27855db3978854", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-86e9c535e19b0d2a", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/__tests__/prisma-generator.service.spec.ts (1374 lines)"}, "properties": {"repobilityId": "a71eda7471a30bbc", "scanner": "scanner-primary", "fingerprint": "86e9c535e19b0d2a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e0fb95374c1a588e", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/__tests__/knowledge-graph.service.spec.ts (2865 lines)"}, "properties": {"repobilityId": "24a4245da98b1bdc", "scanner": "scanner-primary", "fingerprint": "e0fb95374c1a588e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-92bfa8fe7c591096", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/__tests__/search-pipeline.service.spec.ts (1540 lines)"}, "properties": {"repobilityId": "52fdd90dd4ef79db", "scanner": "scanner-primary", "fingerprint": "92bfa8fe7c591096", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-397e8cfd2e69127a", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/__tests__/wiley.service.spec.ts (1597 lines)"}, "properties": {"repobilityId": "0ab181c630ccd6f8", "scanner": "scanner-primary", "fingerprint": "397e8cfd2e69127a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-51dff750b774147b", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/__tests__/purpose-aware-scoring.service.spec.ts (1520 lines)"}, "properties": {"repobilityId": "0bf4d5ed0f9f5603", "scanner": "scanner-primary", "fingerprint": "51dff750b774147b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-70f634460a29096c", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/__tests__/openalex.service.spec.ts (1610 lines)"}, "properties": {"repobilityId": "00233d493d464b0d", "scanner": "scanner-primary", "fingerprint": "70f634460a29096c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0d9a61f1686b4251", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/__tests__/concourse-mining.service.spec.ts (1567 lines)"}, "properties": {"repobilityId": "43010bc7497c0039", "scanner": "scanner-primary", "fingerprint": "0d9a61f1686b4251", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b1fe9b55b7aedcc3", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/__tests__/ieee.service.spec.ts (1587 lines)"}, "properties": {"repobilityId": "6e682b6bec307a96", "scanner": "scanner-primary", "fingerprint": "b1fe9b55b7aedcc3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e25fb537db76e047", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/__tests__/unified-theme-extraction-6stage.service.spec.ts (1778 lines)"}, "properties": {"repobilityId": "96eb36836f111863", "scanner": "scanner-primary", "fingerprint": "e25fb537db76e047", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-70e9c6766121f7ca", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/gap-analysis/gap-refinement-loop.service.ts (2189 lines)"}, "properties": {"repobilityId": "a2ea5b105751cc08", "scanner": "scanner-primary", "fingerprint": "70e9c6766121f7ca", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-732724734a0215aa", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/gap-analysis/gap-detection.service.ts (3109 lines)"}, "properties": {"repobilityId": "f6bc577503458c90", "scanner": "scanner-primary", "fingerprint": "732724734a0215aa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bb0fa64622842394", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/theme-extraction/coherence-calculation.service.ts (3473 lines)"}, "properties": {"repobilityId": "c098042d1e689852", "scanner": "scanner-primary", "fingerprint": "bb0fa64622842394", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f0999b1b578a6273", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/theme-extraction/theme-refinement.service.spec.ts (1362 lines)"}, "properties": {"repobilityId": "f6774207755f10fd", "scanner": "scanner-primary", "fingerprint": "f0999b1b578a6273", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-dc9b4d006879ccf1", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/theme-extraction/validation-strategy.service.ts (1966 lines)"}, "properties": {"repobilityId": "03d985c04cd1d754", "scanner": "scanner-primary", "fingerprint": "dc9b4d006879ccf1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-77eebe556405f012", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/theme-extraction/theme-generation-stage.service.ts (1333 lines)"}, "properties": {"repobilityId": "e8d95da962891f4b", "scanner": "scanner-primary", "fingerprint": "77eebe556405f012", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ab3e32db0d5911eb", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/theme-extraction/coherence-calculation.service.spec.ts (4189 lines)"}, "properties": {"repobilityId": "a5d63c29d4436bf0", "scanner": "scanner-primary", "fingerprint": "ab3e32db0d5911eb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9ed2d4555a57675c", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/theme-extraction/validation-strategy.service.spec.ts (1944 lines)"}, "properties": {"repobilityId": "9acd8c5468441105", "scanner": "scanner-primary", "fingerprint": "9ed2d4555a57675c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-64b20c9ba331e749", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/theme-extraction/saturation-analysis.service.ts (2198 lines)"}, "properties": {"repobilityId": "1f434e105b2c2d20", "scanner": "scanner-primary", "fingerprint": "64b20c9ba331e749", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fd296ba98a136841", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/theme-extraction/coherence-ensemble.service.ts (1384 lines)"}, "properties": {"repobilityId": "8f0a8dec1b94ef57", "scanner": "scanner-primary", "fingerprint": "fd296ba98a136841", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-446046a01213957c", "level": "note", "message": {"text": "Very large file: backend/src/modules/literature/services/theme-extraction/saturation-analysis.service.spec.ts (1497 lines)"}, "properties": {"repobilityId": "977be60552cca995", "scanner": "scanner-primary", "fingerprint": "446046a01213957c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-414a436ae99ede64", "level": "note", "message": {"text": "Very large file: backend/src/modules/report/controllers/report.controller.ts (2402 lines)"}, "properties": {"repobilityId": "feb7e22a3fcc7895", "scanner": "scanner-primary", "fingerprint": "414a436ae99ede64", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bf240832b00d6b1d", "level": "note", "message": {"text": "Very large file: backend/src/modules/report/services/report-generator.service.ts (3827 lines)"}, "properties": {"repobilityId": "e625591505d7b9e2", "scanner": "scanner-primary", "fingerprint": "bf240832b00d6b1d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-91626cccb03092ae", "level": "note", "message": {"text": "370 TODO/FIXME markers"}, "properties": {"repobilityId": "4b38c118003e07d2", "scanner": "scanner-primary", "fingerprint": "91626cccb03092ae", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["maintenance"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "c8ac914fcb5ba0c2", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-0e8a76eb13fd3249", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: frontend/package.json"}, "properties": {"repobilityId": "d8c65da5b68ee95b", "scanner": "scanner-primary", "fingerprint": "0e8a76eb13fd3249", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-14047004e0b8270b", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/schemas/package.json"}, "properties": {"repobilityId": "7a6083ee788cc45d", "scanner": "scanner-primary", "fingerprint": "14047004e0b8270b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/schemas/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3a092b5c39e242a1", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: backend/package.json"}, "properties": {"repobilityId": "fc853e57ce7048c4", "scanner": "scanner-primary", "fingerprint": "3a092b5c39e242a1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "7945d7b0a13bcaa3", "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": "50963125b8359902", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "3194e5698ec7ceab", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "a0c3591d26cd7fb7", "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": "066e7169dc39159b", "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": "d63f218b041990a8", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "133b55a99ffdddc9", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "acc0ba69c5274d14", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-cc55229a7a3c078d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .mcp.json"}, "properties": {"repobilityId": "51942fb3d5b8b5b4", "scanner": "scanner-primary", "fingerprint": "cc55229a7a3c078d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "mcp_config"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".mcp.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2c5f98b152cddb6d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/launch.json"}, "properties": {"repobilityId": "0de48c0f4ab303d8", "scanner": "scanner-primary", "fingerprint": "2c5f98b152cddb6d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/launch.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fabedc9557e3815b", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/collab-refs/MECHANICAL_SWEEP.md"}, "properties": {"repobilityId": "61da1794b227af7e", "scanner": "scanner-primary", "fingerprint": "fabedc9557e3815b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/collab-refs/MECHANICAL_SWEEP.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0612aecc07393f21", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 __tests__/phase-6.85-integration.test.tsx:253"}, "properties": {"repobilityId": "ee027efee1e56588", "scanner": "scanner-primary", "fingerprint": "0612aecc07393f21", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-adcd3368593f5a8e", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/playwright.config.ts:23"}, "properties": {"repobilityId": "d72ac76174250d7d", "scanner": "scanner-primary", "fingerprint": "adcd3368593f5a8e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a78ef82a73e0d95b", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/tailwind.config.js:157"}, "properties": {"repobilityId": "5dd97390265b27cd", "scanner": "scanner-primary", "fingerprint": "a78ef82a73e0d95b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-137dca2b3d927052", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/middleware.ts:21"}, "properties": {"repobilityId": "51c4bf2e46d4b355", "scanner": "scanner-primary", "fingerprint": "137dca2b3d927052", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bcfad2f732c6e6ed", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/sentry.client.config.ts:27"}, "properties": {"repobilityId": "bf9b3e37c4d480f8", "scanner": "scanner-primary", "fingerprint": "bcfad2f732c6e6ed", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-907333989adfae25", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/__tests__/e2e/participant-flow.spec.ts:413"}, "properties": {"repobilityId": "af8739a1277d7cf5", "scanner": "scanner-primary", "fingerprint": "907333989adfae25", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-23f87ab686b94c1e", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/test/setup.ts:24"}, "properties": {"repobilityId": "288fae4d48340cdf", "scanner": "scanner-primary", "fingerprint": "23f87ab686b94c1e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b3a9f6c87002dc7c", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/test/auth/auth.test.tsx:68"}, "properties": {"repobilityId": "0d535ea192190858", "scanner": "scanner-primary", "fingerprint": "b3a9f6c87002dc7c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e0d4b67e32af035b", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/scripts/tier61-km-browser-verify.mjs:11"}, "properties": {"repobilityId": "cdd332e49404ca8d", "scanner": "scanner-primary", "fingerprint": "e0d4b67e32af035b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-61a9dcf54b099115", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/scripts/tier61-e2e-lit-to-km.mjs:335"}, "properties": {"repobilityId": "17de3ec1430299f7", "scanner": "scanner-primary", "fingerprint": "61a9dcf54b099115", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-06a69e9161f3353a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/scripts/tier61-e2e-lit-to-km.mjs:282"}, "properties": {"repobilityId": "08f63d413b4a25ee", "scanner": "scanner-primary", "fingerprint": "06a69e9161f3353a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6572db741cbc17e3", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/participant/Commentary.tsx:15"}, "properties": {"repobilityId": "b7334791b78a557d", "scanner": "scanner-primary", "fingerprint": "6572db741cbc17e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-523ed0382416bea6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/study-creation/ResearcherSignature.tsx:50"}, "properties": {"repobilityId": "5a5eacc7debe4c98", "scanner": "scanner-primary", "fingerprint": "523ed0382416bea6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-25e90ebc38a33047", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/components/ai/DrOnionChatPanel.tsx:54"}, "properties": {"repobilityId": "5ed8a84f9d0e2154", "scanner": "scanner-primary", "fingerprint": "25e90ebc38a33047", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-57c3383dbc3ae91e", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/components/ai/DrOnionLiquidGlassFab.tsx:65"}, "properties": {"repobilityId": "daf711448deb826e", "scanner": "scanner-primary", "fingerprint": "57c3383dbc3ae91e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0dd031e0ee6bd6d2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/ai/AIUsageDashboard.tsx:101"}, "properties": {"repobilityId": "c4184e96acb01629", "scanner": "scanner-primary", "fingerprint": "0dd031e0ee6bd6d2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c825da496c707a38", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/components/ai/DrOnionSuggestionCards.tsx:108"}, "properties": {"repobilityId": "d861f1eef950aaa6", "scanner": "scanner-primary", "fingerprint": "c825da496c707a38", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f15865016593fc8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/hub/sections/VisualizationCenter.tsx:382"}, "properties": {"repobilityId": "63a806dd2c23f4c6", "scanner": "scanner-primary", "fingerprint": "2f15865016593fc8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ba8b9b1147fbba83", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/hub/sections/DataExplorer.tsx:118"}, "properties": {"repobilityId": "8ac0d0f4c6d5a7f2", "scanner": "scanner-primary", "fingerprint": "ba8b9b1147fbba83", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-711d780ec25deb13", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/components/navigation/UnifiedSidebar.tsx:185"}, "properties": {"repobilityId": "00fa77ce89e6850e", "scanner": "scanner-primary", "fingerprint": "711d780ec25deb13", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa6a7d9320b8bb03", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/components/navigation/DiscoverStepGuard.tsx:58"}, "properties": {"repobilityId": "fc58a2dfd33bb9ce", "scanner": "scanner-primary", "fingerprint": "fa6a7d9320b8bb03", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1151aff4f3220097", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/auth/TransitionStage.tsx:136"}, "properties": {"repobilityId": "f979e2404baa96b2", "scanner": "scanner-primary", "fingerprint": "1151aff4f3220097", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d9296653b53e0c28", "level": "none", "message": {"text": "Commented-code block (14 lines) in frontend/components/auth/PostLoginTransition.tsx:102"}, "properties": {"repobilityId": "fed02692bac50e9f", "scanner": "scanner-primary", "fingerprint": "d9296653b53e0c28", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-21d3517cdcdf2921", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/components/questionnaire/QuestionnaireBuilderPro.tsx:65"}, "properties": {"repobilityId": "7975b8b0fba1dd97", "scanner": "scanner-primary", "fingerprint": "21d3517cdcdf2921", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8779b342de50e1b5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/questionnaire/professional/APIAccessManager.tsx:119"}, "properties": {"repobilityId": "853a12e4c7d64335", "scanner": "scanner-primary", "fingerprint": "8779b342de50e1b5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6b8ba05ccdb1ebf7", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/components/ui/dropdown-menu.tsx:75"}, "properties": {"repobilityId": "bc8e27e2eac41b76", "scanner": "scanner-primary", "fingerprint": "6b8ba05ccdb1ebf7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a922fdca2218f632", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/components/ui/AutoTriggerErrorRecovery.tsx:144"}, "properties": {"repobilityId": "413dfbc035c3ee27", "scanner": "scanner-primary", "fingerprint": "a922fdca2218f632", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-48bfec0de6d04411", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/ui/HealthStatusIndicator.tsx:90"}, "properties": {"repobilityId": "461811f0826f69df", "scanner": "scanner-primary", "fingerprint": "48bfec0de6d04411", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fc038f88dc469bbe", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/components/visualizations/q-methodology/EigenvalueScreePlot.tsx:187"}, "properties": {"repobilityId": "5cb6639a226171bc", "scanner": "scanner-primary", "fingerprint": "fc038f88dc469bbe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6cef3cdbab91287d", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/visualizations/q-methodology/FactorArraysVisualization.tsx:221"}, "properties": {"repobilityId": "878006225d8aed3c", "scanner": "scanner-primary", "fingerprint": "6cef3cdbab91287d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-82574787a5b44475", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/components/visualizations/q-methodology/CorrelationHeatmap.tsx:234"}, "properties": {"repobilityId": "7cbe09f7a8c9cf86", "scanner": "scanner-primary", "fingerprint": "82574787a5b44475", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-68f8acad85207dbd", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/visualizations/q-methodology/FactorLoadingChart.tsx:299"}, "properties": {"repobilityId": "2786fbbd95532854", "scanner": "scanner-primary", "fingerprint": "68f8acad85207dbd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6dea25d8ee5b3e31", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/providers/AutoFullTextDetectionProvider.tsx:113"}, "properties": {"repobilityId": "dacda644c3ba6fe9", "scanner": "scanner-primary", "fingerprint": "6dea25d8ee5b3e31", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b83fb1f9fdeb1a80", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/components/providers/PurposeTintProvider.tsx:44"}, "properties": {"repobilityId": "bd90cf105f8f5d00", "scanner": "scanner-primary", "fingerprint": "b83fb1f9fdeb1a80", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1dd961cdcc9e9ac9", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/components/providers/AuthProvider.tsx:115"}, "properties": {"repobilityId": "e5b33a5f66493eb1", "scanner": "scanner-primary", "fingerprint": "1dd961cdcc9e9ac9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f55483de36471966", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/components/literature/CitationEnrichmentMonitoringCard.tsx:80"}, "properties": {"repobilityId": "aab8ea81172263fa", "scanner": "scanner-primary", "fingerprint": "f55483de36471966", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8eea0edffa2d95ea", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/components/literature/StudiesBootstrapper.tsx:82"}, "properties": {"repobilityId": "cc8d7376b80be595", "scanner": "scanner-primary", "fingerprint": "8eea0edffa2d95ea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2018a2cb61973783", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/literature/studiesFetchWithRetry.ts:173"}, "properties": {"repobilityId": "345bb236e48dc2f7", "scanner": "scanner-primary", "fingerprint": "2018a2cb61973783", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e095184a6894c7c8", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/components/literature/StudyContextBanner.tsx:75"}, "properties": {"repobilityId": "757c763a4063aa79", "scanner": "scanner-primary", "fingerprint": "e095184a6894c7c8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b3b95111cf576cd", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/literature/CreateStudyModal.tsx:344"}, "properties": {"repobilityId": "bca6ce1b2eb9cc42", "scanner": "scanner-primary", "fingerprint": "0b3b95111cf576cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e149864ec711533d", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/literature/TikTokTrendsGrid.tsx:72"}, "properties": {"repobilityId": "c6864e77d1eb1750", "scanner": "scanner-primary", "fingerprint": "e149864ec711533d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd7296409f7aca45", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/components/literature/__tests__/MethodologyModal.test.tsx:120"}, "properties": {"repobilityId": "48336ddd99a0b16f", "scanner": "scanner-primary", "fingerprint": "fd7296409f7aca45", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d39fd2df6b8c2553", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/literature/prisma/PRISMAFlowDiagram.tsx:517"}, "properties": {"repobilityId": "bcbc0fef500bd323", "scanner": "scanner-primary", "fingerprint": "d39fd2df6b8c2553", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-722e2e2dd2944938", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/components/literature/ai-research-question/AIResearchQuestionAssistant.tsx:581"}, "properties": {"repobilityId": "9e02c7b709127125", "scanner": "scanner-primary", "fingerprint": "722e2e2dd2944938", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f3d4feacd1830182", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/components/literature/ai-research-question/QueryIntelligencePanel.tsx:138"}, "properties": {"repobilityId": "393c9202379e7fe0", "scanner": "scanner-primary", "fingerprint": "f3d4feacd1830182", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-14325c53a2b0435f", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/components/literature/ai-research-question/__tests__/AIResearchQuestionAssistant.test.tsx:184"}, "properties": {"repobilityId": "9b2f3dbe174d12bf", "scanner": "scanner-primary", "fingerprint": "14325c53a2b0435f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff2985858afb3a8f", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/literature/sentence-provenance/SentenceProvenanceViewer.tsx:702"}, "properties": {"repobilityId": "a6065b8f403820e3", "scanner": "scanner-primary", "fingerprint": "ff2985858afb3a8f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d7cb047f00ff1008", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/components/literature/evidence/EvidenceTierBadge.tsx:110"}, "properties": {"repobilityId": "85282f9048b3bf7b", "scanner": "scanner-primary", "fingerprint": "d7cb047f00ff1008", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2cce8b385ca07f79", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/components/literature/evidence/derivePaperEvidenceMeta.ts:86"}, "properties": {"repobilityId": "c9cc97b8b9bee8c5", "scanner": "scanner-primary", "fingerprint": "2cce8b385ca07f79", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53a0a9ac012dc229", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/components/literature/evidence/ThemeChip.tsx:104"}, "properties": {"repobilityId": "08f39c711bbbcf31", "scanner": "scanner-primary", "fingerprint": "53a0a9ac012dc229", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d14e7a19fcff5ed1", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/components/literature/screening/ConflictResolutionPanel.tsx:54"}, "properties": {"repobilityId": "6cd819b07e93609d", "scanner": "scanner-primary", "fingerprint": "d14e7a19fcff5ed1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f1b64f2326f043f6", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/components/literature/evidence-table/EvidenceTableBuilder.tsx:55"}, "properties": {"repobilityId": "6112279973fedcef", "scanner": "scanner-primary", "fingerprint": "f1b64f2326f043f6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac07e38c73ee6893", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/components/interpretation/AlternativeViewpointGenerator.tsx:106"}, "properties": {"repobilityId": "3bc9a4a0f42cce99", "scanner": "scanner-primary", "fingerprint": "ac07e38c73ee6893", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-824a06ddc34de9c8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/reports/ReportGenerationUI.tsx:8"}, "properties": {"repobilityId": "79574d3abc8e73a0", "scanner": "scanner-primary", "fingerprint": "824a06ddc34de9c8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e4ede723f7016ce9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/stimuli/StimuliUploadSystemV3.tsx:166"}, "properties": {"repobilityId": "1d8e16fb3cf332bc", "scanner": "scanner-primary", "fingerprint": "e4ede723f7016ce9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-acfe04cb125f7ecf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/stimuli/StimuliUploadSystemV4.tsx:182"}, "properties": {"repobilityId": "9132c401467cb3a2", "scanner": "scanner-primary", "fingerprint": "acfe04cb125f7ecf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ce84b15094d983cb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/stimuli/StimuliUploadSystem.tsx:138"}, "properties": {"repobilityId": "1d2ab282422c9fc7", "scanner": "scanner-primary", "fingerprint": "ce84b15094d983cb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d610b1231b57be8e", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/components/jobs/GlobalJobSubscribers.tsx:32"}, "properties": {"repobilityId": "819c65e818f62e28", "scanner": "scanner-primary", "fingerprint": "d610b1231b57be8e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-307d15385d49bc36", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/jobs/AutoRunDisclosureBanner.tsx:36"}, "properties": {"repobilityId": "19efe0837060d552", "scanner": "scanner-primary", "fingerprint": "307d15385d49bc36", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ddda10dea2f9fce1", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/components/knowledge/BuildProgressBanner.tsx:82"}, "properties": {"repobilityId": "9922b72e82a0aaad", "scanner": "scanner-primary", "fingerprint": "ddda10dea2f9fce1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f79e996e0e51dc94", "level": "none", "message": {"text": "Commented-code block (11 lines) in frontend/components/knowledge/KnowledgeMapScopeBar.tsx:264"}, "properties": {"repobilityId": "18ed7b08264697ab", "scanner": "scanner-primary", "fingerprint": "f79e996e0e51dc94", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7048d1a35c3bf858", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/EdgeProvenanceDrawer.tsx:67"}, "properties": {"repobilityId": "93bef5526db5143c", "scanner": "scanner-primary", "fingerprint": "7048d1a35c3bf858", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-37ee4e469e043909", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/KnowledgeMapShell.tsx:78"}, "properties": {"repobilityId": "38f70dee5b8391c0", "scanner": "scanner-primary", "fingerprint": "37ee4e469e043909", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-682595e63420db53", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/components/knowledge/KnowledgeMapAnnouncer.tsx:68"}, "properties": {"repobilityId": "862c9e76df912835", "scanner": "scanner-primary", "fingerprint": "682595e63420db53", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-277f365f595246c0", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/KnowledgeMapStatus.tsx:119"}, "properties": {"repobilityId": "d112a024db71587b", "scanner": "scanner-primary", "fingerprint": "277f365f595246c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3372baec9b81f961", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/components/knowledge/CorpusSnapshotPanel.tsx:93"}, "properties": {"repobilityId": "efeaff0be36ff79d", "scanner": "scanner-primary", "fingerprint": "3372baec9b81f961", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd699aef3965e6ca", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/components/knowledge/__tests__/KnowledgeMapStatus.test.tsx:344"}, "properties": {"repobilityId": "4d1ed8cef6a10b11", "scanner": "scanner-primary", "fingerprint": "fd699aef3965e6ca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a49b5b3fdf12f8d6", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/__tests__/shell-narrowing-helpers.test.ts:20"}, "properties": {"repobilityId": "6d0e4d03823d25f4", "scanner": "scanner-primary", "fingerprint": "a49b5b3fdf12f8d6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c025575e8762498e", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/__tests__/KnowledgeMapAnnouncer.test.tsx:23"}, "properties": {"repobilityId": "1cb8a31839f4f7dc", "scanner": "scanner-primary", "fingerprint": "c025575e8762498e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b9994cbbec226949", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/__tests__/CorpusSnapshotPanel.test.tsx:63"}, "properties": {"repobilityId": "fd18f56d09f651be", "scanner": "scanner-primary", "fingerprint": "b9994cbbec226949", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0ebdc17e7a2fa7ba", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/__tests__/edge-pipeline-integration.test.ts:129"}, "properties": {"repobilityId": "cef6391c5c1e5cef", "scanner": "scanner-primary", "fingerprint": "0ebdc17e7a2fa7ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ddf6568a662a179b", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/components/knowledge/__tests__/EdgeProvenanceDrawer.test.tsx:87"}, "properties": {"repobilityId": "598c8dd2d9abd9a8", "scanner": "scanner-primary", "fingerprint": "ddf6568a662a179b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-538fd89b50e9653a", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/components/knowledge/__tests__/KnowledgeMapScopeBar.test.tsx:156"}, "properties": {"repobilityId": "8885d0c52ec64c89", "scanner": "scanner-primary", "fingerprint": "538fd89b50e9653a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fe148b38ee3599a4", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/panels/MetricsPanel.tsx:77"}, "properties": {"repobilityId": "1cc0a5c09b9e16a4", "scanner": "scanner-primary", "fingerprint": "fe148b38ee3599a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fdd1b332eb0cc008", "level": "none", "message": {"text": "Commented-code block (17 lines) in frontend/components/knowledge/panels/NodeDetailPanel.tsx:206"}, "properties": {"repobilityId": "593be8f6de26d60d", "scanner": "scanner-primary", "fingerprint": "fdd1b332eb0cc008", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-50f8f9ac56bd8d18", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/panels/FilterPanel.tsx:96"}, "properties": {"repobilityId": "9fb2dac5349e4477", "scanner": "scanner-primary", "fingerprint": "50f8f9ac56bd8d18", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-90480643d687b4e6", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/panels/ClusterBrowserPanel.tsx:103"}, "properties": {"repobilityId": "9ea554419838c8a3", "scanner": "scanner-primary", "fingerprint": "90480643d687b4e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-25a608549d5c0f47", "level": "none", "message": {"text": "Commented-code block (12 lines) in frontend/components/knowledge/panels/ProductivityDashboard.tsx:239"}, "properties": {"repobilityId": "ea58522db4d85219", "scanner": "scanner-primary", "fingerprint": "25a608549d5c0f47", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-33cab27d4a71af3f", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/panels/NormalizationPanel.tsx:72"}, "properties": {"repobilityId": "0e61a107733a3435", "scanner": "scanner-primary", "fingerprint": "33cab27d4a71af3f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-122fd47622758aca", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/components/knowledge/panels/CoverageCard.tsx:103"}, "properties": {"repobilityId": "17402fa808c6559e", "scanner": "scanner-primary", "fingerprint": "122fd47622758aca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4e842f1742a926d2", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/panels/CommunityDetailPanel.tsx:54"}, "properties": {"repobilityId": "ae05255936d83753", "scanner": "scanner-primary", "fingerprint": "4e842f1742a926d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fef14abed56f518a", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/panels/InterdisciplinarityPanel.tsx:322"}, "properties": {"repobilityId": "989044531382ab1b", "scanner": "scanner-primary", "fingerprint": "fef14abed56f518a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-72ce71897f68c97d", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/panels/__tests__/MetricsPanel.test.tsx:99"}, "properties": {"repobilityId": "367811a538224115", "scanner": "scanner-primary", "fingerprint": "72ce71897f68c97d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-137fd9ae78b1b6cc", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/panels/__tests__/sidebar-footer.test.tsx:141"}, "properties": {"repobilityId": "c8913a4002f88228", "scanner": "scanner-primary", "fingerprint": "137fd9ae78b1b6cc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-36899ceb8b1e6348", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/panels/__tests__/ClusterBrowserPanel.test.tsx:42"}, "properties": {"repobilityId": "70ec6f5cc73ace8e", "scanner": "scanner-primary", "fingerprint": "36899ceb8b1e6348", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fe5266af7e0a553d", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/components/knowledge/legend/LegendOverlaySection.tsx:54"}, "properties": {"repobilityId": "29f679a07a543963", "scanner": "scanner-primary", "fingerprint": "fe5266af7e0a553d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a51d3a43cc37a39a", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/legend/KnowledgeMapLegend.tsx:80"}, "properties": {"repobilityId": "bfaf02de3da81544", "scanner": "scanner-primary", "fingerprint": "a51d3a43cc37a39a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f92a7dc944a62e83", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/legend/__tests__/LegendOverlaySection.visual-contract.test.tsx:64"}, "properties": {"repobilityId": "3e9bfe7667c5f9da", "scanner": "scanner-primary", "fingerprint": "f92a7dc944a62e83", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-51abf2d390cf0f7f", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/onboarding/KnowledgeMapTour.tsx:25"}, "properties": {"repobilityId": "d8bfeccf23f2af0a", "scanner": "scanner-primary", "fingerprint": "51abf2d390cf0f7f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a18353179e0ee59f", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/components/knowledge/hooks/useKnowledgeMapKeyboard.ts:137"}, "properties": {"repobilityId": "d0f80aca4ca0757c", "scanner": "scanner-primary", "fingerprint": "a18353179e0ee59f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-61be316f40cfef5f", "level": "none", "message": {"text": "Commented-code block (12 lines) in frontend/components/knowledge/hooks/useTreemapLayout.ts:378"}, "properties": {"repobilityId": "54e7f45db0cbc671", "scanner": "scanner-primary", "fingerprint": "61be316f40cfef5f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-229378f92eccf49e", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/hooks/__tests__/useKnowledgeMapKeyboard.test.ts:173"}, "properties": {"repobilityId": "f7f085c9ca913c17", "scanner": "scanner-primary", "fingerprint": "229378f92eccf49e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec135c8c2e4b33ee", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/hooks/__tests__/useTreemapLayout.test.ts:191"}, "properties": {"repobilityId": "b3a2b9e2122baa2c", "scanner": "scanner-primary", "fingerprint": "ec135c8c2e4b33ee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c15a705bc491e77c", "level": "none", "message": {"text": "Commented-code block (11 lines) in frontend/components/knowledge/renderers/NodeTooltip.tsx:115"}, "properties": {"repobilityId": "0843d8b928a5e3ad", "scanner": "scanner-primary", "fingerprint": "c15a705bc491e77c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a4d49b88ccfc4fac", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/renderers/SVGRenderer.tsx:73"}, "properties": {"repobilityId": "8efc07bc23b4c9c9", "scanner": "scanner-primary", "fingerprint": "a4d49b88ccfc4fac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-00de2fdbe02becc4", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/renderers/CommunityTreemap.tsx:67"}, "properties": {"repobilityId": "3d367b1b9df78f5e", "scanner": "scanner-primary", "fingerprint": "00de2fdbe02becc4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-857d2caab7b47986", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/renderers/CommunityBubble.tsx:147"}, "properties": {"repobilityId": "70f10b21614d8a93", "scanner": "scanner-primary", "fingerprint": "857d2caab7b47986", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-45b1b9d71f90ca7d", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/renderers/__tests__/CommunityTreemap.interaction.test.tsx:262"}, "properties": {"repobilityId": "80dd24becb651c0e", "scanner": "scanner-primary", "fingerprint": "45b1b9d71f90ca7d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7fe458aee9bb53c5", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/renderers/__tests__/SVGRenderer.visual-contract.test.tsx:34"}, "properties": {"repobilityId": "2082d6b87be9190b", "scanner": "scanner-primary", "fingerprint": "7fe458aee9bb53c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-868010a721db6f73", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/share/SharedKmPageClient.tsx:171"}, "properties": {"repobilityId": "ad26c67d046a0cff", "scanner": "scanner-primary", "fingerprint": "868010a721db6f73", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-820bef473ae4a52d", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/share/__tests__/SharedKmPageClient.test.tsx:428"}, "properties": {"repobilityId": "510dfe3924b87e0c", "scanner": "scanner-primary", "fingerprint": "820bef473ae4a52d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53520bedd36638e7", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/toolbar/PurposeSwitcher.tsx:64"}, "properties": {"repobilityId": "3cb675450a4ead57", "scanner": "scanner-primary", "fingerprint": "53520bedd36638e7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e4ae8a870103adc", "level": "none", "message": {"text": "Commented-code block (11 lines) in frontend/components/knowledge/toolbar/ReportButton.tsx:81"}, "properties": {"repobilityId": "fc2ee8952838c0fa", "scanner": "scanner-primary", "fingerprint": "2e4ae8a870103adc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2be1f1047f8da223", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/toolbar/LayoutAlgorithmSelector.tsx:112"}, "properties": {"repobilityId": "60e242ae7acc122b", "scanner": "scanner-primary", "fingerprint": "2be1f1047f8da223", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-08093ab5f9dc5b67", "level": "note", "message": {"text": "Legacy-named symbol `gv_copy` in frontend/components/knowledge/toolbar/__tests__/ReportButton.test.tsx:494"}, "properties": {"repobilityId": "ed6ff1dfd98e6340", "scanner": "scanner-primary", "fingerprint": "08093ab5f9dc5b67", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0361a6c524d8d02d", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/toolbar/__tests__/ReportButton.test.tsx:70"}, "properties": {"repobilityId": "37c6a140425ec266", "scanner": "scanner-primary", "fingerprint": "0361a6c524d8d02d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-308409734934dbab", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/toolbar/__tests__/PurposeSwitcher.regression.test.tsx:106"}, "properties": {"repobilityId": "a89de694e34a73f0", "scanner": "scanner-primary", "fingerprint": "308409734934dbab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-657c88747fc7675c", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/accessibility/GraphARIATree.tsx:252"}, "properties": {"repobilityId": "dac90e9d732a5566", "scanner": "scanner-primary", "fingerprint": "657c88747fc7675c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c7efc6795f2c63f6", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/views/EgoNetworkView.tsx:64"}, "properties": {"repobilityId": "f489e50c17f3f02c", "scanner": "scanner-primary", "fingerprint": "c7efc6795f2c63f6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f26496b1e97ab54f", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/views/BibliometricReportView.tsx:119"}, "properties": {"repobilityId": "e8de0ee10af346b3", "scanner": "scanner-primary", "fingerprint": "f26496b1e97ab54f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b990e801cdf65591", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/components/knowledge/views/GapDashboardView.tsx:65"}, "properties": {"repobilityId": "2133cdd2fc07c34f", "scanner": "scanner-primary", "fingerprint": "b990e801cdf65591", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52b2496a61305212", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/views/TemporalView.tsx:94"}, "properties": {"repobilityId": "89511d4d4c4620c4", "scanner": "scanner-primary", "fingerprint": "52b2496a61305212", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3d5f06da642dfa6d", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/views/MatrixView.tsx:70"}, "properties": {"repobilityId": "ab83bcd289dd243d", "scanner": "scanner-primary", "fingerprint": "3d5f06da642dfa6d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f0a76f3c58ac480c", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/components/knowledge/views/StrategicDiagramView.tsx:231"}, "properties": {"repobilityId": "5edd1480adac6ca1", "scanner": "scanner-primary", "fingerprint": "f0a76f3c58ac480c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-094b1c810563bd69", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/views/FieldMapView.tsx:97"}, "properties": {"repobilityId": "ee4f76b77390a7ce", "scanner": "scanner-primary", "fingerprint": "094b1c810563bd69", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1348360e258d5607", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/views/BriefingView.tsx:122"}, "properties": {"repobilityId": "5141c662d37523c8", "scanner": "scanner-primary", "fingerprint": "1348360e258d5607", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bd1f3f1ba6c6e691", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/components/knowledge/views/__tests__/BibliometricReportView.nulls.dom.test.tsx:44"}, "properties": {"repobilityId": "af52c3f0ad7931d3", "scanner": "scanner-primary", "fingerprint": "bd1f3f1ba6c6e691", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e0a07926a1082a96", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/views/__tests__/TemporalView.aria.test.tsx:140"}, "properties": {"repobilityId": "27811d46a437bc6b", "scanner": "scanner-primary", "fingerprint": "e0a07926a1082a96", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ddde683e981c6fc9", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/components/knowledge/views/__tests__/EgoNetworkView.test.tsx:272"}, "properties": {"repobilityId": "53f641675cec354a", "scanner": "scanner-primary", "fingerprint": "ddde683e981c6fc9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c1ce7e206f5dcc7", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/views/__tests__/strategic-quadrant-coherence.test.tsx:212"}, "properties": {"repobilityId": "7fc1b8a29ca848be", "scanner": "scanner-primary", "fingerprint": "2c1ce7e206f5dcc7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-67cbf6d620711a15", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/views/__tests__/MatrixView.test.tsx:126"}, "properties": {"repobilityId": "50e34e6d6dc66980", "scanner": "scanner-primary", "fingerprint": "67cbf6d620711a15", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-67e56247a1a91987", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/views/briefing/__tests__/BriefingView.test.tsx:525"}, "properties": {"repobilityId": "27f72281e8c9ac3c", "scanner": "scanner-primary", "fingerprint": "67e56247a1a91987", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2b8c0a9fcbf2d40f", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/views/gap-dashboard/GapIntensityBadge.tsx:121"}, "properties": {"repobilityId": "b2cf3ffb4a150d64", "scanner": "scanner-primary", "fingerprint": "2b8c0a9fcbf2d40f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-427263d3b9469785", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/overlays/OverlayContainer.tsx:117"}, "properties": {"repobilityId": "5381cd96d90aea9d", "scanner": "scanner-primary", "fingerprint": "427263d3b9469785", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9c53a29ffa723b46", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/components/knowledge/overlays/DensityHeatmap.tsx:67"}, "properties": {"repobilityId": "5e7b31ac4b32e85c", "scanner": "scanner-primary", "fingerprint": "9c53a29ffa723b46", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8ad5beccd4126de0", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/overlays/PredictedLinks.tsx:68"}, "properties": {"repobilityId": "c3c8f1fa3dd12042", "scanner": "scanner-primary", "fingerprint": "8ad5beccd4126de0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0448bae620844767", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/overlays/OverlayToggleBar.tsx:142"}, "properties": {"repobilityId": "0e0f752511339068", "scanner": "scanner-primary", "fingerprint": "0448bae620844767", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd76120cf76e1a83", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/overlays/__tests__/OverlayToggleBar.insights-gating.test.tsx:89"}, "properties": {"repobilityId": "89e5a8c0a459fb84", "scanner": "scanner-primary", "fingerprint": "fd76120cf76e1a83", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb08924390fca923", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/components/knowledge/export/NetworkStatistics.ts:279"}, "properties": {"repobilityId": "66ea1299e9c2d666", "scanner": "scanner-primary", "fingerprint": "fb08924390fca923", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9a56660f629fbaf7", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/components/knowledge/export/ViewTableExporters.ts:25"}, "properties": {"repobilityId": "00b0ab8208519b1e", "scanner": "scanner-primary", "fingerprint": "9a56660f629fbaf7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-551dc27545fea2dc", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/export/SVGExporter.ts:151"}, "properties": {"repobilityId": "e81148c2fa3b89f3", "scanner": "scanner-primary", "fingerprint": "551dc27545fea2dc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-010360961365b81f", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/export/PublicationReportGenerator.ts:35"}, "properties": {"repobilityId": "cf37364860e596c2", "scanner": "scanner-primary", "fingerprint": "010360961365b81f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e73af2ee9c200904", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/knowledge/export/WorkbookExporter.ts:89"}, "properties": {"repobilityId": "d0c1231dc5b7994b", "scanner": "scanner-primary", "fingerprint": "e73af2ee9c200904", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30216e6e13f357d5", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/components/knowledge/export/__tests__/PublicationReportGenerator.test.ts:118"}, "properties": {"repobilityId": "0052ee90a597c97b", "scanner": "scanner-primary", "fingerprint": "30216e6e13f357d5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f485a806d8297c2", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/auth/login/page.tsx:219"}, "properties": {"repobilityId": "952d1480ec636998", "scanner": "scanner-primary", "fingerprint": "3f485a806d8297c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2aaf610b7c520ae4", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/auth/oauth/callback/page.tsx:23"}, "properties": {"repobilityId": "f22668b9ffdd808d", "scanner": "scanner-primary", "fingerprint": "2aaf610b7c520ae4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f963bc341699142", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/auth/register/page.tsx:105"}, "properties": {"repobilityId": "21ec73b96977e963", "scanner": "scanner-primary", "fingerprint": "2f963bc341699142", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-07d829554be7ff3c", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/dev-visual-baselines/page.tsx:65"}, "properties": {"repobilityId": "55d74d88f2e26780", "scanner": "scanner-primary", "fingerprint": "07d829554be7ff3c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8f76545de2687614", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/api/studies/route.ts:30"}, "properties": {"repobilityId": "10b7c0991dd608b6", "scanner": "scanner-primary", "fingerprint": "8f76545de2687614", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-02eacef31cd8a30b", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/layout.tsx:27"}, "properties": {"repobilityId": "6fd44b6589d76b6f", "scanner": "scanner-primary", "fingerprint": "02eacef31cd8a30b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55cd312f8e29bdae", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/analytics/__tests__/analytics.test.tsx:133"}, "properties": {"repobilityId": "21ae2a7f55e98c7e", "scanner": "scanner-primary", "fingerprint": "55cd312f8e29bdae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-27343432dba1eba5", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/app/(researcher)/studies/create/page.tsx:599"}, "properties": {"repobilityId": "ac7521925b94c203", "scanner": "scanner-primary", "fingerprint": "27343432dba1eba5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e756a09eee98a23e", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/design/page.tsx:145"}, "properties": {"repobilityId": "59787b3cc01aebfe", "scanner": "scanner-primary", "fingerprint": "e756a09eee98a23e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-263e25c92208bc6f", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/design/hypothesis/page.tsx:332"}, "properties": {"repobilityId": "d06486796f9f3a7a", "scanner": "scanner-primary", "fingerprint": "263e25c92208bc6f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-884abd352905a0be", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/design/hypothesis/page.tsx:358"}, "properties": {"repobilityId": "ffe1170dd604dab7", "scanner": "scanner-primary", "fingerprint": "884abd352905a0be", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fda3a477f46bfa10", "level": "none", "message": {"text": "Commented-code block (11 lines) in frontend/app/(researcher)/discover/references/page.tsx:410"}, "properties": {"repobilityId": "75cbd0e96f56e234", "scanner": "scanner-primary", "fingerprint": "fda3a477f46bfa10", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-af83083bcbba93b8", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/app/(researcher)/discover/references/components/SearchArtifactVerifyPanel.tsx:132"}, "properties": {"repobilityId": "690b0cb24880df6d", "scanner": "scanner-primary", "fingerprint": "af83083bcbba93b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec44ae2cb2f993d9", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/references/components/ReferenceHeader.tsx:285"}, "properties": {"repobilityId": "125e76a31adab081", "scanner": "scanner-primary", "fingerprint": "ec44ae2cb2f993d9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5ac69bd437b4a082", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/references/hooks/useClaimSearch.ts:45"}, "properties": {"repobilityId": "7cc4e8c3b5f5a70e", "scanner": "scanner-primary", "fingerprint": "5ac69bd437b4a082", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-69fbddd3569b6271", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/references/hooks/useProvenanceGraph.ts:35"}, "properties": {"repobilityId": "291e2f015afeec5c", "scanner": "scanner-primary", "fingerprint": "69fbddd3569b6271", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5a57b7435c6ca9b0", "level": "note", "message": {"text": "Legacy-named symbol `isLegacy` in frontend/app/(researcher)/discover/references/snapshot/[snapshotId]/methodology/page.tsx:358"}, "properties": {"repobilityId": "fe61ec5504bf2723", "scanner": "scanner-primary", "fingerprint": "5a57b7435c6ca9b0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c0b6f6f7f4c9feca", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/references/snapshot/[snapshotId]/methodology/page.tsx:69"}, "properties": {"repobilityId": "b2f35736e5ab7541", "scanner": "scanner-primary", "fingerprint": "c0b6f6f7f4c9feca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-82747bfcdc5a0112", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/themes/page.tsx:232"}, "properties": {"repobilityId": "b933a3f7bd8cbacb", "scanner": "scanner-primary", "fingerprint": "82747bfcdc5a0112", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dff698df330106c0", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/themes/utils/saturation-percent.ts:37"}, "properties": {"repobilityId": "1f4223a2aaf19550", "scanner": "scanner-primary", "fingerprint": "dff698df330106c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7ae14a9e7317bbaa", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/knowledge-map/page.tsx:46"}, "properties": {"repobilityId": "204098625d37c078", "scanner": "scanner-primary", "fingerprint": "7ae14a9e7317bbaa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a5b117b77f3d8708", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/knowledge-map/error.tsx:105"}, "properties": {"repobilityId": "5398c8122615fbb1", "scanner": "scanner-primary", "fingerprint": "a5b117b77f3d8708", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d0f4046518c22098", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/app/(researcher)/discover/knowledge-map/__tests__/dro-pii-contract.regression.test.ts:66"}, "properties": {"repobilityId": "78e0fc3e1d8527a1", "scanner": "scanner-primary", "fingerprint": "d0f4046518c22098", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c88de5f7bf304531", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/page.tsx:38"}, "properties": {"repobilityId": "d892f9e30ac00b53", "scanner": "scanner-primary", "fingerprint": "c88de5f7bf304531", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-10e7ff0d20949184", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/prisma/page.tsx:359"}, "properties": {"repobilityId": "e64a68f00655ff68", "scanner": "scanner-primary", "fingerprint": "10e7ff0d20949184", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dec49cfe5141a285", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/PrepareForAnalysisCTA.tsx:63"}, "properties": {"repobilityId": "cc6211a6253e41c3", "scanner": "scanner-primary", "fingerprint": "dec49cfe5141a285", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c67c25ea2c08b9da", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/app/(researcher)/discover/literature/components/BulkSaveProgressBanner.tsx:90"}, "properties": {"repobilityId": "92305a6bd3aa21a2", "scanner": "scanner-primary", "fingerprint": "c67c25ea2c08b9da", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-743ade9399a6a9e6", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PaperCard.tsx:143"}, "properties": {"repobilityId": "da5dd10e20fdec23", "scanner": "scanner-primary", "fingerprint": "743ade9399a6a9e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c14aba000229a03f", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PurposeBanner.tsx:49"}, "properties": {"repobilityId": "c7aacef8abef1b20", "scanner": "scanner-primary", "fingerprint": "c14aba000229a03f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2bf7ea3f83244ae8", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/ThemeExtractionActionCard.tsx:109"}, "properties": {"repobilityId": "f9d953ff008d3abb", "scanner": "scanner-primary", "fingerprint": "2bf7ea3f83244ae8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d6ff0ea1a020e279", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/app/(researcher)/discover/literature/components/LazyContainers.tsx:21"}, "properties": {"repobilityId": "102da4fda4853868", "scanner": "scanner-primary", "fingerprint": "d6ff0ea1a020e279", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0dbf7f7922e5d2e0", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/UnifiedSearchHero.tsx:124"}, "properties": {"repobilityId": "3fe1951892dcd8dc", "scanner": "scanner-primary", "fingerprint": "0dbf7f7922e5d2e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e78860ab2c3d299d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/discover/literature/components/UnifiedSearchHero.tsx:1575"}, "properties": {"repobilityId": "16d5e18e574c0b34", "scanner": "scanner-primary", "fingerprint": "e78860ab2c3d299d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bcc0942685858cf0", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/ResearchAccessMenu.tsx:32"}, "properties": {"repobilityId": "86db875a804aeafe", "scanner": "scanner-primary", "fingerprint": "bcc0942685858cf0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c65e8872d1f9633", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/__tests__/UnifiedSearchHero.query-coach.test.tsx:144"}, "properties": {"repobilityId": "ab1e7525a4ca4ed1", "scanner": "scanner-primary", "fingerprint": "7c65e8872d1f9633", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d1c240e52a2b0981", "level": "none", "message": {"text": "Commented-code block (12 lines) in frontend/app/(researcher)/discover/literature/components/__tests__/UnifiedSearchHero.integration.test.tsx:598"}, "properties": {"repobilityId": "2869a567452df323", "scanner": "scanner-primary", "fingerprint": "d1c240e52a2b0981", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-75c94496dd300a02", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/__tests__/UnifiedSearchHero.test.tsx:192"}, "properties": {"repobilityId": "88d5bb614125c439", "scanner": "scanner-primary", "fingerprint": "75c94496dd300a02", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2168f59b0145fccf", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/paper-card/MatchScoreBadge.tsx:161"}, "properties": {"repobilityId": "7e1c558177e72470", "scanner": "scanner-primary", "fingerprint": "2168f59b0145fccf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fc415a5db4929456", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/paper-card/constants.ts:110"}, "properties": {"repobilityId": "6ae7a868721fe5d4", "scanner": "scanner-primary", "fingerprint": "fc415a5db4929456", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a675725a6919fc92", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/paper-card/PaperAccessBadges.tsx:152"}, "properties": {"repobilityId": "6a0c13f64efca932", "scanner": "scanner-primary", "fingerprint": "a675725a6919fc92", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-06ceab9c8dd6de43", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/paper-card/PaperActions.tsx:161"}, "properties": {"repobilityId": "85bbe8b309337b23", "scanner": "scanner-primary", "fingerprint": "06ceab9c8dd6de43", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-81d8b166e5dd483e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/discover/literature/components/paper-card/PaperActions.tsx:258"}, "properties": {"repobilityId": "827adf2376160d9f", "scanner": "scanner-primary", "fingerprint": "81d8b166e5dd483e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-857a8495b0d30c5d", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/paper-card/__tests__/MatchScoreBadge.test.tsx:366"}, "properties": {"repobilityId": "504c2f2dec183a51", "scanner": "scanner-primary", "fingerprint": "857a8495b0d30c5d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b8769e9ceda0cbd", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/paper-card/__tests__/MatchScoreBadge.memo-regression.test.tsx:48"}, "properties": {"repobilityId": "14c9d58d470b8b29", "scanner": "scanner-primary", "fingerprint": "6b8769e9ceda0cbd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-01f990c88c03dcf4", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/SearchSection/index.ts:14"}, "properties": {"repobilityId": "6d73c80163a1f78f", "scanner": "scanner-primary", "fingerprint": "01f990c88c03dcf4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-af5fc1e72dd17019", "level": "none", "message": {"text": "Commented-code block (12 lines) in frontend/app/(researcher)/discover/literature/components/SearchSection/PillMenu.tsx:25"}, "properties": {"repobilityId": "5c56676d960c77b8", "scanner": "scanner-primary", "fingerprint": "af5fc1e72dd17019", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-73e0b46b9cd07807", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/q-methodology/ViewpointBalancePanel.stories.tsx:120"}, "properties": {"repobilityId": "581394f46189fbc2", "scanner": "scanner-primary", "fingerprint": "73e0b46b9cd07807", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0f2798c9c06d849a", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/social-media/TikTokSearchSection.tsx:78"}, "properties": {"repobilityId": "80769130c804c28e", "scanner": "scanner-primary", "fingerprint": "0f2798c9c06d849a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d64106c739eab375", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/SearchPipelineOrchestra.tsx:382"}, "properties": {"repobilityId": "19a23a9a9a8b9107", "scanner": "scanner-primary", "fingerprint": "d64106c739eab375", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-51e55267b44ab65e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/types.ts:135"}, "properties": {"repobilityId": "a1bfe2db05121268", "scanner": "scanner-primary", "fingerprint": "51e55267b44ab65e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7bb14c36cc96d427", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/__tests__/inward-flow-refine.test.tsx:390"}, "properties": {"repobilityId": "f74959db91dfa5e3", "scanner": "scanner-primary", "fingerprint": "7bb14c36cc96d427", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-98ed2a28fd078073", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/__tests__/inward-flow-refine.test.tsx:8"}, "properties": {"repobilityId": "ca1e8fa6a4289019", "scanner": "scanner-primary", "fingerprint": "98ed2a28fd078073", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d7416ea936561265", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/__tests__/SearchPipelineOrchestra.test.tsx:620"}, "properties": {"repobilityId": "83132026e6638cd9", "scanner": "scanner-primary", "fingerprint": "d7416ea936561265", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-82a68f7f4dd6980b", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/PipelineSummaryBanner.tsx:180"}, "properties": {"repobilityId": "4d24af08704a695f", "scanner": "scanner-primary", "fingerprint": "82a68f7f4dd6980b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fe495ef70b9dad72", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/CoverageBiasPanel.tsx:46"}, "properties": {"repobilityId": "d6b783714a915844", "scanner": "scanner-primary", "fingerprint": "fe495ef70b9dad72", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c4228e1eef40642c", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/StageFlowParticles.tsx:469"}, "properties": {"repobilityId": "b3bf5ee9843c879f", "scanner": "scanner-primary", "fingerprint": "c4228e1eef40642c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fc08ba1758e2cf0d", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/StageDetailPanel.tsx:101"}, "properties": {"repobilityId": "18a844208c6233fc", "scanner": "scanner-primary", "fingerprint": "fc08ba1758e2cf0d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-305e4c343e6b5890", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/OrbitalSourceConstellation.tsx:353"}, "properties": {"repobilityId": "2d9e279e363414a9", "scanner": "scanner-primary", "fingerprint": "305e4c343e6b5890", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d3e43c436bd809f5", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/MethodologyReport.tsx:77"}, "properties": {"repobilityId": "0f3078727ee4c175", "scanner": "scanner-primary", "fingerprint": "d3e43c436bd809f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ee44d23997d2c37c", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/RealWorldAttentionPanel.tsx:280"}, "properties": {"repobilityId": "4768a092f86ee78e", "scanner": "scanner-primary", "fingerprint": "ee44d23997d2c37c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aaa2165945e41574", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/SourceNode.tsx:657"}, "properties": {"repobilityId": "b1dc32591bce5140", "scanner": "scanner-primary", "fingerprint": "aaa2165945e41574", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bf97d07a010fcd13", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/components/__tests__/CoverageBiasPanel.test.tsx:201"}, "properties": {"repobilityId": "037c6e76824d17e4", "scanner": "scanner-primary", "fingerprint": "bf97d07a010fcd13", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0202dde983bce385", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/hooks/usePipelineState.ts:173"}, "properties": {"repobilityId": "dd45aa3cd85f4164", "scanner": "scanner-primary", "fingerprint": "0202dde983bce385", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-51be9072861182e1", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/components/PipelineOrchestra/hooks/__tests__/usePipelineState.test.ts:419"}, "properties": {"repobilityId": "b06d40ba4c034786", "scanner": "scanner-primary", "fingerprint": "51be9072861182e1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-91402c6f82ca5597", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/literature/lib/panel-export.ts:69"}, "properties": {"repobilityId": "c4e5306370ca219d", "scanner": "scanner-primary", "fingerprint": "91402c6f82ca5597", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-11f285cdf5d92713", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/evidence/page.tsx:474"}, "properties": {"repobilityId": "ab463f04489ff2d6", "scanner": "scanner-primary", "fingerprint": "11f285cdf5d92713", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-45e64a7d7b92c540", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/literature/citations/page.tsx:164"}, "properties": {"repobilityId": "e84fb54e02761adc", "scanner": "scanner-primary", "fingerprint": "45e64a7d7b92c540", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-df09f84465b4d874", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/app/(researcher)/discover/literature/hooks/useLiteraturePageState.ts:212"}, "properties": {"repobilityId": "1716aa3a6c3dccae", "scanner": "scanner-primary", "fingerprint": "df09f84465b4d874", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bf0317c869f3bba9", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/app/(researcher)/discover/literature/containers/ThemeExtractionContainer.tsx:200"}, "properties": {"repobilityId": "afe4b30cd2f90c77", "scanner": "scanner-primary", "fingerprint": "bf0317c869f3bba9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dcde89ef05a60392", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/app/(researcher)/discover/literature/containers/SearchResultsContainerEnhanced.tsx:88"}, "properties": {"repobilityId": "0909d83ac6ab52ff", "scanner": "scanner-primary", "fingerprint": "dcde89ef05a60392", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-321f853e545eaebc", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/containers/StreamingSearchSection.tsx:284"}, "properties": {"repobilityId": "d1d8b803ee031cfd", "scanner": "scanner-primary", "fingerprint": "321f853e545eaebc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d9a6b51ad6cd701d", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/containers/LiteratureSearchContainer.tsx:126"}, "properties": {"repobilityId": "ba94e811050e7e04", "scanner": "scanner-primary", "fingerprint": "d9a6b51ad6cd701d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4be1d44b09d12f72", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/containers/__tests__/SearchResultsContainerEnhanced.test.tsx:116"}, "properties": {"repobilityId": "f4cac939348332c2", "scanner": "scanner-primary", "fingerprint": "4be1d44b09d12f72", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2bfb2d96c4fc538c", "level": "note", "message": {"text": "Legacy-named symbol `yearsOld` in frontend/app/(researcher)/discover/literature/containers/search-results/search-results-utils.ts:95"}, "properties": {"repobilityId": "439d952df2fd811e", "scanner": "scanner-primary", "fingerprint": "2bfb2d96c4fc538c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0622b496a9853258", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/literature/containers/search-results/search-results-utils.ts:86"}, "properties": {"repobilityId": "c894560a6b37eb5a", "scanner": "scanner-primary", "fingerprint": "0622b496a9853258", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f0073dec64ac9801", "level": "none", "message": {"text": "Commented-code block (13 lines) in frontend/app/(researcher)/discover/literature/screening/page.tsx:727"}, "properties": {"repobilityId": "f1381909b8d4a7c6", "scanner": "scanner-primary", "fingerprint": "f0073dec64ac9801", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-654acff70e59e433", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/extraction/page.tsx:53"}, "properties": {"repobilityId": "97bbb2a2f77fb71f", "scanner": "scanner-primary", "fingerprint": "654acff70e59e433", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c982f575f5231f7", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/literature/extraction/__tests__/page.test.tsx:71"}, "properties": {"repobilityId": "c29d0b066d26a22d", "scanner": "scanner-primary", "fingerprint": "1c982f575f5231f7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-99f64aa10180c4a3", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/literature/transcriptions/page.tsx:175"}, "properties": {"repobilityId": "1d26b781bb0de8a8", "scanner": "scanner-primary", "fingerprint": "99f64aa10180c4a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a8884de55af97170", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/discover/literature/transcriptions/page.tsx:535"}, "properties": {"repobilityId": "56e313a7ad2a8eec", "scanner": "scanner-primary", "fingerprint": "a8884de55af97170", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bb111ff0ea2b5c8a", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/app/(researcher)/discover/gaps/gap-export.utils.ts:64"}, "properties": {"repobilityId": "056111a996d5049c", "scanner": "scanner-primary", "fingerprint": "bb111ff0ea2b5c8a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ba241ff2bc9bf631", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/GapsPageDataLayer.tsx:117"}, "properties": {"repobilityId": "d7add6e9d1b68203", "scanner": "scanner-primary", "fingerprint": "ba241ff2bc9bf631", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5290fcf2aebe2d63", "level": "none", "message": {"text": "Commented-code block (11 lines) in frontend/app/(researcher)/discover/gaps/components/GapDependencyDAG.tsx:29"}, "properties": {"repobilityId": "8baa7883a47d2a4d", "scanner": "scanner-primary", "fingerprint": "5290fcf2aebe2d63", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ba687d59e9c6944c", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/GapAuditDrawer.tsx:91"}, "properties": {"repobilityId": "82e3c60c46a300bc", "scanner": "scanner-primary", "fingerprint": "ba687d59e9c6944c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-773a5713df53d9ae", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/gaps/components/GapDetailView.tsx:76"}, "properties": {"repobilityId": "c70835bebbf1f498", "scanner": "scanner-primary", "fingerprint": "773a5713df53d9ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a98ce332db31fb91", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/app/(researcher)/discover/gaps/components/gap-types.ts:269"}, "properties": {"repobilityId": "88608aa402907fcd", "scanner": "scanner-primary", "fingerprint": "a98ce332db31fb91", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d2e9e05bab57b4b", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/GapStageInspector.tsx:219"}, "properties": {"repobilityId": "d24bf32c6f7cbb0b", "scanner": "scanner-primary", "fingerprint": "4d2e9e05bab57b4b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-924b02458e86fee8", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/gaps/components/GapCategoryList.tsx:163"}, "properties": {"repobilityId": "0213ebf7a9b5952b", "scanner": "scanner-primary", "fingerprint": "924b02458e86fee8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9948ac0e18922fa7", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/app/(researcher)/discover/gaps/components/GapDrillDownAskButton.tsx:94"}, "properties": {"repobilityId": "3ff2da0ee538eaf3", "scanner": "scanner-primary", "fingerprint": "9948ac0e18922fa7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b94dcef3ab94f3d0", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/GapRadar.tsx:32"}, "properties": {"repobilityId": "868b5bb230506f41", "scanner": "scanner-primary", "fingerprint": "b94dcef3ab94f3d0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c0c111c69272d32", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/GapRefinementFlow.tsx:124"}, "properties": {"repobilityId": "cae62675ffd2f94b", "scanner": "scanner-primary", "fingerprint": "6c0c111c69272d32", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cbd47520634f5b23", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/gaps/components/GapCardItem.tsx:34"}, "properties": {"repobilityId": "80f8ba8995ee3182", "scanner": "scanner-primary", "fingerprint": "cbd47520634f5b23", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d77ea355c3c6aecd", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/GapTimeline.tsx:50"}, "properties": {"repobilityId": "7544ac2e3712d852", "scanner": "scanner-primary", "fingerprint": "d77ea355c3c6aecd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76e833baa6c62f72", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/GapsPageEmptyState.tsx:71"}, "properties": {"repobilityId": "5203b550fa07d8f8", "scanner": "scanner-primary", "fingerprint": "76e833baa6c62f72", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e6289f193e5cb3cf", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/CorpusProvenanceBreadcrumb.tsx:87"}, "properties": {"repobilityId": "ddb9e2fa148a3066", "scanner": "scanner-primary", "fingerprint": "e6289f193e5cb3cf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9680a65266a0ac91", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/app/(researcher)/discover/gaps/components/GapsListView.tsx:301"}, "properties": {"repobilityId": "bfe0f19abd27c72d", "scanner": "scanner-primary", "fingerprint": "9680a65266a0ac91", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f4e474f5970c015a", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/GapForestPlot.tsx:33"}, "properties": {"repobilityId": "fcc48ad294668241", "scanner": "scanner-primary", "fingerprint": "f4e474f5970c015a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0974c2d8d33a20cc", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/app/(researcher)/discover/gaps/components/gap-utils.ts:41"}, "properties": {"repobilityId": "24c5fd83e8699934", "scanner": "scanner-primary", "fingerprint": "0974c2d8d33a20cc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8399cf5ea1ee50c7", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/GapPortfolioMatrix.tsx:25"}, "properties": {"repobilityId": "483bdba9336f3865", "scanner": "scanner-primary", "fingerprint": "8399cf5ea1ee50c7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4fb131c14b5c4e0", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/gaps/components/GapBriefView.tsx:21"}, "properties": {"repobilityId": "3b0e1850605ec3c7", "scanner": "scanner-primary", "fingerprint": "d4fb131c14b5c4e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-060c585b8fa40088", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/TimeToSignalHero.tsx:60"}, "properties": {"repobilityId": "4cee1fcc5145a84b", "scanner": "scanner-primary", "fingerprint": "060c585b8fa40088", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bca023279044a9f8", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/GapSearchPanel.tsx:180"}, "properties": {"repobilityId": "ad0b17b196f8a0c6", "scanner": "scanner-primary", "fingerprint": "bca023279044a9f8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9a1864bca8b9ba69", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/GapReviewPanel.tsx:24"}, "properties": {"repobilityId": "69d0c2f8300fbc47", "scanner": "scanner-primary", "fingerprint": "9a1864bca8b9ba69", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e06b61f01ea4a585", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/ReproducibilityReceipt.tsx:191"}, "properties": {"repobilityId": "2e5b37793b73292c", "scanner": "scanner-primary", "fingerprint": "e06b61f01ea4a585", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3853bb16969d5507", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/ExternalValidationPill.tsx:114"}, "properties": {"repobilityId": "964d901ca8113ade", "scanner": "scanner-primary", "fingerprint": "3853bb16969d5507", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-45b679f93ae4f342", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/GapRunStatusLine.tsx:35"}, "properties": {"repobilityId": "87119aa0b6627137", "scanner": "scanner-primary", "fingerprint": "45b679f93ae4f342", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e150667436ac80a6", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/GapsPageHeader.tsx:412"}, "properties": {"repobilityId": "bd1826ec7851dc46", "scanner": "scanner-primary", "fingerprint": "e150667436ac80a6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-23cc3152c2308f05", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/GapLandscape.tsx:57"}, "properties": {"repobilityId": "d3d419fa4dd3f918", "scanner": "scanner-primary", "fingerprint": "23cc3152c2308f05", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-926481eba4ff9bd1", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/gaps/components/GapNarrativeView.tsx:97"}, "properties": {"repobilityId": "af82f9c1ba924c6b", "scanner": "scanner-primary", "fingerprint": "926481eba4ff9bd1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-02cd5a1fba52b360", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/app/(researcher)/discover/gaps/components/RoBSummaryTable.tsx:16"}, "properties": {"repobilityId": "2f7a122ea9e7842e", "scanner": "scanner-primary", "fingerprint": "02cd5a1fba52b360", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4ff1dc22b011912e", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/PaperTracePanel.tsx:129"}, "properties": {"repobilityId": "aa6fe501d09e5752", "scanner": "scanner-primary", "fingerprint": "4ff1dc22b011912e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c2116fc283b755af", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/__tests__/GapsPageEmptyState.test.tsx:212"}, "properties": {"repobilityId": "6ff366899ea611bd", "scanner": "scanner-primary", "fingerprint": "c2116fc283b755af", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-621f4caccc861461", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/__tests__/GapPortfolioMatrix.test.tsx:50"}, "properties": {"repobilityId": "191be11e97f0d026", "scanner": "scanner-primary", "fingerprint": "621f4caccc861461", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c2da56cd2b05e0b", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/__tests__/gap-honesty-fixes.test.ts:45"}, "properties": {"repobilityId": "96523927da8b57b7", "scanner": "scanner-primary", "fingerprint": "7c2da56cd2b05e0b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a510bde0e126fcbf", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/__tests__/GapRefinementFlow.test.tsx:272"}, "properties": {"repobilityId": "bb55c59c8d92bbd5", "scanner": "scanner-primary", "fingerprint": "a510bde0e126fcbf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-06bbd4b1e690be54", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/__tests__/TimeToSignalHero.test.tsx:132"}, "properties": {"repobilityId": "e3fb3f8866a57803", "scanner": "scanner-primary", "fingerprint": "06bbd4b1e690be54", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-172a384681ab7d36", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/__tests__/GapForestPlot.test.tsx:342"}, "properties": {"repobilityId": "c8eb3e9acccca57d", "scanner": "scanner-primary", "fingerprint": "172a384681ab7d36", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-25708bfa7e183868", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/components/GapDetailView/GapEvidenceSection.tsx:56"}, "properties": {"repobilityId": "15ab1d9c8974b1e0", "scanner": "scanner-primary", "fingerprint": "25708bfa7e183868", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-942e4b7569ca580c", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/GapDetailView/GapMethodologySection.tsx:41"}, "properties": {"repobilityId": "30efc959221fd9ca", "scanner": "scanner-primary", "fingerprint": "942e4b7569ca580c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-abd491fede795131", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/components/GapDetailView/GapAdvancedPredictions.tsx:264"}, "properties": {"repobilityId": "c60e3266c1bd4fab", "scanner": "scanner-primary", "fingerprint": "abd491fede795131", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b22cfba17f602e90", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/app/(researcher)/discover/gaps/components/GapDetailView/ConfidenceExplainer.tsx:51"}, "properties": {"repobilityId": "9e7131cfa03cec58", "scanner": "scanner-primary", "fingerprint": "b22cfba17f602e90", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ab7ceb8832c2d654", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/workflow/__tests__/workflow-presentation.honesty.test.ts:112"}, "properties": {"repobilityId": "b328007bb08d4dcb", "scanner": "scanner-primary", "fingerprint": "ab7ceb8832c2d654", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e54243a22636ec6", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/discover/gaps/hooks/useGapAnalysisPipeline.ts:101"}, "properties": {"repobilityId": "4543b053fce82b0d", "scanner": "scanner-primary", "fingerprint": "3e54243a22636ec6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-de014e5812d1c3f5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/discover/gaps/hooks/useGapAnalysisPipeline.ts:1353"}, "properties": {"repobilityId": "284dbc12ba64dd0c", "scanner": "scanner-primary", "fingerprint": "de014e5812d1c3f5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8aabf1cb77c06aa3", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/hooks/useGapValidation.ts:65"}, "properties": {"repobilityId": "c69ab2092aed46c0", "scanner": "scanner-primary", "fingerprint": "8aabf1cb77c06aa3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c18c615dac22547d", "level": "none", "message": {"text": "Commented-code block (16 lines) in frontend/app/(researcher)/discover/gaps/hooks/useGapDecisions.ts:53"}, "properties": {"repobilityId": "c0ba33650df1b460", "scanner": "scanner-primary", "fingerprint": "c18c615dac22547d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-decacd6641c6b1a0", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/app/(researcher)/discover/gaps/hooks/useGapEvolutionTimeline.ts:37"}, "properties": {"repobilityId": "ab85bf9daa206a42", "scanner": "scanner-primary", "fingerprint": "decacd6641c6b1a0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5dcf16474c988439", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/hooks/useCorpusEnrichment.ts:26"}, "properties": {"repobilityId": "93a74d884c01beb7", "scanner": "scanner-primary", "fingerprint": "5dcf16474c988439", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eca2f8115ccf7d00", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/discover/gaps/hooks/useGapCorpusReadiness.ts:35"}, "properties": {"repobilityId": "5c953e45bdd7f809", "scanner": "scanner-primary", "fingerprint": "eca2f8115ccf7d00", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a1e12fc43c0d77c4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/discover/gaps/hooks/useGapCorpusReadiness.ts:23"}, "properties": {"repobilityId": "3a259d8341ec159c", "scanner": "scanner-primary", "fingerprint": "a1e12fc43c0d77c4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fa5d28f560928aa0", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/app/(researcher)/discover/gaps/hooks/useGapAutoPipeline.ts:216"}, "properties": {"repobilityId": "23deff928698ad2d", "scanner": "scanner-primary", "fingerprint": "fa5d28f560928aa0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bbcec84f4db69570", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(researcher)/discover/gaps/hooks/__tests__/useGapEvolutionTimeline.test.ts:89"}, "properties": {"repobilityId": "cc39d739d511c2e4", "scanner": "scanner-primary", "fingerprint": "bbcec84f4db69570", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-73b13d6678a09002", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/hooks/__tests__/useGapAutoPipeline.test.ts:46"}, "properties": {"repobilityId": "c8e39c9f659033bf", "scanner": "scanner-primary", "fingerprint": "73b13d6678a09002", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6569da179c3b9028", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/app/(researcher)/discover/gaps/hooks/__tests__/useGapAnalysisPipeline.test.ts:313"}, "properties": {"repobilityId": "e4295ef2c7019d0f", "scanner": "scanner-primary", "fingerprint": "6569da179c3b9028", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f63ee7e454ae7901", "level": "none", "message": {"text": "Commented-code block (13 lines) in frontend/app/(researcher)/discover/gaps/hooks/__tests__/gap-cache.test.ts:84"}, "properties": {"repobilityId": "52d2d55c444d0a68", "scanner": "scanner-primary", "fingerprint": "f63ee7e454ae7901", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b9814b0bf5e4ca66", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/home/page.tsx:116"}, "properties": {"repobilityId": "222e0fe3060974f9", "scanner": "scanner-primary", "fingerprint": "b9814b0bf5e4ca66", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2d4ae343a0697bff", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/app/(researcher)/analysis/q-methodology/components/ExportPanel.tsx:88"}, "properties": {"repobilityId": "9477c561c2cff1bd", "scanner": "scanner-primary", "fingerprint": "2d4ae343a0697bff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3d6e16f2335e0bc3", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/app/(researcher)/analysis/q-methodology/hooks/useQAnalysis.ts:78"}, "properties": {"repobilityId": "786afcbd9d06f0b1", "scanner": "scanner-primary", "fingerprint": "3d6e16f2335e0bc3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ccacafe75ca4794c", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/app/(researcher)/recruit/page.tsx:57"}, "properties": {"repobilityId": "fe022745c07c527f", "scanner": "scanner-primary", "fingerprint": "ccacafe75ca4794c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c558618fabeac43d", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/(researcher)/dev-landing-preview/page.tsx:151"}, "properties": {"repobilityId": "341389eac2ea1079", "scanner": "scanner-primary", "fingerprint": "c558618fabeac43d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f0f49816a3b5869d", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/lib/types/knowledge-graph.schema.ts:292"}, "properties": {"repobilityId": "3fd5e4766385de5c", "scanner": "scanner-primary", "fingerprint": "f0f49816a3b5869d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2cfe48a0fc17815", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/types/research-question.types.ts:66"}, "properties": {"repobilityId": "054833d18ecef9c6", "scanner": "scanner-primary", "fingerprint": "f2cfe48a0fc17815", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7d3e5cee31f5c60c", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/lib/types/literature-api.types.ts:9"}, "properties": {"repobilityId": "2befb665579e73db", "scanner": "scanner-primary", "fingerprint": "7d3e5cee31f5c60c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9ddeb9c8b9b9a915", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/types/knowledge-graph.types.ts:347"}, "properties": {"repobilityId": "e438f98e7634d434", "scanner": "scanner-primary", "fingerprint": "9ddeb9c8b9b9a915", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-511f4dfcb0c4b7ef", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/types/search-stream.types.ts:848"}, "properties": {"repobilityId": "c084f673eb5bbbfb", "scanner": "scanner-primary", "fingerprint": "511f4dfcb0c4b7ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-729d81121a53aa3f", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/types/query-intelligence.types.ts:18"}, "properties": {"repobilityId": "3015d31e36ec3515", "scanner": "scanner-primary", "fingerprint": "729d81121a53aa3f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-21fd3452f75c3630", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/lib/types/literature.types.ts:151"}, "properties": {"repobilityId": "0f5dfdbf675b99dc", "scanner": "scanner-primary", "fingerprint": "21fd3452f75c3630", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b2b7871b695c6c0", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/lib/stores/paper-management.store.ts:231"}, "properties": {"repobilityId": "c5e231b3d051f879", "scanner": "scanner-primary", "fingerprint": "4b2b7871b695c6c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3ab1b216e6510529", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/stores/gap-analysis.store.ts:92"}, "properties": {"repobilityId": "0977658f811b61e8", "scanner": "scanner-primary", "fingerprint": "3ab1b216e6510529", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-00b6fa65640751d8", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/stores/knowledge-map.store.ts:444"}, "properties": {"repobilityId": "a6622e94e82b1b38", "scanner": "scanner-primary", "fingerprint": "00b6fa65640751d8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-764b74d2b7cb12b7", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/lib/stores/gap-refinement-status.store.ts:65"}, "properties": {"repobilityId": "20061ec1ee6dd48d", "scanner": "scanner-primary", "fingerprint": "764b74d2b7cb12b7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8f5aa15c8101a6b6", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/stores/literature-search.store.ts:164"}, "properties": {"repobilityId": "8fcc649ad116edfd", "scanner": "scanner-primary", "fingerprint": "8f5aa15c8101a6b6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d40b46ec3eb8e041", "level": "none", "message": {"text": "Commented-code block (15 lines) in frontend/lib/stores/grid-store.ts:111"}, "properties": {"repobilityId": "9592c8a6ba9b9ab4", "scanner": "scanner-primary", "fingerprint": "d40b46ec3eb8e041", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7cd2ecfd6c383dcd", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/lib/stores/study-context.store.ts:69"}, "properties": {"repobilityId": "ec7dddd2099c2afe", "scanner": "scanner-primary", "fingerprint": "7cd2ecfd6c383dcd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-75ad784a869ffeb9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/stores/study-builder-store.ts:417"}, "properties": {"repobilityId": "6e5c6ff0e493c4b2", "scanner": "scanner-primary", "fingerprint": "75ad784a869ffeb9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cecb12e815139a22", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/stores/evidence-table.store.ts:686"}, "properties": {"repobilityId": "7b26a5f2f35b0afc", "scanner": "scanner-primary", "fingerprint": "cecb12e815139a22", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-82119f130dbaeec4", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/lib/stores/theme-extraction.store.ts:746"}, "properties": {"repobilityId": "229754e192502ca2", "scanner": "scanner-primary", "fingerprint": "82119f130dbaeec4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c579de6a303f93e5", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/stores/search-session-coordinator.ts:95"}, "properties": {"repobilityId": "90ce7137c490c5cb", "scanner": "scanner-primary", "fingerprint": "c579de6a303f93e5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fdb14f5b2682beb2", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/lib/stores/interpretation.store.ts:149"}, "properties": {"repobilityId": "bf493e12c5fdec13", "scanner": "scanner-primary", "fingerprint": "fdb14f5b2682beb2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9f50086dd61f5c9d", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/lib/stores/research-progress.store.ts:208"}, "properties": {"repobilityId": "6beb60ffc51615c9", "scanner": "scanner-primary", "fingerprint": "9f50086dd61f5c9d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d6b01a5aaf21b894", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/stores/screening-workflow.store.ts:241"}, "properties": {"repobilityId": "67629e4b9aae2a68", "scanner": "scanner-primary", "fingerprint": "d6b01a5aaf21b894", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a7d348c47474be9c", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/stores/__tests__/knowledge-map.store.test.ts:144"}, "properties": {"repobilityId": "4597bbc00b737bbf", "scanner": "scanner-primary", "fingerprint": "a7d348c47474be9c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e360d2040690f6f5", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/lib/stores/__tests__/job-registry.store.test.ts:128"}, "properties": {"repobilityId": "d56837d03bc84ecf", "scanner": "scanner-primary", "fingerprint": "e360d2040690f6f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2cf95535dbcd7ec5", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/lib/stores/__tests__/study-context.store.test.ts:228"}, "properties": {"repobilityId": "e862354412fbb6a2", "scanner": "scanner-primary", "fingerprint": "2cf95535dbcd7ec5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c2760e892adfe71", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/lib/stores/__tests__/constants-parity.test.ts:100"}, "properties": {"repobilityId": "055d94f536264f96", "scanner": "scanner-primary", "fingerprint": "1c2760e892adfe71", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-224b40ab98444dac", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/lib/stores/helpers/literature-search-helpers.ts:222"}, "properties": {"repobilityId": "d97f95c3d2a1d85f", "scanner": "scanner-primary", "fingerprint": "224b40ab98444dac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f6ff62a31ce7e9b4", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/lib/visualization/export.ts:97"}, "properties": {"repobilityId": "7ddc54cea23895a8", "scanner": "scanner-primary", "fingerprint": "f6ff62a31ce7e9b4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-47af5b8a32063a82", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/lib/navigation/route-consolidation.ts:29"}, "properties": {"repobilityId": "61456d66e6ef2477", "scanner": "scanner-primary", "fingerprint": "47af5b8a32063a82", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b4e1c8dbc2110400", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/navigation/__tests__/route-consolidation.test.ts:45"}, "properties": {"repobilityId": "c6dadc1b42407b56", "scanner": "scanner-primary", "fingerprint": "b4e1c8dbc2110400", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a52b7284be4bf45d", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/lib/config/feature-flags.ts:112"}, "properties": {"repobilityId": "468e9026018ca47e", "scanner": "scanner-primary", "fingerprint": "a52b7284be4bf45d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b0a63cd0c03368e2", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/lib/config/km-palette.ts:188"}, "properties": {"repobilityId": "e39b16ecc26fba3a", "scanner": "scanner-primary", "fingerprint": "b0a63cd0c03368e2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-415af9e62127484b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/config/api.config.ts:15"}, "properties": {"repobilityId": "c7a4620ba5187bac", "scanner": "scanner-primary", "fingerprint": "415af9e62127484b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-063a7e6acb1343f3", "level": "none", "message": {"text": "Commented-code block (18 lines) in frontend/lib/config/community-colors.config.ts:18"}, "properties": {"repobilityId": "724342bdf3781336", "scanner": "scanner-primary", "fingerprint": "063a7e6acb1343f3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53d0b2ea408df40b", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/config/__tests__/km-palette.contrast.test.ts:96"}, "properties": {"repobilityId": "98c78249d53849db", "scanner": "scanner-primary", "fingerprint": "53d0b2ea408df40b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d215e1cfdc034460", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/auth/api.ts:388"}, "properties": {"repobilityId": "4c847384c4f2b9ee", "scanner": "scanner-primary", "fingerprint": "d215e1cfdc034460", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-86c1a8bfb08d5dcb", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/auth/utils.ts:46"}, "properties": {"repobilityId": "ccf0ebe59434d4dd", "scanner": "scanner-primary", "fingerprint": "86c1a8bfb08d5dcb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-93e7fea8defb003b", "level": "none", "message": {"text": "Commented-code block (11 lines) in frontend/lib/events/paper-events.ts:51"}, "properties": {"repobilityId": "8cdeb29e07b315fd", "scanner": "scanner-primary", "fingerprint": "93e7fea8defb003b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0be799d6836060b2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/api/unwrap-envelope.ts:2"}, "properties": {"repobilityId": "a99d547f4fbed6a3", "scanner": "scanner-primary", "fingerprint": "0be799d6836060b2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-23f09ae3d8547950", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/api/index.ts:29"}, "properties": {"repobilityId": "bcc07daa9639a05c", "scanner": "scanner-primary", "fingerprint": "23f09ae3d8547950", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-48c4ce33ac80d6ac", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/lib/api/client.ts:99"}, "properties": {"repobilityId": "b6a22748516f39d3", "scanner": "scanner-primary", "fingerprint": "48c4ce33ac80d6ac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f825f05222843704", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/api/services/auth.service.ts:294"}, "properties": {"repobilityId": "09be0dd60b5f0724", "scanner": "scanner-primary", "fingerprint": "f825f05222843704", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d3d72abd9da94dec", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/api/services/query-intelligence-api.service.ts:17"}, "properties": {"repobilityId": "46d4c3790652b26a", "scanner": "scanner-primary", "fingerprint": "d3d72abd9da94dec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b11793006e2ec287", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/api/services/auto-pipeline-api.service.ts:60"}, "properties": {"repobilityId": "6a952b2bbcd2b5da", "scanner": "scanner-primary", "fingerprint": "b11793006e2ec287", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9e19b929c0b45b21", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/api/services/collection-audit-api.service.ts:111"}, "properties": {"repobilityId": "26aeefccda1c0b1a", "scanner": "scanner-primary", "fingerprint": "9e19b929c0b45b21", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-07bd769f7b5fe587", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/api/services/citation-enrichment-api.service.ts:84"}, "properties": {"repobilityId": "04961bff0f2b5cdb", "scanner": "scanner-primary", "fingerprint": "07bd769f7b5fe587", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a718d47e6d16a5a0", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/lib/api/services/unified-theme-api.service.ts:1315"}, "properties": {"repobilityId": "5453724ac3176242", "scanner": "scanner-primary", "fingerprint": "a718d47e6d16a5a0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85ff24c12df95114", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/lib/api/services/gap-review-api.service.ts:20"}, "properties": {"repobilityId": "d6cf776579b17eb3", "scanner": "scanner-primary", "fingerprint": "85ff24c12df95114", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ea99441865636757", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/lib/api/services/pipeline-jobs.service.ts:56"}, "properties": {"repobilityId": "8e450552dfa2658f", "scanner": "scanner-primary", "fingerprint": "ea99441865636757", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fbc0c05a50df584f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/api/services/paper-yield-api.service.ts:10"}, "properties": {"repobilityId": "965c2c3c794eff4b", "scanner": "scanner-primary", "fingerprint": "fbc0c05a50df584f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-df2ffc75e28972d3", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/utils/auto-save-marker.ts:44"}, "properties": {"repobilityId": "b1fc528ba52c70c5", "scanner": "scanner-primary", "fingerprint": "df2ffc75e28972d3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-24d13b24a6a5fffc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/utils/retry.ts:249"}, "properties": {"repobilityId": "8b90d789ad96388f", "scanner": "scanner-primary", "fingerprint": "24d13b24a6a5fffc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3b3b4d2595c39cfa", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/utils/format-duration.ts:71"}, "properties": {"repobilityId": "17aa36f00356a8de", "scanner": "scanner-primary", "fingerprint": "3b3b4d2595c39cfa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-051b2cec994a1f79", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/lib/utils/logger.ts:461"}, "properties": {"repobilityId": "46a896a766961a7d", "scanner": "scanner-primary", "fingerprint": "051b2cec994a1f79", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0902b4fe84755d2f", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/lib/observability/useFrontendMetrics.ts:53"}, "properties": {"repobilityId": "adf01bb1757a8173", "scanner": "scanner-primary", "fingerprint": "0902b4fe84755d2f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d3679c5ce905a802", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/lib/observability/km-telemetry.ts:62"}, "properties": {"repobilityId": "3af4e025197e7a23", "scanner": "scanner-primary", "fingerprint": "d3679c5ce905a802", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ea0fe72825f245f2", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/lib/viz/briefing-headlines.ts:43"}, "properties": {"repobilityId": "6560a92fda9e9430", "scanner": "scanner-primary", "fingerprint": "ea0fe72825f245f2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3bebb3ba7bf61ab3", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/lib/viz/provenance.ts:91"}, "properties": {"repobilityId": "e4abe06738b1e306", "scanner": "scanner-primary", "fingerprint": "3bebb3ba7bf61ab3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-655d0a8318f1e5bb", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/lib/viz/fisheye.ts:97"}, "properties": {"repobilityId": "8c206f002f7b186e", "scanner": "scanner-primary", "fingerprint": "655d0a8318f1e5bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1531e26387cbc854", "level": "none", "message": {"text": "Commented-code block (11 lines) in frontend/lib/viz/uncertainty.ts:83"}, "properties": {"repobilityId": "dd450118af502036", "scanner": "scanner-primary", "fingerprint": "1531e26387cbc854", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-59e8ce6846e6f05d", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/lib/viz/power-law.ts:139"}, "properties": {"repobilityId": "a33bc495cd586185", "scanner": "scanner-primary", "fingerprint": "59e8ce6846e6f05d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f540c6d786323759", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/lib/viz/callon-quadrants.ts:93"}, "properties": {"repobilityId": "1376f5fbfc1f4ba2", "scanner": "scanner-primary", "fingerprint": "f540c6d786323759", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b5d048c16df29ff6", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/viz/graph-narrowing.ts:136"}, "properties": {"repobilityId": "1de260fe654d505e", "scanner": "scanner-primary", "fingerprint": "b5d048c16df29ff6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-94928b92c88bab88", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/lib/viz/rao-stirling.ts:116"}, "properties": {"repobilityId": "b7062458db001379", "scanner": "scanner-primary", "fingerprint": "94928b92c88bab88", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bd51af3bf94417f8", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/lib/viz/__tests__/briefing-headlines.test.ts:418"}, "properties": {"repobilityId": "d641114be1b589a7", "scanner": "scanner-primary", "fingerprint": "bd51af3bf94417f8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-97c183e504b552ee", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/viz/__tests__/perf-harness.test.ts:286"}, "properties": {"repobilityId": "c62af146cfaaf604", "scanner": "scanner-primary", "fingerprint": "97c183e504b552ee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f86686e98eca4ad2", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/lib/viz/__tests__/power-law.test.ts:120"}, "properties": {"repobilityId": "9b647d2734938042", "scanner": "scanner-primary", "fingerprint": "f86686e98eca4ad2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb2be7148138cdb3", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/workers/overlap-resolver.worker.ts:125"}, "properties": {"repobilityId": "4d5bc92eb63e66cb", "scanner": "scanner-primary", "fingerprint": "cb2be7148138cdb3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85aa57516383f9df", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/lib/hooks/useCitationValidation.ts:309"}, "properties": {"repobilityId": "d33c531ecfe90431", "scanner": "scanner-primary", "fingerprint": "85aa57516383f9df", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e7b56b7f5b58a963", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useKnowledgeMapLayout.ts:62"}, "properties": {"repobilityId": "6daa59d38d7f883d", "scanner": "scanner-primary", "fingerprint": "e7b56b7f5b58a963", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-015f47753accfd9a", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/lib/hooks/useQueryIntelligence.ts:35"}, "properties": {"repobilityId": "9ebcdca1d0363ca2", "scanner": "scanner-primary", "fingerprint": "015f47753accfd9a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bf169559581ad53e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/hooks/useQueryIntelligence.ts:238"}, "properties": {"repobilityId": "2d8c548d99cd120f", "scanner": "scanner-primary", "fingerprint": "bf169559581ad53e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0c928d3f8e159db7", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/lib/hooks/useAuthReady.ts:103"}, "properties": {"repobilityId": "5a57fdf50e837dd3", "scanner": "scanner-primary", "fingerprint": "0c928d3f8e159db7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5a7d2821bbb35988", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/lib/hooks/useJobRegistryMirror.ts:71"}, "properties": {"repobilityId": "70990db34ee2935a", "scanner": "scanner-primary", "fingerprint": "5a7d2821bbb35988", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-825d31b75ce0a660", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/hooks/useAuthorProfile.ts:61"}, "properties": {"repobilityId": "ada594c31cf06391", "scanner": "scanner-primary", "fingerprint": "825d31b75ce0a660", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0be50c88eadd8a9f", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useExtractionWorkflow.ts:325"}, "properties": {"repobilityId": "d2409d1332914f05", "scanner": "scanner-primary", "fingerprint": "0be50c88eadd8a9f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a012c526e75a65b", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/lib/hooks/useLayoutTransition.ts:43"}, "properties": {"repobilityId": "66475e4bfeaa61b6", "scanner": "scanner-primary", "fingerprint": "6a012c526e75a65b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-08dca72fd1002d91", "level": "none", "message": {"text": "Commented-code block (11 lines) in frontend/lib/hooks/useUnifiedEvidence.ts:137"}, "properties": {"repobilityId": "274b0f3021332666", "scanner": "scanner-primary", "fingerprint": "08dca72fd1002d91", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-91cf11a11b3c26a1", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/lib/hooks/useFieldMapData.ts:64"}, "properties": {"repobilityId": "ce4bad68287fe1f0", "scanner": "scanner-primary", "fingerprint": "91cf11a11b3c26a1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd50336bd792aea3", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/lib/hooks/useClientSideLayout.ts:303"}, "properties": {"repobilityId": "e98315846f56e49f", "scanner": "scanner-primary", "fingerprint": "fd50336bd792aea3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-64dfedf9b3d5a447", "level": "none", "message": {"text": "Commented-code block (11 lines) in frontend/lib/hooks/useSaturationData.ts:127"}, "properties": {"repobilityId": "bedb3723f6e594c1", "scanner": "scanner-primary", "fingerprint": "64dfedf9b3d5a447", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9e01eead1c6199bb", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useKnowledgeMapURLState.ts:66"}, "properties": {"repobilityId": "c0e00c4595343492", "scanner": "scanner-primary", "fingerprint": "9e01eead1c6199bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-487e2eea06bd40a5", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/lib/hooks/useAnalysisWebSocket.ts:307"}, "properties": {"repobilityId": "605e1069967d1543", "scanner": "scanner-primary", "fingerprint": "487e2eea06bd40a5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-46e14ab963c7858c", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/lib/hooks/useDrOPageReporter.ts:74"}, "properties": {"repobilityId": "30590efa894b404f", "scanner": "scanner-primary", "fingerprint": "46e14ab963c7858c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-263c6e7c4bbfb772", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useKeyboardShortcuts.ts:40"}, "properties": {"repobilityId": "b08cbcd59b4c3f84", "scanner": "scanner-primary", "fingerprint": "263c6e7c4bbfb772", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ecde8d200dbb693b", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useFinishScreeningHandoff.ts:59"}, "properties": {"repobilityId": "7f28007c9d289ca4", "scanner": "scanner-primary", "fingerprint": "ecde8d200dbb693b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-370bf0a4d0ab72be", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/lib/hooks/useWebSocketBase.ts:210"}, "properties": {"repobilityId": "a8dec69b5d54a55f", "scanner": "scanner-primary", "fingerprint": "370bf0a4d0ab72be", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3ddfc608813750c2", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/lib/hooks/useAutoFullTextDetection.ts:256"}, "properties": {"repobilityId": "faa5930f94abcc6a", "scanner": "scanner-primary", "fingerprint": "3ddfc608813750c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-82e8b76b5cc463d3", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/lib/hooks/useSearchWebSocket.ts:87"}, "properties": {"repobilityId": "809167aa2e91900f", "scanner": "scanner-primary", "fingerprint": "82e8b76b5cc463d3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2f9e2c99498e30e", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/lib/hooks/useStudyDataRestoration.ts:103"}, "properties": {"repobilityId": "c6ee44dbf59ec2cc", "scanner": "scanner-primary", "fingerprint": "f2f9e2c99498e30e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b2fd35696ae2432e", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useSearchPersistence.ts:69"}, "properties": {"repobilityId": "e1fd9b48be7d4475", "scanner": "scanner-primary", "fingerprint": "b2fd35696ae2432e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7dd2f5c01515e05f", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useJobRegistryBroadcast.ts:211"}, "properties": {"repobilityId": "6bd8988a07d514e9", "scanner": "scanner-primary", "fingerprint": "7dd2f5c01515e05f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e25097ade204226d", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useViewportAnimation.ts:213"}, "properties": {"repobilityId": "6599d62603846300", "scanner": "scanner-primary", "fingerprint": "e25097ade204226d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-df6b57fc2a4a1219", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/lib/hooks/useThemeApiHandlers.ts:257"}, "properties": {"repobilityId": "c19bac919f852f0d", "scanner": "scanner-primary", "fingerprint": "df6b57fc2a4a1219", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e023e070841d83c8", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/lib/hooks/useResearchQuestionAssistant.ts:617"}, "properties": {"repobilityId": "56e1baf7ab56d0ae", "scanner": "scanner-primary", "fingerprint": "e023e070841d83c8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-81a4c8a5cc4f8599", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/lib/hooks/useGapsUrlState.ts:87"}, "properties": {"repobilityId": "e959c7802f2b8a04", "scanner": "scanner-primary", "fingerprint": "81a4c8a5cc4f8599", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d5fffd1ffbeedf1b", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useResearchProgress.ts:64"}, "properties": {"repobilityId": "c39d31b4250fff02", "scanner": "scanner-primary", "fingerprint": "d5fffd1ffbeedf1b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-da42b71daccf5cc3", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useBrowserNavGuard.ts:45"}, "properties": {"repobilityId": "46423668978dd8dc", "scanner": "scanner-primary", "fingerprint": "da42b71daccf5cc3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7708397af22b4903", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/lib/hooks/useResearchSessionRestore.ts:40"}, "properties": {"repobilityId": "1297bc584aa0b220", "scanner": "scanner-primary", "fingerprint": "7708397af22b4903", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d3019cfc9a042a86", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/hooks/useFullTextSearch.ts:57"}, "properties": {"repobilityId": "4b3cde8fdceff45d", "scanner": "scanner-primary", "fingerprint": "d3019cfc9a042a86", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b45dde4ffaf3f73b", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/lib/hooks/useKnowledgeMapData.ts:198"}, "properties": {"repobilityId": "48567f193c8f80bc", "scanner": "scanner-primary", "fingerprint": "b45dde4ffaf3f73b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-281e814e9a6da01b", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/lib/hooks/useAutoPipelineOnArrival.ts:112"}, "properties": {"repobilityId": "443e58527a884be5", "scanner": "scanner-primary", "fingerprint": "281e814e9a6da01b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d4f8a6dc5eba347", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/hooks/useContextAwareHints.ts:144"}, "properties": {"repobilityId": "f06d5f9fd954c413", "scanner": "scanner-primary", "fingerprint": "8d4f8a6dc5eba347", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4e198788999552fa", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useResearchAlignment.ts:61"}, "properties": {"repobilityId": "86e18f74b8cbd8eb", "scanner": "scanner-primary", "fingerprint": "4e198788999552fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0a7b6f77667861e5", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/lib/hooks/useDrOPipelineContext.ts:164"}, "properties": {"repobilityId": "bf50cdec5229b626", "scanner": "scanner-primary", "fingerprint": "0a7b6f77667861e5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8e4549b5b61aa13d", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useQSortInstructions.ts:609"}, "properties": {"repobilityId": "8e6cd060dc37eb79", "scanner": "scanner-primary", "fingerprint": "8e4549b5b61aa13d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4458254ab2d8b0dd", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/lib/hooks/useFieldMapHandlers.ts:198"}, "properties": {"repobilityId": "0dd9d0e002f74ad3", "scanner": "scanner-primary", "fingerprint": "4458254ab2d8b0dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6aaa64bcb5cfbe80", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useAutoSave.ts:38"}, "properties": {"repobilityId": "c341ae02b91a4ae9", "scanner": "scanner-primary", "fingerprint": "6aaa64bcb5cfbe80", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0abbb1ce5ccb1609", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/lib/hooks/useDrOnionContext.ts:227"}, "properties": {"repobilityId": "3b0ca7f228e14da8", "scanner": "scanner-primary", "fingerprint": "0abbb1ce5ccb1609", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a107e508ae05a0d5", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/lib/hooks/useKnowledgeMapAnnouncer.ts:257"}, "properties": {"repobilityId": "2f6bc07c4e11ad7c", "scanner": "scanner-primary", "fingerprint": "a107e508ae05a0d5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b5793d488ff3d0e", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useDiscoverRouteGuard.ts:52"}, "properties": {"repobilityId": "d536fa8b0f84c7ca", "scanner": "scanner-primary", "fingerprint": "4b5793d488ff3d0e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-998f7a3ebf08f1b3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/hooks/useTranslation.ts:63"}, "properties": {"repobilityId": "d2628f756eb5791b", "scanner": "scanner-primary", "fingerprint": "998f7a3ebf08f1b3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6eedadc17b8f167d", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/lib/hooks/useGapRefinementWebSocket.ts:194"}, "properties": {"repobilityId": "e137f03c6e612684", "scanner": "scanner-primary", "fingerprint": "6eedadc17b8f167d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7052879e7a56c9eb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/hooks/useCitationGraph.ts:76"}, "properties": {"repobilityId": "4e930c2960963b84", "scanner": "scanner-primary", "fingerprint": "7052879e7a56c9eb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f863a90a8702bc78", "level": "none", "message": {"text": "Commented-code block (11 lines) in frontend/lib/hooks/useUserJobsSocket.ts:132"}, "properties": {"repobilityId": "bdde3ce2387d7b7d", "scanner": "scanner-primary", "fingerprint": "f863a90a8702bc78", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a1a63432f1cb7ae3", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useKmCoverage.ts:128"}, "properties": {"repobilityId": "c70c6b19a2da097e", "scanner": "scanner-primary", "fingerprint": "a1a63432f1cb7ae3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-84d6ba989c183608", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useResearchQuestionWebSocket.ts:370"}, "properties": {"repobilityId": "28dfcc575eeb5153", "scanner": "scanner-primary", "fingerprint": "84d6ba989c183608", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d567de65ff82492a", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useKnowledgeGraphBuildSocket.ts:269"}, "properties": {"repobilityId": "57ad524b04dcf25f", "scanner": "scanner-primary", "fingerprint": "d567de65ff82492a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c6da4b354f684146", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/hooks/useRankingExperiment.ts:76"}, "properties": {"repobilityId": "7176a94bedf56cd1", "scanner": "scanner-primary", "fingerprint": "c6da4b354f684146", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-955647e55dbf61f5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/hooks/useAbortableFetch.ts:29"}, "properties": {"repobilityId": "b0c236c36b13a4bc", "scanner": "scanner-primary", "fingerprint": "955647e55dbf61f5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9f533f4b5ec36843", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/lib/hooks/useThematizationWebSocket.ts:304"}, "properties": {"repobilityId": "38affce2a2a7076f", "scanner": "scanner-primary", "fingerprint": "9f533f4b5ec36843", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b07018bcdeca3013", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/useDrOnionWebSocket.ts:161"}, "properties": {"repobilityId": "6b992819ed90369e", "scanner": "scanner-primary", "fingerprint": "b07018bcdeca3013", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b444a66ef1a9a02", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/__tests__/useGapRefinementWebSocket.lifecycle.test.ts:83"}, "properties": {"repobilityId": "130c9c35b43fc268", "scanner": "scanner-primary", "fingerprint": "6b444a66ef1a9a02", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-64941443d3b94f8c", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/lib/hooks/__tests__/useFieldMapInteractions.test.ts:256"}, "properties": {"repobilityId": "0e8746a5c98324b6", "scanner": "scanner-primary", "fingerprint": "64941443d3b94f8c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0a61b06c27523bbb", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/lib/hooks/__tests__/useFieldMapData.test.ts:56"}, "properties": {"repobilityId": "a3df998711c2b1c9", "scanner": "scanner-primary", "fingerprint": "0a61b06c27523bbb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7a9c3085b6065861", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/lib/hooks/__tests__/useKnowledgeMapData.test.ts:105"}, "properties": {"repobilityId": "22da9eda97400ca7", "scanner": "scanner-primary", "fingerprint": "7a9c3085b6065861", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-032bd2ff0f83056e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/hooks/__tests__/useKnowledgeMapData.test.ts:981"}, "properties": {"repobilityId": "d22cbb1e0a57b85c", "scanner": "scanner-primary", "fingerprint": "032bd2ff0f83056e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-518e32cccf4cffa4", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/__tests__/useSearchWebSocket.test.ts:423"}, "properties": {"repobilityId": "e6867c7b1bbde9c1", "scanner": "scanner-primary", "fingerprint": "518e32cccf4cffa4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0c7697df5e9eed87", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/__tests__/useKnowledgeGraphBuildSocket.test.ts:72"}, "properties": {"repobilityId": "49aef4f44622fd4c", "scanner": "scanner-primary", "fingerprint": "0c7697df5e9eed87", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1b8d3f4750e4923e", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/lib/hooks/__tests__/useFieldMapHandlers.test.ts:354"}, "properties": {"repobilityId": "5090e27d15a80a43", "scanner": "scanner-primary", "fingerprint": "1b8d3f4750e4923e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-91c6e0bf92e73b5f", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/__tests__/useKnowledgeMapURLState.test.ts:24"}, "properties": {"repobilityId": "ef222c1f61ee9002", "scanner": "scanner-primary", "fingerprint": "91c6e0bf92e73b5f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5c73f9c2dac1b053", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/__tests__/useStudyDataRestoration.test.ts:263"}, "properties": {"repobilityId": "4baedb17371c22d7", "scanner": "scanner-primary", "fingerprint": "5c73f9c2dac1b053", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-474e06119a141b2b", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/__tests__/evaluateInactivityWatchdog.test.ts:4"}, "properties": {"repobilityId": "cb4684a356107ee0", "scanner": "scanner-primary", "fingerprint": "474e06119a141b2b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-81cb37a5dd9df5ef", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/lib/hooks/__tests__/useDiscoverRouteGuard.test.ts:578"}, "properties": {"repobilityId": "77847c4352d0015e", "scanner": "scanner-primary", "fingerprint": "81cb37a5dd9df5ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d6a684a0911a02a5", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/__tests__/useResearchProgress.study-switch.test.ts:563"}, "properties": {"repobilityId": "fa8b89ea2fc60f75", "scanner": "scanner-primary", "fingerprint": "d6a684a0911a02a5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e345eb4ee2add762", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/hooks/__tests__/useQueryIntelligence.test.ts:17"}, "properties": {"repobilityId": "882d6b1a43020936", "scanner": "scanner-primary", "fingerprint": "e345eb4ee2add762", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8abe764e71375bec", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/services/upload-queue.service.ts:333"}, "properties": {"repobilityId": "781abfe68763fc3d", "scanner": "scanner-primary", "fingerprint": "8abe764e71375bec", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-75786e0d3c4ac08f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/services/screening-workflow-api.service.ts:149"}, "properties": {"repobilityId": "d4d04c700ed3c1d4", "scanner": "scanner-primary", "fingerprint": "75786e0d3c4ac08f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-097a0de299ee409b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/services/recruitment-api.service.ts:269"}, "properties": {"repobilityId": "202cdb7eeea5c46c", "scanner": "scanner-primary", "fingerprint": "097a0de299ee409b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-31b1cdffc8030737", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/lib/services/auth-coordinator.service.ts:391"}, "properties": {"repobilityId": "553d4fec13d27642", "scanner": "scanner-primary", "fingerprint": "31b1cdffc8030737", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9a9a043db01de08d", "level": "note", "message": {"text": "Legacy-named symbol `isLegacy` in frontend/lib/services/literature-api.service.ts:6188"}, "properties": {"repobilityId": "a18de24aab066bc5", "scanner": "scanner-primary", "fingerprint": "9a9a043db01de08d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7fedab437b908b25", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/lib/services/literature-api.service.ts:3"}, "properties": {"repobilityId": "f1e95c4b4ff06f96", "scanner": "scanner-primary", "fingerprint": "7fedab437b908b25", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-89dbb627acb82ddc", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/services/institution.service.ts:315"}, "properties": {"repobilityId": "64b26a160e332345", "scanner": "scanner-primary", "fingerprint": "89dbb627acb82ddc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5c0dbde55beaa80d", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/services/search-suggestions.service.ts:666"}, "properties": {"repobilityId": "e453f5b67f39a805", "scanner": "scanner-primary", "fingerprint": "5c0dbde55beaa80d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e540a4c964f2f1fb", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/services/websocket-auth.service.ts:318"}, "properties": {"repobilityId": "5c547868f848a93b", "scanner": "scanner-primary", "fingerprint": "e540a4c964f2f1fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d9f1412611f1489d", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/services/dr-onionstein-batch-sender.ts:33"}, "properties": {"repobilityId": "e59d185a73cdf27d", "scanner": "scanner-primary", "fingerprint": "d9f1412611f1489d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c3bb9448aa3bf0ad", "level": "note", "message": {"text": "Legacy-named symbol `daysOld` in frontend/lib/services/draft.service.ts:92"}, "properties": {"repobilityId": "b6218222e6dfe0a8", "scanner": "scanner-primary", "fingerprint": "c3bb9448aa3bf0ad", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8285fa9910147ee4", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/lib/services/hub-api.service.ts:297"}, "properties": {"repobilityId": "d7bb410ae2513ff1", "scanner": "scanner-primary", "fingerprint": "8285fa9910147ee4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-da0d1b02b999b06a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/services/hub-api.service.ts:10"}, "properties": {"repobilityId": "f0bed88026cf5cd0", "scanner": "scanner-primary", "fingerprint": "da0d1b02b999b06a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f590f136cc903d5c", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/lib/services/websocket-connection-manager.service.ts:460"}, "properties": {"repobilityId": "d2678d1b86f79e41", "scanner": "scanner-primary", "fingerprint": "f590f136cc903d5c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-123bf7cce5f902a6", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/services/__tests__/literature-api.bulk-save-study.test.ts:119"}, "properties": {"repobilityId": "03114e547781c1f0", "scanner": "scanner-primary", "fingerprint": "123bf7cce5f902a6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed8c1fd94fbaf41c", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/services/__tests__/literature-api.url-validation.test.ts:22"}, "properties": {"repobilityId": "322733000db2c860", "scanner": "scanner-primary", "fingerprint": "ed8c1fd94fbaf41c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4600379aed4c504b", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/lib/services/__tests__/literature-api-gap-contracts.test.ts:316"}, "properties": {"repobilityId": "bfc3d6022a60530a", "scanner": "scanner-primary", "fingerprint": "4600379aed4c504b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ca0713394783cb51", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/services/theme-extraction/performance-metrics.service.ts:278"}, "properties": {"repobilityId": "24c1863852cb61bb", "scanner": "scanner-primary", "fingerprint": "ca0713394783cb51", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f0202d1b9327376b", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/lib/services/theme-extraction/fulltext-extraction.service.ts:368"}, "properties": {"repobilityId": "7d873825a2ff2e0e", "scanner": "scanner-primary", "fingerprint": "f0202d1b9327376b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3517e5b331965706", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/lib/services/theme-extraction/extraction-orchestrator.service.ts:256"}, "properties": {"repobilityId": "55cb6403026d4e58", "scanner": "scanner-primary", "fingerprint": "3517e5b331965706", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-07456750db3c537a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/hooks/useParticipantFlow.ts:123"}, "properties": {"repobilityId": "3617f0f01f33ebd3", "scanner": "scanner-primary", "fingerprint": "07456750db3c537a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6ff2de1b57be0101", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/hooks/useNavigationState.tsx:175"}, "properties": {"repobilityId": "bfd1c4abe84eb473", "scanner": "scanner-primary", "fingerprint": "6ff2de1b57be0101", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e4bc61bb1f55677e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/public/service-worker.js:233"}, "properties": {"repobilityId": "4a4fde9d529e6cd4", "scanner": "scanner-primary", "fingerprint": "e4bc61bb1f55677e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-509419a63c122a3e", "level": "note", "message": {"text": "Legacy-named symbol `startOld` in frontend/e2e/rollback-testing.spec.ts:338"}, "properties": {"repobilityId": "85f37b7dcf928ce5", "scanner": "scanner-primary", "fingerprint": "509419a63c122a3e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-68a28ce09267a065", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/e2e/visual-baselines.spec.ts:73"}, "properties": {"repobilityId": "99cd9fc010fd9c92", "scanner": "scanner-primary", "fingerprint": "68a28ce09267a065", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f1028b0c381bdb27", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/e2e/jobs-ring.spec.ts:100"}, "properties": {"repobilityId": "ae552cc259b4f2b3", "scanner": "scanner-primary", "fingerprint": "f1028b0c381bdb27", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-70c8d77556d22c89", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/e2e/search-hero-round-13.spec.ts:165"}, "properties": {"repobilityId": "2c09afddc2fe318e", "scanner": "scanner-primary", "fingerprint": "70c8d77556d22c89", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3ef77e40117e438b", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/e2e/lit-to-km-pipeline.spec.ts:58"}, "properties": {"repobilityId": "c3108db0d20e0dad", "scanner": "scanner-primary", "fingerprint": "3ef77e40117e438b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-673489e856bf8488", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/e2e/search-hero-accessibility.spec.ts:35"}, "properties": {"repobilityId": "b4437f9c33b5ae92", "scanner": "scanner-primary", "fingerprint": "673489e856bf8488", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-81a797161e431ab2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/e2e/logging-flow.spec.ts:20"}, "properties": {"repobilityId": "ada365eea93ca0ee", "scanner": "scanner-primary", "fingerprint": "81a797161e431ab2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2bba981ce3028e40", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/e2e/bibliometric-report.spec.ts:67"}, "properties": {"repobilityId": "e50ae8be0715d817", "scanner": "scanner-primary", "fingerprint": "2bba981ce3028e40", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-99d8a04fe0e5ea3b", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/e2e/theme-extraction-6stage.spec.ts:264"}, "properties": {"repobilityId": "251fa2f1d0f34570", "scanner": "scanner-primary", "fingerprint": "99d8a04fe0e5ea3b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7ef42eee41c270ae", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/e2e/theme-extraction-workflow.spec.ts:14"}, "properties": {"repobilityId": "e640561462f7858c", "scanner": "scanner-primary", "fingerprint": "7ef42eee41c270ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55c235a060c4f018", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/e2e/source-retry-flow.spec.ts:244"}, "properties": {"repobilityId": "7ebaa013bfb7fb29", "scanner": "scanner-primary", "fingerprint": "55c235a060c4f018", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f46b2e5ed276c495", "level": "note", "message": {"text": "Legacy-named symbol `isLegacy` in frontend/e2e/phase-10999-methodology-export.spec.ts:20"}, "properties": {"repobilityId": "ffcb11a674fb07ad", "scanner": "scanner-primary", "fingerprint": "f46b2e5ed276c495", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2f382519ba0d4de4", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/e2e/authenticated-researcher-routes.spec.ts:39"}, "properties": {"repobilityId": "8d79eab4a4ca4d86", "scanner": "scanner-primary", "fingerprint": "2f382519ba0d4de4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b0ee1e2a106673e", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/e2e/rm-as-source-of-truth.spec.ts:122"}, "properties": {"repobilityId": "38c850db3052f03f", "scanner": "scanner-primary", "fingerprint": "8b0ee1e2a106673e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aeb6a1681d3a57ed", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/knowledge-map-full-audit.spec.ts:58"}, "properties": {"repobilityId": "678e290719ff8ffe", "scanner": "scanner-primary", "fingerprint": "aeb6a1681d3a57ed", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bf912ae5fc52ecd2", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/e2e/gaps-page-full-audit.spec.ts:146"}, "properties": {"repobilityId": "15a89ef14ea80a11", "scanner": "scanner-primary", "fingerprint": "bf912ae5fc52ecd2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-154ca2fe71f236e1", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/e2e/knowledge-map.spec.ts:83"}, "properties": {"repobilityId": "9f018cf683606c2d", "scanner": "scanner-primary", "fingerprint": "154ca2fe71f236e1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e6a7f5cf611b693", "level": "none", "message": {"text": "Commented-code block (12 lines) in frontend/e2e/global-setup.ts:210"}, "properties": {"repobilityId": "ff86ec55e5fc5deb", "scanner": "scanner-primary", "fingerprint": "2e6a7f5cf611b693", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-661fe6258eae7d51", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/e2e/study-switch-data-flow.spec.ts:178"}, "properties": {"repobilityId": "0075b1d6ebc090d1", "scanner": "scanner-primary", "fingerprint": "661fe6258eae7d51", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4362a98f3865d2b1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/e2e/study-switch-data-flow.spec.ts:396"}, "properties": {"repobilityId": "5db82e147d7599d7", "scanner": "scanner-primary", "fingerprint": "4362a98f3865d2b1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b52663af535ca7e3", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/e2e/references-export-dropdown.spec.ts:20"}, "properties": {"repobilityId": "4d81ed719698b7f1", "scanner": "scanner-primary", "fingerprint": "b52663af535ca7e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7335d55857195832", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/e2e/km-tier56-57-announcer-pfnet.spec.ts:44"}, "properties": {"repobilityId": "0429da1de5028937", "scanner": "scanner-primary", "fingerprint": "7335d55857195832", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a6acd6768e38bc2", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/e2e/gap-page/decay-pill.spec.ts:63"}, "properties": {"repobilityId": "0366a132f5f7b023", "scanner": "scanner-primary", "fingerprint": "2a6acd6768e38bc2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-39e8e2d00e2e8269", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/e2e/gap-page/time-to-signal.spec.ts:76"}, "properties": {"repobilityId": "039d15dc496b85f5", "scanner": "scanner-primary", "fingerprint": "39e8e2d00e2e8269", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9c39845b5228ee83", "level": "note", "message": {"text": "Legacy-named symbol `P_old` in frontend/e2e/gap-page/cache-collision.spec.ts:13"}, "properties": {"repobilityId": "cb3916574fbf968c", "scanner": "scanner-primary", "fingerprint": "9c39845b5228ee83", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-375c2ceab33faf11", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/e2e/gap-page/cache-collision.spec.ts:56"}, "properties": {"repobilityId": "fd22fe3be3b8d642", "scanner": "scanner-primary", "fingerprint": "375c2ceab33faf11", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c6580199c53c9eb", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/e2e/gap-page/data-hydration.spec.ts:130"}, "properties": {"repobilityId": "c580aa8d7e115c70", "scanner": "scanner-primary", "fingerprint": "7c6580199c53c9eb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac2c1e399d72c86e", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/e2e/gap-page/contradicting-evidence.spec.ts:96"}, "properties": {"repobilityId": "e8a116de2d81c703", "scanner": "scanner-primary", "fingerprint": "ac2c1e399d72c86e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f1c8204394f7bc5", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/e2e/gap-page/error-trace-identifiers.spec.ts:34"}, "properties": {"repobilityId": "c7914f0483ea7989", "scanner": "scanner-primary", "fingerprint": "3f1c8204394f7bc5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0066ccabd4166fc4", "level": "none", "message": {"text": "Commented-code block (15 lines) in frontend/e2e/gap-page/forest-plot.spec.ts:79"}, "properties": {"repobilityId": "9d584df62356dc96", "scanner": "scanner-primary", "fingerprint": "0066ccabd4166fc4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3935995911bd143", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/e2e/gap-page/ws-reconnect-fsm.spec.ts:54"}, "properties": {"repobilityId": "49adfd471cf14f61", "scanner": "scanner-primary", "fingerprint": "e3935995911bd143", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a48d7f4044ce416b", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/e2e/gap-page/runtime-contracts.spec.ts:33"}, "properties": {"repobilityId": "4a3f8eca8faf9bee", "scanner": "scanner-primary", "fingerprint": "a48d7f4044ce416b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d37230dbcb7515a", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/e2e/gap-page/dr-o-gap-context.spec.ts:59"}, "properties": {"repobilityId": "9acb6d9a621080b1", "scanner": "scanner-primary", "fingerprint": "0d37230dbcb7515a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2d50f8e2fbd78f75", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/e2e/gap-page/multi-user-isolation.spec.ts:35"}, "properties": {"repobilityId": "024466612983596e", "scanner": "scanner-primary", "fingerprint": "2d50f8e2fbd78f75", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c7e9d0ba1305a7a9", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/e2e/gap-page/external-validation.spec.ts:79"}, "properties": {"repobilityId": "8069b4b4646bb7d5", "scanner": "scanner-primary", "fingerprint": "c7e9d0ba1305a7a9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3ad4112af8b6f8aa", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/e2e/gap-page/portfolio-matrix.spec.ts:46"}, "properties": {"repobilityId": "4e73fe748702b1ab", "scanner": "scanner-primary", "fingerprint": "3ad4112af8b6f8aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3192a9ce29014a42", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/e2e/gap-page/ui-cold-load.spec.ts:54"}, "properties": {"repobilityId": "0f89869d461a7771", "scanner": "scanner-primary", "fingerprint": "3192a9ce29014a42", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3ab56f8c5a2a6834", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/e2e/gap-page/reproducibility.spec.ts:98"}, "properties": {"repobilityId": "f57d9f9535001e7d", "scanner": "scanner-primary", "fingerprint": "3ab56f8c5a2a6834", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-33c03e3ae5b1fdcc", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/e2e/gap-page/race-rerun-during-corpus-refresh.spec.ts:40"}, "properties": {"repobilityId": "dda6c7fa86b3872e", "scanner": "scanner-primary", "fingerprint": "33c03e3ae5b1fdcc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-138aa856ed9b0c37", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/e2e/gap-page/theme-extraction-recovery.spec.ts:61"}, "properties": {"repobilityId": "277ac1541957c5f4", "scanner": "scanner-primary", "fingerprint": "138aa856ed9b0c37", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f5d6f898ba30513", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/e2e/gap-page/route-guard-recovery.spec.ts:77"}, "properties": {"repobilityId": "7e2f08570d8f6fcc", "scanner": "scanner-primary", "fingerprint": "2f5d6f898ba30513", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f17baeab047c6f19", "level": "none", "message": {"text": "Commented-code block (14 lines) in frontend/e2e/gap-page/count-consistency.spec.ts:78"}, "properties": {"repobilityId": "2a368d99902fe723", "scanner": "scanner-primary", "fingerprint": "f17baeab047c6f19", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2eb3618328c44c3e", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/e2e/gap-page/cold-load.spec.ts:49"}, "properties": {"repobilityId": "1999016d2e58608f", "scanner": "scanner-primary", "fingerprint": "2eb3618328c44c3e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b0db672651b3d93", "level": "none", "message": {"text": "Commented-code block (14 lines) in frontend/e2e/gap-page/hook-leaks.spec.ts:58"}, "properties": {"repobilityId": "b91445ca9d2a94d2", "scanner": "scanner-primary", "fingerprint": "7b0db672651b3d93", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f73b1faafd874ad7", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/e2e/gap-page/top-1-exit-criteria.spec.ts:153"}, "properties": {"repobilityId": "27f8d9c91989fef2", "scanner": "scanner-primary", "fingerprint": "f73b1faafd874ad7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cc6c3d48f0806f71", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/e2e/gap-page/user-journey-create-study-to-gaps.spec.ts:145"}, "properties": {"repobilityId": "f7aa549e254551bb", "scanner": "scanner-primary", "fingerprint": "cc6c3d48f0806f71", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3dc75218740b55e6", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/e2e/gap-page/wave6-browser-verify.spec.ts:41"}, "properties": {"repobilityId": "fbb867049739bcaf", "scanner": "scanner-primary", "fingerprint": "3dc75218740b55e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-052c5352e8b63d0b", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/e2e/gap-page/fixtures/seed-gap-run.smoke.spec.ts:36"}, "properties": {"repobilityId": "8399781715d57b6a", "scanner": "scanner-primary", "fingerprint": "052c5352e8b63d0b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d53b68098c7be9a7", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/e2e/gap-page/fixtures/seed-gap-run.ts:49"}, "properties": {"repobilityId": "2b5baaa9f8adbb39", "scanner": "scanner-primary", "fingerprint": "d53b68098c7be9a7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-380ba28c581c238f", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-b6208591.spec.ts:7"}, "properties": {"repobilityId": "a0622c7264eb43dd", "scanner": "scanner-primary", "fingerprint": "380ba28c581c238f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55ca10a6fa405e74", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-60a1da8f.spec.ts:7"}, "properties": {"repobilityId": "59d9917815d96f5c", "scanner": "scanner-primary", "fingerprint": "55ca10a6fa405e74", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4285832fce577258", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-12f94082.spec.ts:3"}, "properties": {"repobilityId": "50c7dc2480e7b9ae", "scanner": "scanner-primary", "fingerprint": "4285832fce577258", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-afed5dfb8c960f7b", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-68e4c2fe.spec.ts:7"}, "properties": {"repobilityId": "96528b18ea330dad", "scanner": "scanner-primary", "fingerprint": "afed5dfb8c960f7b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aa394be19d040298", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-91414307.spec.ts:7"}, "properties": {"repobilityId": "6f430ffcdfd434bd", "scanner": "scanner-primary", "fingerprint": "aa394be19d040298", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-586ee5d5ee67b18b", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-985992e4.spec.ts:7"}, "properties": {"repobilityId": "9756f0b15cf58d44", "scanner": "scanner-primary", "fingerprint": "586ee5d5ee67b18b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ceda402f7fe71b9e", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-d2f7c396.spec.ts:7"}, "properties": {"repobilityId": "8661c77a91115be1", "scanner": "scanner-primary", "fingerprint": "ceda402f7fe71b9e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5eabe9a960c76bf1", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-c36ea0f3.spec.ts:3"}, "properties": {"repobilityId": "aabe465a1882b57c", "scanner": "scanner-primary", "fingerprint": "5eabe9a960c76bf1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec7740ebfcf8fe25", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-54820cc3.spec.ts:7"}, "properties": {"repobilityId": "aca6b0b4e58ad119", "scanner": "scanner-primary", "fingerprint": "ec7740ebfcf8fe25", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-abb2f93f61691159", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-7131b95c.spec.ts:7"}, "properties": {"repobilityId": "c3aca9dff1ccdfa9", "scanner": "scanner-primary", "fingerprint": "abb2f93f61691159", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-47ed9c30686c2717", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/e2e/k2-wiring/route-route-c2068208.spec.ts:3"}, "properties": {"repobilityId": "a75a3e9222b856d3", "scanner": "scanner-primary", "fingerprint": "47ed9c30686c2717", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b6e6494f8c014de", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-9c8145a9.spec.ts:3"}, "properties": {"repobilityId": "af1b3ea376d1d335", "scanner": "scanner-primary", "fingerprint": "0b6e6494f8c014de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d752a2b65f9c3a99", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-b47ae093.spec.ts:7"}, "properties": {"repobilityId": "b12840b91e390e36", "scanner": "scanner-primary", "fingerprint": "d752a2b65f9c3a99", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3c096420d7900063", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-4385f9d0.spec.ts:3"}, "properties": {"repobilityId": "eb7ad39c6e4cb807", "scanner": "scanner-primary", "fingerprint": "3c096420d7900063", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ab3653599e736e02", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-7b70004d.spec.ts:7"}, "properties": {"repobilityId": "2358c72c94f0ec4e", "scanner": "scanner-primary", "fingerprint": "ab3653599e736e02", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-54bdae5cf2d2c7c8", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-3904fc29.spec.ts:7"}, "properties": {"repobilityId": "e88c9d6c8ba70ce5", "scanner": "scanner-primary", "fingerprint": "54bdae5cf2d2c7c8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b68b93d4e9dee028", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-c92254f2.spec.ts:7"}, "properties": {"repobilityId": "55f50a460c1cffcf", "scanner": "scanner-primary", "fingerprint": "b68b93d4e9dee028", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b322c4ff852693ee", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-f75c1d4e.spec.ts:7"}, "properties": {"repobilityId": "f631e38960e765f4", "scanner": "scanner-primary", "fingerprint": "b322c4ff852693ee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b8ae822f79561b84", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-4607ddcf.spec.ts:7"}, "properties": {"repobilityId": "38f31ee91be95311", "scanner": "scanner-primary", "fingerprint": "b8ae822f79561b84", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0fa4ae78ff9442fb", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-a72a78e1.spec.ts:7"}, "properties": {"repobilityId": "192d9afdda76231e", "scanner": "scanner-primary", "fingerprint": "0fa4ae78ff9442fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b5febdf9f9ae8da", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-0d6054af.spec.ts:7"}, "properties": {"repobilityId": "58ea76c3e1f2b5e5", "scanner": "scanner-primary", "fingerprint": "7b5febdf9f9ae8da", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8cb56fd93b00399", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-109938a4.spec.ts:7"}, "properties": {"repobilityId": "3ece72118329b6f4", "scanner": "scanner-primary", "fingerprint": "c8cb56fd93b00399", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bef9ac0a8e90d22e", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-66b3d6ab.spec.ts:7"}, "properties": {"repobilityId": "19bcd53abbbf0679", "scanner": "scanner-primary", "fingerprint": "bef9ac0a8e90d22e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-939536f5e3f78590", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-cbbd4bd4.spec.ts:7"}, "properties": {"repobilityId": "42fa9707355676d6", "scanner": "scanner-primary", "fingerprint": "939536f5e3f78590", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4e8669f4439d59b3", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-95a59a3d.spec.ts:3"}, "properties": {"repobilityId": "a5a27cb7c0e38005", "scanner": "scanner-primary", "fingerprint": "4e8669f4439d59b3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-51d96b7054d50d19", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-5fa4d704.spec.ts:7"}, "properties": {"repobilityId": "749dd194044777d2", "scanner": "scanner-primary", "fingerprint": "51d96b7054d50d19", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-00204ce1b75c1961", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-fd2de3ab.spec.ts:7"}, "properties": {"repobilityId": "75e421185aec7782", "scanner": "scanner-primary", "fingerprint": "00204ce1b75c1961", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3c019f0552fdd122", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-5d65fcf4.spec.ts:7"}, "properties": {"repobilityId": "a2171bc4d004be0c", "scanner": "scanner-primary", "fingerprint": "3c019f0552fdd122", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-140973161df5a89f", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-7a80bf26.spec.ts:7"}, "properties": {"repobilityId": "27284222e6fb0b8a", "scanner": "scanner-primary", "fingerprint": "140973161df5a89f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a80abfb537c80d5c", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-136e7db7.spec.ts:3"}, "properties": {"repobilityId": "2116d51dcae024cc", "scanner": "scanner-primary", "fingerprint": "a80abfb537c80d5c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-105d60d71b73bfff", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/e2e/k2-wiring/action_button-action_button-f734fd6b.spec.ts:3"}, "properties": {"repobilityId": "15c96d73cb4c3a58", "scanner": "scanner-primary", "fingerprint": "105d60d71b73bfff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb994351078ab41f", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-7a4a572b.spec.ts:7"}, "properties": {"repobilityId": "5ffa418cfe38c15e", "scanner": "scanner-primary", "fingerprint": "cb994351078ab41f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ecbd031066bdf501", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-33373989.spec.ts:7"}, "properties": {"repobilityId": "8680c5a1fad7b6c4", "scanner": "scanner-primary", "fingerprint": "ecbd031066bdf501", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-04574b93e7994e61", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-26b70e49.spec.ts:7"}, "properties": {"repobilityId": "166614c4ac64d891", "scanner": "scanner-primary", "fingerprint": "04574b93e7994e61", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3ea02bf9abd22b1a", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-3b391ab9.spec.ts:7"}, "properties": {"repobilityId": "4d96f5a77d24c6ed", "scanner": "scanner-primary", "fingerprint": "3ea02bf9abd22b1a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c258db2f337ec81", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-bcb08d01.spec.ts:7"}, "properties": {"repobilityId": "a220f4f9665b1520", "scanner": "scanner-primary", "fingerprint": "7c258db2f337ec81", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f5f79f8740de075", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-8ef7463c.spec.ts:3"}, "properties": {"repobilityId": "29b9b7a9a8676086", "scanner": "scanner-primary", "fingerprint": "3f5f79f8740de075", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f12f8cc7a476ebe1", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-68b778de.spec.ts:3"}, "properties": {"repobilityId": "72033c3641b5afd6", "scanner": "scanner-primary", "fingerprint": "f12f8cc7a476ebe1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a28a6654128b8d9c", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-f0d24e8d.spec.ts:7"}, "properties": {"repobilityId": "dd56f4a436b23a51", "scanner": "scanner-primary", "fingerprint": "a28a6654128b8d9c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-385531e4d3f31ef6", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-df743596.spec.ts:7"}, "properties": {"repobilityId": "38b7723d9dbd033d", "scanner": "scanner-primary", "fingerprint": "385531e4d3f31ef6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c5de55356be2cc6a", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/e2e/k2-wiring/route-route-bc48b06c.spec.ts:3"}, "properties": {"repobilityId": "ea53f20d9ee4faeb", "scanner": "scanner-primary", "fingerprint": "c5de55356be2cc6a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb41cda30ac4053a", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-f0260893.spec.ts:7"}, "properties": {"repobilityId": "14539703391c0b40", "scanner": "scanner-primary", "fingerprint": "cb41cda30ac4053a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2e54345861c20e4", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/e2e/k2-wiring/route-route-9e85dcab.spec.ts:3"}, "properties": {"repobilityId": "78be0eae923dd638", "scanner": "scanner-primary", "fingerprint": "f2e54345861c20e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a13c71f00732f3a8", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-a67d7f22.spec.ts:7"}, "properties": {"repobilityId": "6935071f6b188f5a", "scanner": "scanner-primary", "fingerprint": "a13c71f00732f3a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4ae6be77ed62861c", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-02c2d26e.spec.ts:7"}, "properties": {"repobilityId": "e122fdbcf1b7767a", "scanner": "scanner-primary", "fingerprint": "4ae6be77ed62861c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f36fad2adaa8bda8", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-b28eccf7.spec.ts:7"}, "properties": {"repobilityId": "d5f67478f45bae9c", "scanner": "scanner-primary", "fingerprint": "f36fad2adaa8bda8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce68bda4fa69395a", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/e2e/k2-wiring/route-route-73684932.spec.ts:3"}, "properties": {"repobilityId": "4f7dd9ed67587904", "scanner": "scanner-primary", "fingerprint": "ce68bda4fa69395a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-68a902feb919c93e", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-a6758169.spec.ts:7"}, "properties": {"repobilityId": "ed6d9e0c66dba10b", "scanner": "scanner-primary", "fingerprint": "68a902feb919c93e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c215146236a8c67b", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-08109106.spec.ts:7"}, "properties": {"repobilityId": "59eef8b713668447", "scanner": "scanner-primary", "fingerprint": "c215146236a8c67b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3b343980066af2dd", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-e5a4a0de.spec.ts:7"}, "properties": {"repobilityId": "3109412434aec180", "scanner": "scanner-primary", "fingerprint": "3b343980066af2dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a70c15d1597155a8", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-a5ae48ba.spec.ts:7"}, "properties": {"repobilityId": "48cf9c7d402af23e", "scanner": "scanner-primary", "fingerprint": "a70c15d1597155a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bb64c60f7338beb4", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-06be1313.spec.ts:7"}, "properties": {"repobilityId": "86111f0df0042c40", "scanner": "scanner-primary", "fingerprint": "bb64c60f7338beb4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e8989d3e9c0319a3", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-66ab6144.spec.ts:3"}, "properties": {"repobilityId": "26963fbab02cdbd1", "scanner": "scanner-primary", "fingerprint": "e8989d3e9c0319a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9dab3e35ad0eacb1", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-b3806e8c.spec.ts:7"}, "properties": {"repobilityId": "c8bc4fbf21fe106e", "scanner": "scanner-primary", "fingerprint": "9dab3e35ad0eacb1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9ba2dae4c1b069f4", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-b92d9a67.spec.ts:7"}, "properties": {"repobilityId": "166cad390f1d87e3", "scanner": "scanner-primary", "fingerprint": "9ba2dae4c1b069f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-37a936aab26245ae", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-49293c36.spec.ts:7"}, "properties": {"repobilityId": "9b11f19671730227", "scanner": "scanner-primary", "fingerprint": "37a936aab26245ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c1a95ae0f9ee5105", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-0d03b1eb.spec.ts:7"}, "properties": {"repobilityId": "350de37eaef43f43", "scanner": "scanner-primary", "fingerprint": "c1a95ae0f9ee5105", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff94bac72cbade4b", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-e4e73428.spec.ts:7"}, "properties": {"repobilityId": "dce7677d44600165", "scanner": "scanner-primary", "fingerprint": "ff94bac72cbade4b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-023c398ff95d1d34", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-b5e40c63.spec.ts:7"}, "properties": {"repobilityId": "752242d3dafeec19", "scanner": "scanner-primary", "fingerprint": "023c398ff95d1d34", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-81aae7b4bd8e4f8a", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-520b36ac.spec.ts:7"}, "properties": {"repobilityId": "6ffe3f268be6faa3", "scanner": "scanner-primary", "fingerprint": "81aae7b4bd8e4f8a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc497439b4443e04", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-e80ed871.spec.ts:7"}, "properties": {"repobilityId": "de548884e5610862", "scanner": "scanner-primary", "fingerprint": "bc497439b4443e04", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85e18dfce4d4881e", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-abac1162.spec.ts:7"}, "properties": {"repobilityId": "4e0ab079583eb27b", "scanner": "scanner-primary", "fingerprint": "85e18dfce4d4881e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-56f91106778c3fd7", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-dd3257e6.spec.ts:7"}, "properties": {"repobilityId": "da1767e1e89d982e", "scanner": "scanner-primary", "fingerprint": "56f91106778c3fd7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd9daf01f5b4263a", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-27f56a67.spec.ts:7"}, "properties": {"repobilityId": "71e54df5051722c7", "scanner": "scanner-primary", "fingerprint": "fd9daf01f5b4263a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d2ee861d0cc67499", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/k2-wiring/modal-modal-ee9fd96c.spec.ts:7"}, "properties": {"repobilityId": "6d8476974e9c419c", "scanner": "scanner-primary", "fingerprint": "d2ee861d0cc67499", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a16dde77e540d992", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-20808537.spec.ts:3"}, "properties": {"repobilityId": "cf0629a83d72136f", "scanner": "scanner-primary", "fingerprint": "a16dde77e540d992", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c958215d30133489", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/e2e/k2-wiring/route-route-c72ba744.spec.ts:3"}, "properties": {"repobilityId": "39bce20008c3c727", "scanner": "scanner-primary", "fingerprint": "c958215d30133489", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-acaed50abcc40149", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/e2e/k2-wiring/route-route-bf381d53.spec.ts:3"}, "properties": {"repobilityId": "1d9b4ff33cc8dd4f", "scanner": "scanner-primary", "fingerprint": "acaed50abcc40149", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fbf1aabf909740f3", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/orcid-comprehensive-test.spec.ts:504"}, "properties": {"repobilityId": "607fcaa7bba2fdef", "scanner": "scanner-primary", "fingerprint": "fbf1aabf909740f3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d1b6ac91457fba0e", "level": "none", "message": {"text": "Commented-code block (12 lines) in scripts/phase-10.110-e2e-triage.mjs:8"}, "properties": {"repobilityId": "7e310a5e4a9dcc9a", "scanner": "scanner-primary", "fingerprint": "d1b6ac91457fba0e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e75eb5009d148c45", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ui-audit-runner.js:138"}, "properties": {"repobilityId": "65b8f4206a8db1f2", "scanner": "scanner-primary", "fingerprint": "e75eb5009d148c45", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8e76b705e3ee7add", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/phase-10.110-feature-inventory.mjs:9"}, "properties": {"repobilityId": "f4993b67a5210321", "scanner": "scanner-primary", "fingerprint": "8e76b705e3ee7add", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f5d877ed0d75b41a", "level": "none", "message": {"text": "Commented-code block (9 lines) in scripts/cp1-row-1.5-finalize.mjs:9"}, "properties": {"repobilityId": "4f23a60e8e29cc93", "scanner": "scanner-primary", "fingerprint": "f5d877ed0d75b41a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bb8b5a6cba584fdc", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/audit-rubric-readiness.mjs:4"}, "properties": {"repobilityId": "aba0802adcbe5399", "scanner": "scanner-primary", "fingerprint": "bb8b5a6cba584fdc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5a9afe0ddf09304c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/orcid-a-plus-plus-plus-test.js:52"}, "properties": {"repobilityId": "5c7764ecf414184c", "scanner": "scanner-primary", "fingerprint": "5a9afe0ddf09304c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c57ad4e4196bfd1b", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/l9-race-leak-drift.mjs:62"}, "properties": {"repobilityId": "425027f5c029942f", "scanner": "scanner-primary", "fingerprint": "c57ad4e4196bfd1b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d622760739ae9798", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/dev-netflix-v2.js:110"}, "properties": {"repobilityId": "72585c5c47377dab", "scanner": "scanner-primary", "fingerprint": "d622760739ae9798", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e1a5318243e83b1", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/check-metrics-series.js:168"}, "properties": {"repobilityId": "9ae6566e5f193f95", "scanner": "scanner-primary", "fingerprint": "2e1a5318243e83b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-63cb8e3e2d243018", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/design-language-lint.js:266"}, "properties": {"repobilityId": "6f54244a38b8e6f5", "scanner": "scanner-primary", "fingerprint": "63cb8e3e2d243018", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b8d82593c62736d9", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/k2-wiring-scaffold.mjs:69"}, "properties": {"repobilityId": "759ebdd8d2f88561", "scanner": "scanner-primary", "fingerprint": "b8d82593c62736d9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fefd4d5fcf5f4360", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/check-search-overclaims.js:106"}, "properties": {"repobilityId": "ec8ee3e218132c0f", "scanner": "scanner-primary", "fingerprint": "fefd4d5fcf5f4360", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-acaafc0afa4b6978", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/check-k3-coverage.mjs:54"}, "properties": {"repobilityId": "307ec8e521afc44a", "scanner": "scanner-primary", "fingerprint": "acaafc0afa4b6978", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4848d6ccc589c0c", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/test-phase-10240-streaming.js:12"}, "properties": {"repobilityId": "edc0e87f483c394c", "scanner": "scanner-primary", "fingerprint": "d4848d6ccc589c0c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9a0e1a7be4a53236", "level": "none", "message": {"text": "Commented-code block (9 lines) in scripts/audit-hook-dependencies.js:58"}, "properties": {"repobilityId": "69d854628fda7f1e", "scanner": "scanner-primary", "fingerprint": "9a0e1a7be4a53236", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3abad6b55f93f9d3", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/k2-inventory-drift.mjs:77"}, "properties": {"repobilityId": "00b0e1537aed5689", "scanner": "scanner-primary", "fingerprint": "3abad6b55f93f9d3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bdba903d1ece42c0", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/l4-ws-contract-map.mjs:103"}, "properties": {"repobilityId": "0f7af80f903cb43c", "scanner": "scanner-primary", "fingerprint": "bdba903d1ece42c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-05ccf93cfb781e6a", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/phase1-tests.mjs:290"}, "properties": {"repobilityId": "147158b25081ea7d", "scanner": "scanner-primary", "fingerprint": "05ccf93cfb781e6a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d45b6041833a976", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/ci/flake-rate.mjs:68"}, "properties": {"repobilityId": "605b968585337656", "scanner": "scanner-primary", "fingerprint": "4d45b6041833a976", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-db3d20bff51292bc", "level": "none", "message": {"text": "Commented-code block (9 lines) in packages/schemas/src/gap.schema.ts:160"}, "properties": {"repobilityId": "4ba994c47c7cace8", "scanner": "scanner-primary", "fingerprint": "db3d20bff51292bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d5423f8f53ef0116", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/test-bm25-relevance-filtering.js:112"}, "properties": {"repobilityId": "b0ad8f48d362e929", "scanner": "scanner-primary", "fingerprint": "d5423f8f53ef0116", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-155243cc89ba4d14", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/stryker.conf.mjs:77"}, "properties": {"repobilityId": "6367c61786c6f432", "scanner": "scanner-primary", "fingerprint": "155243cc89ba4d14", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b7f373159968a22e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/test/integration/pdf-full-flow.integration.spec.ts:188"}, "properties": {"repobilityId": "36e35f7c2571a317", "scanner": "scanner-primary", "fingerprint": "b7f373159968a22e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2cbd01914db5105e", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/test/integration/setup-testcontainers.ts:86"}, "properties": {"repobilityId": "3ab016d1a2be43df", "scanner": "scanner-primary", "fingerprint": "2cbd01914db5105e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c28e11a46838ec12", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/test/performance/ws-search-concurrency.harness.js:147"}, "properties": {"repobilityId": "01a6ed5f6f1156fe", "scanner": "scanner-primary", "fingerprint": "c28e11a46838ec12", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52cf36cd0111f116", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/test/contract/api-consumer.pact.spec.ts:34"}, "properties": {"repobilityId": "b25c9d488104255f", "scanner": "scanner-primary", "fingerprint": "52cf36cd0111f116", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-98e61a56f137d27a", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/test/contract/api-provider.pact.spec.ts:115"}, "properties": {"repobilityId": "b42491179b2c76bf", "scanner": "scanner-primary", "fingerprint": "98e61a56f137d27a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d2dd56bbe3143787", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/test/contract/api-provider.pact.spec.ts:264"}, "properties": {"repobilityId": "532c0f8b324a1fcf", "scanner": "scanner-primary", "fingerprint": "d2dd56bbe3143787", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4bd6047b127fbaee", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/scripts/source-health-check.ts:123"}, "properties": {"repobilityId": "23e6c9daa9ea1002", "scanner": "scanner-primary", "fingerprint": "4bd6047b127fbaee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a6bc17adc6ef684b", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/scripts/citation-enrichment-backfill.ts:142"}, "properties": {"repobilityId": "11c413cf7b786e7f", "scanner": "scanner-primary", "fingerprint": "a6bc17adc6ef684b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4a768f06aea2aa44", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/scripts/pipeline-checkpoint-arxiv.ts:51"}, "properties": {"repobilityId": "2bf5fc293358abb8", "scanner": "scanner-primary", "fingerprint": "4a768f06aea2aa44", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bd42f756d860ad3e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/scripts/add-orcid-publications.ts:179"}, "properties": {"repobilityId": "8281e1591129e90c", "scanner": "scanner-primary", "fingerprint": "bd42f756d860ad3e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f39daecfd375aa13", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/scripts/reset-user-state.ts:119"}, "properties": {"repobilityId": "9febf609b090b7ef", "scanner": "scanner-primary", "fingerprint": "f39daecfd375aa13", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-943f74a636d19433", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/scripts/benchmark-pipeline.ts:279"}, "properties": {"repobilityId": "4d5c63ac8315ecdd", "scanner": "scanner-primary", "fingerprint": "943f74a636d19433", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-71319ed3e9c769dd", "level": "none", "message": {"text": "Commented-code block (11 lines) in backend/scripts/pipeline-validate-all-sources.ts:143"}, "properties": {"repobilityId": "7588bd4263ccf101", "scanner": "scanner-primary", "fingerprint": "71319ed3e9c769dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-33c79bdc505a6d42", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/scripts/check-orcid-user.ts:105"}, "properties": {"repobilityId": "62919cef59016a01", "scanner": "scanner-primary", "fingerprint": "33c79bdc505a6d42", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cbee8dc2e89f9be4", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/scripts/eval/generate-smoke-fixture.ts:416"}, "properties": {"repobilityId": "cb96bc865ac23e14", "scanner": "scanner-primary", "fingerprint": "cbee8dc2e89f9be4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-020baddb76c2331b", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/prisma/seed-km-corpus.ts:91"}, "properties": {"repobilityId": "19ebd39e15d85547", "scanner": "scanner-primary", "fingerprint": "020baddb76c2331b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-39d2a65c028a2d3a", "level": "none", "message": {"text": "Commented-code block (10 lines) in backend/src/main.ts:41"}, "properties": {"repobilityId": "616a47f05fd17225", "scanner": "scanner-primary", "fingerprint": "39d2a65c028a2d3a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-28e2d522588d25d2", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/app.module.ts:8"}, "properties": {"repobilityId": "6107c9fcd995e359", "scanner": "scanner-primary", "fingerprint": "28e2d522588d25d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1328a45396443924", "level": "note", "message": {"text": "Legacy-named symbol `jwtSecretLegacy` in backend/src/config/env.validation.ts:138"}, "properties": {"repobilityId": "d32acec6cce8895b", "scanner": "scanner-primary", "fingerprint": "1328a45396443924", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bfc666b2dd6cd0b1", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/config/env.validation.ts:129"}, "properties": {"repobilityId": "e0fa84d0ffb6eccf", "scanner": "scanner-primary", "fingerprint": "bfc666b2dd6cd0b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-920925ad7bb573e9", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/config/env.schema.ts:113"}, "properties": {"repobilityId": "ed571ca9907bce90", "scanner": "scanner-primary", "fingerprint": "920925ad7bb573e9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d5605abd2f3dc38", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/common/prisma.service.ts:119"}, "properties": {"repobilityId": "cf4c71714eaefd26", "scanner": "scanner-primary", "fingerprint": "8d5605abd2f3dc38", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a4b70af2fd3c07d", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/common/adapters/redis-io.adapter.ts:96"}, "properties": {"repobilityId": "c7c515e07356028c", "scanner": "scanner-primary", "fingerprint": "2a4b70af2fd3c07d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1cdaf365cf02a1d8", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/common/security/csp-report.controller.ts:122"}, "properties": {"repobilityId": "244400f39d283a67", "scanner": "scanner-primary", "fingerprint": "1cdaf365cf02a1d8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f0cd2aeca5ce254", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/common/security/types/authenticated-socket.types.ts:180"}, "properties": {"repobilityId": "45b5064d6fae1cc1", "scanner": "scanner-primary", "fingerprint": "2f0cd2aeca5ce254", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa52f28e8a50bcfe", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/common/security/guards/ws-auth.guard.ts:28"}, "properties": {"repobilityId": "632f8da19b49dd65", "scanner": "scanner-primary", "fingerprint": "fa52f28e8a50bcfe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-88935400a9534724", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/common/security/services/room-authorization.service.ts:147"}, "properties": {"repobilityId": "249313901368720f", "scanner": "scanner-primary", "fingerprint": "88935400a9534724", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e9b7615fcaca6e43", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/common/notifications/notification.gateway.ts:29"}, "properties": {"repobilityId": "2c9b81747a5d52b1", "scanner": "scanner-primary", "fingerprint": "e9b7615fcaca6e43", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-63bbd7acbd8821ce", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/common/notifications/__tests__/notification.gateway.spec.ts:125"}, "properties": {"repobilityId": "a2cffa64c9c88ee5", "scanner": "scanner-primary", "fingerprint": "63bbd7acbd8821ce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-37090b6917a014ec", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/common/monitoring/enhanced-metrics.service.ts:705"}, "properties": {"repobilityId": "9a846657054e50f9", "scanner": "scanner-primary", "fingerprint": "37090b6917a014ec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-940f0477cdb0ab85", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/common/monitoring/realtime-metrics-collector.service.ts:278"}, "properties": {"repobilityId": "13186ab7fbde698c", "scanner": "scanner-primary", "fingerprint": "940f0477cdb0ab85", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-229171e207752f94", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/common/monitoring/metrics.service.ts:59"}, "properties": {"repobilityId": "eba8f240b59f0634", "scanner": "scanner-primary", "fingerprint": "229171e207752f94", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa53701fde1d03f0", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/common/guards/memory-pressure.guard.ts:30"}, "properties": {"repobilityId": "6512dd147721dc1b", "scanner": "scanner-primary", "fingerprint": "fa53701fde1d03f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8f42d96e370f1190", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/common/utils/cgroup-memory.util.ts:165"}, "properties": {"repobilityId": "7174f08542da652c", "scanner": "scanner-primary", "fingerprint": "8f42d96e370f1190", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-61445f7039adcad8", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/common/utils/__tests__/prompt-sanitization.property.spec.ts:98"}, "properties": {"repobilityId": "a9705bfa80a9111e", "scanner": "scanner-primary", "fingerprint": "61445f7039adcad8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc36b5008ee7c514", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/common/redis/redis.service.ts:25"}, "properties": {"repobilityId": "a1c7a57f0b346ec0", "scanner": "scanner-primary", "fingerprint": "bc36b5008ee7c514", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-80ce4886fdde073a", "level": "none", "message": {"text": "Commented-code block (11 lines) in backend/src/common/interceptors/data-sanitization.interceptor.ts:38"}, "properties": {"repobilityId": "5aee2ad12c73ca8c", "scanner": "scanner-primary", "fingerprint": "80ce4886fdde073a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-df6ec7a9357f5b96", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/common/interceptors/idempotency.interceptor.ts:59"}, "properties": {"repobilityId": "aa42e855fd567ba7", "scanner": "scanner-primary", "fingerprint": "df6ec7a9357f5b96", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aa119e5977581ac5", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/common/interceptors/error-budget.interceptor.ts:49"}, "properties": {"repobilityId": "9fdbb62de535c9df", "scanner": "scanner-primary", "fingerprint": "aa119e5977581ac5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-68956186e98cf948", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/common/interceptors/metrics.interceptor.ts:53"}, "properties": {"repobilityId": "0afa44730166db9d", "scanner": "scanner-primary", "fingerprint": "68956186e98cf948", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-49b58cddc78505f5", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/common/interceptors/__tests__/idempotency.interceptor.spec.ts:753"}, "properties": {"repobilityId": "cf1a72a051ae2bfb", "scanner": "scanner-primary", "fingerprint": "49b58cddc78505f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3bccd88031ef0801", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/common/validation/websocket-validation.service.ts:120"}, "properties": {"repobilityId": "0139c40f179c591c", "scanner": "scanner-primary", "fingerprint": "3bccd88031ef0801", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c98760638fd64561", "level": "none", "message": {"text": "Commented-code block (12 lines) in backend/src/common/queue/redis-queue.service.ts:141"}, "properties": {"repobilityId": "61d99aeae2a77132", "scanner": "scanner-primary", "fingerprint": "c98760638fd64561", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7d04bace5c0d75eb", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/common/gateways/base-websocket.gateway.ts:32"}, "properties": {"repobilityId": "1243bc9bceaf2be7", "scanner": "scanner-primary", "fingerprint": "7d04bace5c0d75eb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a7122ca302908b3a", "level": "none", "message": {"text": "Commented-code block (11 lines) in backend/src/common/rate-limiting/throttler-redis-storage.service.ts:78"}, "properties": {"repobilityId": "119029b8187f9f39", "scanner": "scanner-primary", "fingerprint": "a7122ca302908b3a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cee86ec7fbef7a28", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/common/services/http-client-security.service.ts:236"}, "properties": {"repobilityId": "c16c003d3661f1d0", "scanner": "scanner-primary", "fingerprint": "cee86ec7fbef7a28", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f9ddef243380e64d", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/common/services/memory-pressure.service.ts:64"}, "properties": {"repobilityId": "5c6929409bb6471f", "scanner": "scanner-primary", "fingerprint": "f9ddef243380e64d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ffe8ff69651abbf", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/common/services/error-budget.service.ts:72"}, "properties": {"repobilityId": "dba9aeb7403879e4", "scanner": "scanner-primary", "fingerprint": "1ffe8ff69651abbf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1204e28ec625160d", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/common/services/study-deletion.service.ts:126"}, "properties": {"repobilityId": "64e74abf367e9678", "scanner": "scanner-primary", "fingerprint": "1204e28ec625160d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e99133a7ef59dc19", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/common/services/study-access.service.ts:94"}, "properties": {"repobilityId": "094c526434e2b321", "scanner": "scanner-primary", "fingerprint": "e99133a7ef59dc19", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e38c866e57d3e691", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/common/services/connection-manager.service.ts:37"}, "properties": {"repobilityId": "62e9e6898d09c312", "scanner": "scanner-primary", "fingerprint": "e38c866e57d3e691", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f7177afb477bd67", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/common/services/metrics.service.ts:325"}, "properties": {"repobilityId": "d08173ec6be380c2", "scanner": "scanner-primary", "fingerprint": "2f7177afb477bd67", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7cd48e3576075e45", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/common/services/__tests__/study-deletion.service.spec.ts:171"}, "properties": {"repobilityId": "a6264e35c5449a2d", "scanner": "scanner-primary", "fingerprint": "7cd48e3576075e45", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b0bfe65b27a62536", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/common/services/__tests__/http-client-security.service.spec.ts:158"}, "properties": {"repobilityId": "a49560faff76d334", "scanner": "scanner-primary", "fingerprint": "b0bfe65b27a62536", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-adf19b5b070dfb31", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/common/session/session.module.ts:154"}, "properties": {"repobilityId": "45246ffd043fdfc8", "scanner": "scanner-primary", "fingerprint": "adf19b5b070dfb31", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d98edf24bb1eabee", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/common/filters/http-exception.filter.ts:111"}, "properties": {"repobilityId": "9478f5dad4267661", "scanner": "scanner-primary", "fingerprint": "d98edf24bb1eabee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-da2f82ba2952329c", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/test/mocks/service-mocks.ts:217"}, "properties": {"repobilityId": "6cafe50654c72ec9", "scanner": "scanner-primary", "fingerprint": "da2f82ba2952329c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-49962f7cad42497b", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/ai.module.ts:286"}, "properties": {"repobilityId": "686f29aa8a2a4f12", "scanner": "scanner-primary", "fingerprint": "49962f7cad42497b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-046ab3502a17cfa5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/ai/types/dr-onionstein.types.ts:692"}, "properties": {"repobilityId": "5f09454a728d383e", "scanner": "scanner-primary", "fingerprint": "046ab3502a17cfa5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2a2ee98a7b480bca", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/types/research-question.types.ts:79"}, "properties": {"repobilityId": "2d877739f4a6d00f", "scanner": "scanner-primary", "fingerprint": "2a2ee98a7b480bca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-adee0dc1b49b9986", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/ai/dtos/ai-request.dto.ts:19"}, "properties": {"repobilityId": "7e856be70cf072f8", "scanner": "scanner-primary", "fingerprint": "adee0dc1b49b9986", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-076b92acf433e84f", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/constants/product-semantics-registry.ts:124"}, "properties": {"repobilityId": "677810e0314147f2", "scanner": "scanner-primary", "fingerprint": "076b92acf433e84f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5dec07e78705a41f", "level": "none", "message": {"text": "Commented-code block (10 lines) in backend/src/modules/ai/utils/__tests__/compute-logical-next-step.spec.ts:193"}, "properties": {"repobilityId": "9d375a9309aad0a8", "scanner": "scanner-primary", "fingerprint": "5dec07e78705a41f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3afb516901f8e9f7", "level": "none", "message": {"text": "Commented-code block (11 lines) in backend/src/modules/ai/observability/ai-suggestion-metrics.service.ts:146"}, "properties": {"repobilityId": "eb155ce179725914", "scanner": "scanner-primary", "fingerprint": "3afb516901f8e9f7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5247e4f5b98b4de6", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/ai/controllers/research-question.controller.ts:187"}, "properties": {"repobilityId": "1e4343adc595fcb9", "scanner": "scanner-primary", "fingerprint": "5247e4f5b98b4de6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-df87c75b3aa02477", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/controllers/dr-onionstein-eval.controller.ts:31"}, "properties": {"repobilityId": "6f9d3d560b39a8d4", "scanner": "scanner-primary", "fingerprint": "df87c75b3aa02477", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b9d48461fc57fab", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/controllers/query-intelligence.controller.ts:73"}, "properties": {"repobilityId": "272742711375f998", "scanner": "scanner-primary", "fingerprint": "4b9d48461fc57fab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fdb5edb27e2baa5b", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/controllers/ai.controller.ts:803"}, "properties": {"repobilityId": "ad9f265bc4b1a75b", "scanner": "scanner-primary", "fingerprint": "fdb5edb27e2baa5b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-43c0eb981e3fb421", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/controllers/__tests__/query-intelligence.controller.spec.ts:267"}, "properties": {"repobilityId": "20ef5579d0b58d14", "scanner": "scanner-primary", "fingerprint": "43c0eb981e3fb421", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3dd796d03981309", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/ai/services/unified-ai.service.ts:455"}, "properties": {"repobilityId": "92b8fd9eba6d6151", "scanner": "scanner-primary", "fingerprint": "e3dd796d03981309", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fe6d1ec60625dc49", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/services/dr-onionstein-context-serializer.service.ts:171"}, "properties": {"repobilityId": "8243006b53fc3c4d", "scanner": "scanner-primary", "fingerprint": "fe6d1ec60625dc49", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c9185a1d95ca7b92", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/ai/services/dr-onionstein-tool-registry.service.ts:60"}, "properties": {"repobilityId": "c26617912e508599", "scanner": "scanner-primary", "fingerprint": "c9185a1d95ca7b92", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dc363599acb4c5b5", "level": "none", "message": {"text": "Commented-code block (13 lines) in backend/src/modules/ai/services/search-query-expansion.service.ts:736"}, "properties": {"repobilityId": "f1f017afdf25fca1", "scanner": "scanner-primary", "fingerprint": "dc363599acb4c5b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7d71c0138512f76a", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/services/dr-onionstein-study-data.service.ts:233"}, "properties": {"repobilityId": "2498bd604c05b516", "scanner": "scanner-primary", "fingerprint": "7d71c0138512f76a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aca14f0b282f13bc", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/services/dr-onionstein-orchestrator.service.ts:295"}, "properties": {"repobilityId": "614a2b18ef45bab6", "scanner": "scanner-primary", "fingerprint": "aca14f0b282f13bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d10fac30c91c2ea9", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/services/research-question-assistant.service.ts:33"}, "properties": {"repobilityId": "0bb5dfeef5271ea5", "scanner": "scanner-primary", "fingerprint": "d10fac30c91c2ea9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c0507d3c6c6da3d7", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/services/dr-onionstein-paper-recommendations.service.ts:95"}, "properties": {"repobilityId": "fe462a5e80aba130", "scanner": "scanner-primary", "fingerprint": "c0507d3c6c6da3d7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-834f0ecb60b7472d", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/services/suggestion-cache.service.ts:138"}, "properties": {"repobilityId": "0d530dbe531f08ca", "scanner": "scanner-primary", "fingerprint": "834f0ecb60b7472d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0260b58e3a6e5fbe", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/ai/services/dr-onionstein-memory.service.ts:127"}, "properties": {"repobilityId": "6a7ba45b43c709c6", "scanner": "scanner-primary", "fingerprint": "0260b58e3a6e5fbe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bde77e5df22f6e21", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/ai/services/query-expansion.service.ts:55"}, "properties": {"repobilityId": "9708851649494524", "scanner": "scanner-primary", "fingerprint": "bde77e5df22f6e21", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-975abd6c0276d8a9", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/services/__tests__/gap-citation-validator.service.spec.ts:136"}, "properties": {"repobilityId": "07d1da926aff945d", "scanner": "scanner-primary", "fingerprint": "975abd6c0276d8a9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6d45ae5d49bc5b0e", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/services/__tests__/dr-onionstein-tool-registry.service.spec.ts:998"}, "properties": {"repobilityId": "7fc052ae0e3112e6", "scanner": "scanner-primary", "fingerprint": "6d45ae5d49bc5b0e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-79db514494110bb2", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/ai/services/__tests__/research-question-suggestion.prisma.spec.ts:146"}, "properties": {"repobilityId": "66fbf089342a134a", "scanner": "scanner-primary", "fingerprint": "79db514494110bb2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b443ccdca5147d83", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/ai/services/__tests__/dr-onionstein-context-processor.service.spec.ts:563"}, "properties": {"repobilityId": "2fbc059c60b86df9", "scanner": "scanner-primary", "fingerprint": "b443ccdca5147d83", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d67689b76089953a", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/ai/services/providers/base-ai-provider.ts:250"}, "properties": {"repobilityId": "d78aabcd4c583d74", "scanner": "scanner-primary", "fingerprint": "d67689b76089953a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2cf0a17e7ed7bb4e", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/ai/services/providers/groq.provider.ts:141"}, "properties": {"repobilityId": "4ae4353d706d1ce0", "scanner": "scanner-primary", "fingerprint": "2cf0a17e7ed7bb4e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f9f340f9c5fe08b3", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/auth/auth.module.ts:25"}, "properties": {"repobilityId": "8008f13b988fe5c7", "scanner": "scanner-primary", "fingerprint": "f9f340f9c5fe08b3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2cad177b580a0657", "level": "none", "message": {"text": "Commented-code block (10 lines) in backend/src/modules/auth/__tests__/jwt-rotation-wiring.spec.ts:69"}, "properties": {"repobilityId": "76e8143a758a001f", "scanner": "scanner-primary", "fingerprint": "2cad177b580a0657", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c297cea493c5a74d", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/auth/__tests__/jwt-rotation-di.integration.spec.ts:82"}, "properties": {"repobilityId": "7fe20238e2e16ff8", "scanner": "scanner-primary", "fingerprint": "c297cea493c5a74d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4255827e3a83dc93", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/auth/guards/jwt-auth.guard.ts:15"}, "properties": {"repobilityId": "f51d5272bcd563e9", "scanner": "scanner-primary", "fingerprint": "4255827e3a83dc93", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-becda0fe8ca55976", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/auth/controllers/auth.controller.ts:562"}, "properties": {"repobilityId": "5fe70ab2b4b3ad74", "scanner": "scanner-primary", "fingerprint": "becda0fe8ca55976", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b452a720c8a55286", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/auth/services/audit.service.ts:6"}, "properties": {"repobilityId": "7bbb664d476e9267", "scanner": "scanner-primary", "fingerprint": "b452a720c8a55286", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-132d621300ccd1ba", "level": "none", "message": {"text": "Commented-code block (16 lines) in backend/src/modules/auth/services/auth.service.ts:977"}, "properties": {"repobilityId": "d517e6dda01b7562", "scanner": "scanner-primary", "fingerprint": "132d621300ccd1ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52d225821ee0cf15", "level": "none", "message": {"text": "Commented-code block (12 lines) in backend/src/modules/auth/services/jwt-key-rotation.service.spec.ts:87"}, "properties": {"repobilityId": "8a1c7006a4ce6945", "scanner": "scanner-primary", "fingerprint": "52d225821ee0cf15", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b1e3ce3ca375bda", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/auth/services/user-deletion.service.spec.ts:50"}, "properties": {"repobilityId": "7d62a34d9b6506cf", "scanner": "scanner-primary", "fingerprint": "6b1e3ce3ca375bda", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2bcd48eef2abce29", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/auth/services/user-deletion.service.ts:59"}, "properties": {"repobilityId": "767bc0f230a76d95", "scanner": "scanner-primary", "fingerprint": "2bcd48eef2abce29", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-40898eae0f10e629", "level": "none", "message": {"text": "Commented-code block (21 lines) in backend/src/modules/auth/services/audit-retention.service.ts:110"}, "properties": {"repobilityId": "863c2c6f98163e95", "scanner": "scanner-primary", "fingerprint": "40898eae0f10e629", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a38205bd4c8f24a5", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/auth/services/jwt-key-rotation.service.ts:318"}, "properties": {"repobilityId": "bd9fd84124792394", "scanner": "scanner-primary", "fingerprint": "a38205bd4c8f24a5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6e8b3178f1c12fc5", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/auth/strategies/jwt.strategy.ts:191"}, "properties": {"repobilityId": "0f46bdfa01c59d2b", "scanner": "scanner-primary", "fingerprint": "6e8b3178f1c12fc5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4159edf4eff26338", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/health/health.controller.ts:69"}, "properties": {"repobilityId": "82ab4c54c317a9aa", "scanner": "scanner-primary", "fingerprint": "4159edf4eff26338", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7425851efa397944", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/health/health.controller.spec.ts:74"}, "properties": {"repobilityId": "0d6eb7a139747e1a", "scanner": "scanner-primary", "fingerprint": "7425851efa397944", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e09ee4c7608cad12", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/repository/services/research-repository.service.ts:730"}, "properties": {"repobilityId": "1fa763d3b2a2e107", "scanner": "scanner-primary", "fingerprint": "e09ee4c7608cad12", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a18b98c6105818b5", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/study/study.service.spec.ts:146"}, "properties": {"repobilityId": "b208a8b301b27caa", "scanner": "scanner-primary", "fingerprint": "a18b98c6105818b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9af96b8d829def35", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/modules/study/study.service.ts:76"}, "properties": {"repobilityId": "3b468d8a54ac541d", "scanner": "scanner-primary", "fingerprint": "9af96b8d829def35", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b6498c2845c8548", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/study/study.controller.ts:45"}, "properties": {"repobilityId": "d28e0153ceb9b14e", "scanner": "scanner-primary", "fingerprint": "4b6498c2845c8548", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1a515a890538b028", "level": "none", "message": {"text": "Commented-code block (14 lines) in backend/src/modules/literature/literature.gateway.ts:14"}, "properties": {"repobilityId": "2c7cf0f415f3811f", "scanner": "scanner-primary", "fingerprint": "1a515a890538b028", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3c93c48f76cea7c", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/literature.module.ts:170"}, "properties": {"repobilityId": "c3512de864ec5f1c", "scanner": "scanner-primary", "fingerprint": "e3c93c48f76cea7c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3457cbd2195ffbe7", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/literature.service.ts:450"}, "properties": {"repobilityId": "fcdb3daaf9b80bfd", "scanner": "scanner-primary", "fingerprint": "3457cbd2195ffbe7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8c1ea9ed4929dd4", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/__tests__/literature.gateway.spec.ts:203"}, "properties": {"repobilityId": "e2d09a23ce4783dd", "scanner": "scanner-primary", "fingerprint": "c8c1ea9ed4929dd4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-39ff9976ff241237", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/__tests__/knowledge-graph-contract.spec.ts:169"}, "properties": {"repobilityId": "cf66c25b18fd3582", "scanner": "scanner-primary", "fingerprint": "39ff9976ff241237", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7d4d377102ce1d91", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/__tests__/purpose-flow-consistency.spec.ts:220"}, "properties": {"repobilityId": "27e72f639aadb5ce", "scanner": "scanner-primary", "fingerprint": "7d4d377102ce1d91", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2385e8ba191ab301", "level": "none", "message": {"text": "Commented-code block (15 lines) in backend/src/modules/literature/__tests__/literature-module-di.spec.ts:29"}, "properties": {"repobilityId": "e2a35e826f190b08", "scanner": "scanner-primary", "fingerprint": "2385e8ba191ab301", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3a9b085a112568f2", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/__tests__/academic-sources-integration.spec.ts:211"}, "properties": {"repobilityId": "c054e7ef33a4f25a", "scanner": "scanner-primary", "fingerprint": "3a9b085a112568f2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-852ffb1a3712d603", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/__tests__/ws-rest-parity.spec.ts:398"}, "properties": {"repobilityId": "7df7ba2fc903e4e7", "scanner": "scanner-primary", "fingerprint": "852ffb1a3712d603", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-04173241faf5498f", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/__tests__/security/wave12-p1-security-edge-cases.spec.ts:183"}, "properties": {"repobilityId": "00556e7d33b615ca", "scanner": "scanner-primary", "fingerprint": "04173241faf5498f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3353cad37d69cd19", "level": "note", "message": {"text": "Legacy-named symbol `aacods_plus_v1` in backend/src/modules/literature/__tests__/integration/e2e-pipeline.integration.spec.ts:980"}, "properties": {"repobilityId": "2c3d6861d632237d", "scanner": "scanner-primary", "fingerprint": "3353cad37d69cd19", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7369f00fd438242a", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/__tests__/integration/e2e-pipeline.integration.spec.ts:1101"}, "properties": {"repobilityId": "76c5fd570a391679", "scanner": "scanner-primary", "fingerprint": "7369f00fd438242a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb5960e13b86bd2b", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/__tests__/integration/lit-review-to-gaps.integration.spec.ts:1142"}, "properties": {"repobilityId": "5f62f1fa73372944", "scanner": "scanner-primary", "fingerprint": "cb5960e13b86bd2b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-87467ba581532123", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/__tests__/integration/adversarial-pipeline.integration.spec.ts:1226"}, "properties": {"repobilityId": "697e5e5e608ce68c", "scanner": "scanner-primary", "fingerprint": "87467ba581532123", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb8a90882c6484f1", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/__tests__/integration/km-observability.integration.spec.ts:400"}, "properties": {"repobilityId": "6866aab370777fe7", "scanner": "scanner-primary", "fingerprint": "eb8a90882c6484f1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-258ef8443f1e844d", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/__tests__/integration/km-chaos.integration.spec.ts:61"}, "properties": {"repobilityId": "a90423345555c4e3", "scanner": "scanner-primary", "fingerprint": "258ef8443f1e844d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-952648b251422ca7", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/__tests__/integration/fulltext-processing-gaps.integration.spec.ts:583"}, "properties": {"repobilityId": "7201473e06f62d87", "scanner": "scanner-primary", "fingerprint": "952648b251422ca7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1fe7ae03e7fb1685", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/types/unified-theme-extraction.types.ts:721"}, "properties": {"repobilityId": "0815846ca17b04e2", "scanner": "scanner-primary", "fingerprint": "1fe7ae03e7fb1685", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d938e42cb79f0598", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/types/gap-validation.types.ts:18"}, "properties": {"repobilityId": "eb4f8b0ea7e6ef30", "scanner": "scanner-primary", "fingerprint": "d938e42cb79f0598", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c3cf863ae21dc80", "level": "note", "message": {"text": "Legacy-named symbol `aacods_plus_v1` in backend/src/modules/literature/types/unified-evidence.types.ts:106"}, "properties": {"repobilityId": "d7aa6d2bd049dd5c", "scanner": "scanner-primary", "fingerprint": "6c3cf863ae21dc80", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7a41497c37372d91", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/types/theme-extraction.types.ts:156"}, "properties": {"repobilityId": "6806ecdf6974b197", "scanner": "scanner-primary", "fingerprint": "7a41497c37372d91", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-01604d136209b2c0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/types/purpose-aware.types.ts:149"}, "properties": {"repobilityId": "192e7443a77f3c96", "scanner": "scanner-primary", "fingerprint": "01604d136209b2c0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-453ed172f3adb61b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/benchmarks/cache-performance.benchmark.ts:116"}, "properties": {"repobilityId": "63a8a9a2450e5349", "scanner": "scanner-primary", "fingerprint": "453ed172f3adb61b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fa9df5c4494a9387", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/evaluation/import-synergy-gold-set.ts:62"}, "properties": {"repobilityId": "d87093cce4a25902", "scanner": "scanner-primary", "fingerprint": "fa9df5c4494a9387", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-67a7fa4bac7c137c", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/evaluation/run-retrieval-eval.ts:38"}, "properties": {"repobilityId": "f2b6af0d9579605f", "scanner": "scanner-primary", "fingerprint": "67a7fa4bac7c137c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0440b7409fb24053", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/constants/source-allocation.constants.ts:212"}, "properties": {"repobilityId": "01136f14bdb9ef2d", "scanner": "scanner-primary", "fingerprint": "0440b7409fb24053", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cde93d3b6d9ad150", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/constants/embedding-model.constants.ts:81"}, "properties": {"repobilityId": "8c86f9e2c4b12eb7", "scanner": "scanner-primary", "fingerprint": "cde93d3b6d9ad150", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b06bd14a666f75e8", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/constants/__tests__/embedding-model.constants.spec.ts:102"}, "properties": {"repobilityId": "0b72d1e2e206566d", "scanner": "scanner-primary", "fingerprint": "b06bd14a666f75e8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2cedb5b4b632eceb", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/dto/literature.dto.ts:342"}, "properties": {"repobilityId": "cf1615bbdc2f781a", "scanner": "scanner-primary", "fingerprint": "2cedb5b4b632eceb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4ff2fb48befba9c2", "level": "none", "message": {"text": "Commented-code block (11 lines) in backend/src/modules/literature/dto/enrich-gaps.dto.ts:46"}, "properties": {"repobilityId": "6f120458279756a0", "scanner": "scanner-primary", "fingerprint": "4ff2fb48befba9c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b35fb0e4bb89411c", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/dto/import.dto.ts:64"}, "properties": {"repobilityId": "e1205d8840bf9713", "scanner": "scanner-primary", "fingerprint": "b35fb0e4bb89411c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a87cf2bdb5ac2c82", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/dto/common-literature.dto.ts:613"}, "properties": {"repobilityId": "a0bc2a846ad6d98e", "scanner": "scanner-primary", "fingerprint": "a87cf2bdb5ac2c82", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c268498bee31a5e", "level": "none", "message": {"text": "Commented-code block (19 lines) in backend/src/modules/literature/dto/gap-brief.dto.ts:61"}, "properties": {"repobilityId": "0dd324fab7637527", "scanner": "scanner-primary", "fingerprint": "7c268498bee31a5e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-44c627837959e476", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/dto/persist-transformed-gaps.dto.ts:24"}, "properties": {"repobilityId": "7f3ca2865e610761", "scanner": "scanner-primary", "fingerprint": "44c627837959e476", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d13dd6f161bb64f9", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/dto/validate-gaps.dto.ts:40"}, "properties": {"repobilityId": "d9537661b391b3b4", "scanner": "scanner-primary", "fingerprint": "d13dd6f161bb64f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0604d1217c76c5b3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/dto/search-stream.dto.ts:47"}, "properties": {"repobilityId": "5c9a0759e576cead", "scanner": "scanner-primary", "fingerprint": "0604d1217c76c5b3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f33b221c5079c7b1", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/utils/relevance-floor.util.ts:96"}, "properties": {"repobilityId": "6927a98f0ec6740b", "scanner": "scanner-primary", "fingerprint": "f33b221c5079c7b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b2537847dbf45b7", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/utils/text-normalization.util.ts:114"}, "properties": {"repobilityId": "19247713ba2e1424", "scanner": "scanner-primary", "fingerprint": "4b2537847dbf45b7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8c1684eff16d8b80", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/utils/paper-identity.util.ts:40"}, "properties": {"repobilityId": "b3f19138be2762ad", "scanner": "scanner-primary", "fingerprint": "8c1684eff16d8b80", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b3bfd91528626348", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/utils/degradation-warnings.util.ts:79"}, "properties": {"repobilityId": "0aa56df0b35a96db", "scanner": "scanner-primary", "fingerprint": "b3bfd91528626348", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f75558ba8ee327b7", "level": "none", "message": {"text": "Commented-code block (10 lines) in backend/src/modules/literature/utils/public-attention.util.ts:158"}, "properties": {"repobilityId": "edcf7d4906a63fe2", "scanner": "scanner-primary", "fingerprint": "f75558ba8ee327b7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-61fec766a3499ccf", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/utils/retraction-watch-csv.util.ts:396"}, "properties": {"repobilityId": "f342d2c201b929ad", "scanner": "scanner-primary", "fingerprint": "61fec766a3499ccf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bfd3c2963fc775b2", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/utils/reproducibility-artifact.util.ts:98"}, "properties": {"repobilityId": "93d2f63c086dc503", "scanner": "scanner-primary", "fingerprint": "bfd3c2963fc775b2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-39f9233556ad37b3", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/utils/paper-quality.util.ts:64"}, "properties": {"repobilityId": "db1fabcbed824a56", "scanner": "scanner-primary", "fingerprint": "39f9233556ad37b3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-50c3efff86a43435", "level": "none", "message": {"text": "Commented-code block (10 lines) in backend/src/modules/literature/utils/build-error-classifier.ts:153"}, "properties": {"repobilityId": "93761efaeacd1680", "scanner": "scanner-primary", "fingerprint": "50c3efff86a43435", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5319901427956a20", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/utils/truncation-summary.util.ts:144"}, "properties": {"repobilityId": "8ad6f12fdbb286fc", "scanner": "scanner-primary", "fingerprint": "5319901427956a20", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-def9a253946e7791", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/utils/paper-document-type.util.ts:190"}, "properties": {"repobilityId": "d2e71233a1cbad38", "scanner": "scanner-primary", "fingerprint": "def9a253946e7791", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d2f8fc6145df2eb", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/utils/paper-merge.util.ts:182"}, "properties": {"repobilityId": "c139bc368504bdb1", "scanner": "scanner-primary", "fingerprint": "0d2f8fc6145df2eb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-77742ea08a04fded", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/utils/disposition-ledger.util.ts:272"}, "properties": {"repobilityId": "eaf9a6fd8a3ba23e", "scanner": "scanner-primary", "fingerprint": "77742ea08a04fded", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-51056f8f904a69b1", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/utils/relevance-scoring.util.ts:52"}, "properties": {"repobilityId": "78ee53775658bac0", "scanner": "scanner-primary", "fingerprint": "51056f8f904a69b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-89bcbd20a1aab5a0", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/utils/__tests__/result-cache.util.spec.ts:76"}, "properties": {"repobilityId": "0d5854deee1a9f10", "scanner": "scanner-primary", "fingerprint": "89bcbd20a1aab5a0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4656b596508b8967", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/utils/__tests__/reproducibility-artifact.util.spec.ts:379"}, "properties": {"repobilityId": "847f1f4b021b35fd", "scanner": "scanner-primary", "fingerprint": "4656b596508b8967", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0c14636c3b23451b", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/utils/__tests__/vector-math.utils.spec.ts:71"}, "properties": {"repobilityId": "af1d3f67abe97ca2", "scanner": "scanner-primary", "fingerprint": "0c14636c3b23451b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ab128e2955a2209e", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/utils/__tests__/fulltext-availability.util.spec.ts:510"}, "properties": {"repobilityId": "d1b598bdbba297b3", "scanner": "scanner-primary", "fingerprint": "ab128e2955a2209e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53a12883c0777b34", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/utils/__tests__/doi-normalization-sql-parity.spec.ts:117"}, "properties": {"repobilityId": "11d4175e15850555", "scanner": "scanner-primary", "fingerprint": "53a12883c0777b34", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2952226cfefc6734", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/utils/__tests__/build-error-classifier.spec.ts:237"}, "properties": {"repobilityId": "ebaa20d82f80e097", "scanner": "scanner-primary", "fingerprint": "2952226cfefc6734", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2185d40e0051e1ee", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/utils/__tests__/text-normalization.util.spec.ts:45"}, "properties": {"repobilityId": "05263b29bc3a637c", "scanner": "scanner-primary", "fingerprint": "2185d40e0051e1ee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8cc55ea7e6731d44", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/observability/search-quality-metrics.service.ts:96"}, "properties": {"repobilityId": "07060f9bea69c8e1", "scanner": "scanner-primary", "fingerprint": "8cc55ea7e6731d44", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d0c5e3d0f9bc839a", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/observability/search-source-metrics.service.ts:79"}, "properties": {"repobilityId": "b27d3a4ac877c4be", "scanner": "scanner-primary", "fingerprint": "d0c5e3d0f9bc839a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c6b7f1b629a52bf3", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/observability/fe-metrics.controller.ts:72"}, "properties": {"repobilityId": "9343d99af34bf5b0", "scanner": "scanner-primary", "fingerprint": "c6b7f1b629a52bf3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a20a6790eec2b1b1", "level": "none", "message": {"text": "Commented-code block (10 lines) in backend/src/modules/literature/observability/km-metrics.service.ts:161"}, "properties": {"repobilityId": "3992da03778ba7a2", "scanner": "scanner-primary", "fingerprint": "a20a6790eec2b1b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3999937389304ce3", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/workers/embedding-microservice.ts:101"}, "properties": {"repobilityId": "ae9d8ca4bf411084", "scanner": "scanner-primary", "fingerprint": "3999937389304ce3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7e3272c3d8fe2eac", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/workers/cross-encoder.worker.ts:27"}, "properties": {"repobilityId": "e724d2c4ac51599a", "scanner": "scanner-primary", "fingerprint": "7e3272c3d8fe2eac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4dd89023f35435f7", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/modules/fulltext.module.ts:22"}, "properties": {"repobilityId": "e1d4520b7fba9674", "scanner": "scanner-primary", "fingerprint": "4dd89023f35435f7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9fab50001a2f3c94", "level": "none", "message": {"text": "Commented-code block (10 lines) in backend/src/modules/literature/controllers/gap-structural.controller.ts:127"}, "properties": {"repobilityId": "66c9d2693d9b3b1e", "scanner": "scanner-primary", "fingerprint": "9fab50001a2f3c94", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a89c21f6f78e870", "level": "none", "message": {"text": "Commented-code block (10 lines) in backend/src/modules/literature/controllers/gap-watchlist.controller.ts:126"}, "properties": {"repobilityId": "0ee4e9ebf66c6c61", "scanner": "scanner-primary", "fingerprint": "2a89c21f6f78e870", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-691ac89c795c303e", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/gap-analyze-writes.controller.ts:94"}, "properties": {"repobilityId": "1ef6655984267320", "scanner": "scanner-primary", "fingerprint": "691ac89c795c303e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d5c51614ffc254f1", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/controllers/bibliometric-report.controller.ts:372"}, "properties": {"repobilityId": "ccc32561520ec07b", "scanner": "scanner-primary", "fingerprint": "d5c51614ffc254f1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b3323945c63c657d", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/controllers/gap-predictive.controller.ts:70"}, "properties": {"repobilityId": "06c60020912e5dca", "scanner": "scanner-primary", "fingerprint": "b3323945c63c657d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-49a47297ff70fed4", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/knowledge-graph-layout.controller.ts:60"}, "properties": {"repobilityId": "6156096c32a2c48c", "scanner": "scanner-primary", "fingerprint": "49a47297ff70fed4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bebb72185ff8cea6", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/paper-health.controller.ts:62"}, "properties": {"repobilityId": "fdbaac26661ab9ea", "scanner": "scanner-primary", "fingerprint": "bebb72185ff8cea6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d1d352ed21191823", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/paper-library.controller.ts:46"}, "properties": {"repobilityId": "0dab5376cd9a6996", "scanner": "scanner-primary", "fingerprint": "d1d352ed21191823", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9ced909de0b329a5", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/search-artifact.controller.ts:295"}, "properties": {"repobilityId": "37a08fae12a5944d", "scanner": "scanner-primary", "fingerprint": "9ced909de0b329a5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ea1248f23c6aad73", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/km-share.controller.ts:242"}, "properties": {"repobilityId": "a00a11f46b89f52d", "scanner": "scanner-primary", "fingerprint": "ea1248f23c6aad73", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-407263f8a45f1947", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/gap-diagnostics.controller.ts:190"}, "properties": {"repobilityId": "f983daf3f3c16424", "scanner": "scanner-primary", "fingerprint": "407263f8a45f1947", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa425b012dd67eb8", "level": "none", "message": {"text": "Commented-code block (10 lines) in backend/src/modules/literature/controllers/admin.controller.ts:159"}, "properties": {"repobilityId": "d948e7b64a3003ff", "scanner": "scanner-primary", "fingerprint": "fa425b012dd67eb8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-08ac4925b675ee6c", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/unified-evidence.controller.ts:111"}, "properties": {"repobilityId": "326e91740d0c367d", "scanner": "scanner-primary", "fingerprint": "08ac4925b675ee6c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c50c09613274bef8", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/controllers/pipeline-session.controller.ts:38"}, "properties": {"repobilityId": "aff3620a6e7f47b5", "scanner": "scanner-primary", "fingerprint": "c50c09613274bef8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a36654a6e7260fa", "level": "none", "message": {"text": "Commented-code block (10 lines) in backend/src/modules/literature/controllers/gap-decisions.controller.ts:65"}, "properties": {"repobilityId": "d9062cbda5510c7a", "scanner": "scanner-primary", "fingerprint": "2a36654a6e7260fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e98373369e5a53f6", "level": "note", "message": {"text": "Legacy-named symbol `isLegacy` in backend/src/modules/literature/controllers/corpus-snapshot.controller.ts:1233"}, "properties": {"repobilityId": "ba5c04384fb77d64", "scanner": "scanner-primary", "fingerprint": "e98373369e5a53f6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bf70ec3ff24d2a82", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/controllers/corpus-snapshot.controller.ts:90"}, "properties": {"repobilityId": "dfd195f20caeee68", "scanner": "scanner-primary", "fingerprint": "bf70ec3ff24d2a82", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-15433d6b49d350b8", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/gap-study-reads.controller.ts:74"}, "properties": {"repobilityId": "140dcc7070b6c058", "scanner": "scanner-primary", "fingerprint": "15433d6b49d350b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-43caac364bd62817", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/controllers/knowledge-graph.controller.ts:62"}, "properties": {"repobilityId": "2165068718508625", "scanner": "scanner-primary", "fingerprint": "43caac364bd62817", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a59779d61f241b61", "level": "none", "message": {"text": "Commented-code block (11 lines) in backend/src/modules/literature/controllers/gap-review.controller.ts:83"}, "properties": {"repobilityId": "8e20ef09addb5e2d", "scanner": "scanner-primary", "fingerprint": "a59779d61f241b61", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-05e37342f368b58f", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/statement-generation.controller.ts:322"}, "properties": {"repobilityId": "4fa415c9c95de7f0", "scanner": "scanner-primary", "fingerprint": "05e37342f368b58f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d288c389a55bb57", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/theme-extraction-advanced.controller.ts:1981"}, "properties": {"repobilityId": "7df1b896c3f0a736", "scanner": "scanner-primary", "fingerprint": "5d288c389a55bb57", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-91ea05acc47ac4ac", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/gap-iterative-loop.controller.ts:371"}, "properties": {"repobilityId": "6c7e450d11f5aa20", "scanner": "scanner-primary", "fingerprint": "91ea05acc47ac4ac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ffb9924d39e04d92", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/citation.controller.ts:112"}, "properties": {"repobilityId": "c38624d5382dd803", "scanner": "scanner-primary", "fingerprint": "ffb9924d39e04d92", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-64ea78279f3b6297", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/collaboration.controller.ts:64"}, "properties": {"repobilityId": "6a475b150d4e5f73", "scanner": "scanner-primary", "fingerprint": "64ea78279f3b6297", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a7af412aab99a06f", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/fulltext.controller.ts:274"}, "properties": {"repobilityId": "360b68af3e78bca6", "scanner": "scanner-primary", "fingerprint": "a7af412aab99a06f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1af5966bcafae0a2", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/gap-export.controller.ts:99"}, "properties": {"repobilityId": "531f1cf0d7912b61", "scanner": "scanner-primary", "fingerprint": "1af5966bcafae0a2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ee1aa26852e5d7a", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/gap-annotations.controller.ts:97"}, "properties": {"repobilityId": "a3b03cf6aa81cb7c", "scanner": "scanner-primary", "fingerprint": "1ee1aa26852e5d7a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-820399b118df5745", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/controllers/prisma.controller.ts:69"}, "properties": {"repobilityId": "f5cdc29bd68a0748", "scanner": "scanner-primary", "fingerprint": "820399b118df5745", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-27dde0e450f2e7ea", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/controllers/__tests__/gap-study-reads.controller.spec.ts:279"}, "properties": {"repobilityId": "2d1c4cbac1190342", "scanner": "scanner-primary", "fingerprint": "27dde0e450f2e7ea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0bc178f32eddbbe6", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/controllers/__tests__/gap-watchlist.controller.spec.ts:89"}, "properties": {"repobilityId": "57ff709c0a90b167", "scanner": "scanner-primary", "fingerprint": "0bc178f32eddbbe6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ded46fe9f9659d94", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/__tests__/theme-hierarchy.spec.ts:101"}, "properties": {"repobilityId": "1df6965dc945675d", "scanner": "scanner-primary", "fingerprint": "ded46fe9f9659d94", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-050519430fed83ae", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/controllers/__tests__/gap-discovery-helpers.controller.spec.ts:39"}, "properties": {"repobilityId": "4b50deeb2bb246fc", "scanner": "scanner-primary", "fingerprint": "050519430fed83ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a43c7d4ed9c7b01", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/controllers/__tests__/gap-discovery-helpers.controller.spec.ts:176"}, "properties": {"repobilityId": "de022a8985ff3362", "scanner": "scanner-primary", "fingerprint": "6a43c7d4ed9c7b01", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8911a165d90ac05d", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/__tests__/knowledge-graph.controller.spec.ts:17"}, "properties": {"repobilityId": "d5e8d74055ec8b63", "scanner": "scanner-primary", "fingerprint": "8911a165d90ac05d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-596b900e996b13e5", "level": "note", "message": {"text": "Legacy-named symbol `isLegacy` in backend/src/modules/literature/controllers/__tests__/corpus-snapshot.controller.spec.ts:157"}, "properties": {"repobilityId": "074d32dc24069f80", "scanner": "scanner-primary", "fingerprint": "596b900e996b13e5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3bb0b4c88af26dcf", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/__tests__/corpus-snapshot.controller.spec.ts:25"}, "properties": {"repobilityId": "fe0ccc13dad14e6d", "scanner": "scanner-primary", "fingerprint": "3bb0b4c88af26dcf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-953632bd20044277", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/controllers/__tests__/gap-export.controller.spec.ts:115"}, "properties": {"repobilityId": "582e516b23dac2c7", "scanner": "scanner-primary", "fingerprint": "953632bd20044277", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e50d10f2fb5a669e", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/controllers/__tests__/gap-structural.controller.spec.ts:341"}, "properties": {"repobilityId": "ebc5fcfc3fd2e555", "scanner": "scanner-primary", "fingerprint": "e50d10f2fb5a669e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-16e0d3730cbe65c8", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/__tests__/gap-decisions.controller.spec.ts:51"}, "properties": {"repobilityId": "5fea9609f5b2871b", "scanner": "scanner-primary", "fingerprint": "16e0d3730cbe65c8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76839a8546aa04b7", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/controllers/__tests__/gap-analyze-writes.controller.spec.ts:188"}, "properties": {"repobilityId": "7a94848ada367aa0", "scanner": "scanner-primary", "fingerprint": "76839a8546aa04b7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c95dd7f0ea5b610c", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/controllers/__tests__/bibliometric-report.controller.spec.ts:38"}, "properties": {"repobilityId": "d3afac5977d0e3a5", "scanner": "scanner-primary", "fingerprint": "c95dd7f0ea5b610c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-71609cdb6e5ece52", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/eval/offline/eval-regression.spec.ts:93"}, "properties": {"repobilityId": "18a8e70cff320018", "scanner": "scanner-primary", "fingerprint": "71609cdb6e5ece52", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e14b430b659a5f6", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/eval/offline/offline-ranker.harness.ts:112"}, "properties": {"repobilityId": "abf81d2746e0c738", "scanner": "scanner-primary", "fingerprint": "2e14b430b659a5f6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e5929aeb4b8e2a1", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/eval/metrics/ir-metrics.util.spec.ts:28"}, "properties": {"repobilityId": "abf93285cf69c44a", "scanner": "scanner-primary", "fingerprint": "3e5929aeb4b8e2a1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dcab6b81cfb71afa", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/gateways/theme-extraction.gateway.ts:591"}, "properties": {"repobilityId": "7c6e6382948c9b6c", "scanner": "scanner-primary", "fingerprint": "dcab6b81cfb71afa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d4beaafffbbdc1b", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/gateways/screening-workflow.gateway.ts:25"}, "properties": {"repobilityId": "aed67a3ad49dedaf", "scanner": "scanner-primary", "fingerprint": "5d4beaafffbbdc1b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2652a1437db2270f", "level": "none", "message": {"text": "Commented-code block (16 lines) in backend/src/modules/literature/gateways/knowledge-graph-layout.gateway.ts:210"}, "properties": {"repobilityId": "3056b036097b374a", "scanner": "scanner-primary", "fingerprint": "2652a1437db2270f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b3b6b650a804cac0", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/gateways/gap-refinement.gateway.ts:184"}, "properties": {"repobilityId": "d51c4b6a7675c3a7", "scanner": "scanner-primary", "fingerprint": "b3b6b650a804cac0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-98c13d283aa11ee5", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/gateways/__tests__/gap-refinement.gateway.resync.spec.ts:434"}, "properties": {"repobilityId": "21247271f8d0beca", "scanner": "scanner-primary", "fingerprint": "98c13d283aa11ee5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-21b23d32ee4a2db4", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/gateways/__tests__/knowledge-graph-layout.gateway.spec.ts:160"}, "properties": {"repobilityId": "568d8bf7d91beee6", "scanner": "scanner-primary", "fingerprint": "21b23d32ee4a2db4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-292a5319dac7b598", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/services/screening-workflow.service.ts:1194"}, "properties": {"repobilityId": "39ced60fe0ba2f80", "scanner": "scanner-primary", "fingerprint": "292a5319dac7b598", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9e57c9f9f094bc3a", "level": "none", "message": {"text": "Commented-code block (11 lines) in backend/src/modules/literature/services/search-result-cache.service.ts:148"}, "properties": {"repobilityId": "f28483c041359283", "scanner": "scanner-primary", "fingerprint": "9e57c9f9f094bc3a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f139d60bb15452b5", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/host-rate-limiter.service.ts:228"}, "properties": {"repobilityId": "a764c313666332e8", "scanner": "scanner-primary", "fingerprint": "f139d60bb15452b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-722923e8dc0b711d", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/gap-narrative.service.ts:20"}, "properties": {"repobilityId": "1fa49cbdda7a71a9", "scanner": "scanner-primary", "fingerprint": "722923e8dc0b711d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-07ebf1fd94bbf6a8", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/osf.service.ts:79"}, "properties": {"repobilityId": "6f48666b318b5644", "scanner": "scanner-primary", "fingerprint": "07ebf1fd94bbf6a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-df63a170989850e6", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/citation-enrichment-statement.ts:252"}, "properties": {"repobilityId": "dc70d5248b365b8a", "scanner": "scanner-primary", "fingerprint": "df63a170989850e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f7f3ecef6c0d6f43", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/http-client-config.service.ts:113"}, "properties": {"repobilityId": "0c55587dc323567e", "scanner": "scanner-primary", "fingerprint": "f7f3ecef6c0d6f43", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-09514837c2911f44", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/unified-theme-extraction.service.ts:157"}, "properties": {"repobilityId": "3dc7a4d3120af72d", "scanner": "scanner-primary", "fingerprint": "09514837c2911f44", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bdefeab227fe68c5", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/source-capability.service.ts:377"}, "properties": {"repobilityId": "df749f02e3b47072", "scanner": "scanner-primary", "fingerprint": "bdefeab227fe68c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-af7e2e8fbb615c92", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/services/source-capability.service.ts:94"}, "properties": {"repobilityId": "b65c837b9b7d7e71", "scanner": "scanner-primary", "fingerprint": "af7e2e8fbb615c92", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-928465e3ece8077a", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/survey-construction-pipeline.service.ts:570"}, "properties": {"repobilityId": "5f76eeb6f837db5f", "scanner": "scanner-primary", "fingerprint": "928465e3ece8077a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c2fac6940f69b8ad", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/services/retraction-watch-sync.service.ts:234"}, "properties": {"repobilityId": "d9a75abd0d86df46", "scanner": "scanner-primary", "fingerprint": "c2fac6940f69b8ad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9a63366a07bfea1a", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/openalex.service.ts:197"}, "properties": {"repobilityId": "61e3a4a53e80ee3e", "scanner": "scanner-primary", "fingerprint": "9a63366a07bfea1a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85db86f1b4877913", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/gap-cache-key.util.ts:49"}, "properties": {"repobilityId": "778bc5b66550567e", "scanner": "scanner-primary", "fingerprint": "85db86f1b4877913", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-73232b316b05e74e", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/km-corpus-prep.service.ts:141"}, "properties": {"repobilityId": "12987d6854ef0dd9", "scanner": "scanner-primary", "fingerprint": "73232b316b05e74e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-04a6537248115821", "level": "note", "message": {"text": "Legacy-named symbol `yearsOld` in backend/src/modules/literature/services/universal-citation-enrichment.service.ts:1579"}, "properties": {"repobilityId": "d26dcf23e9bd5ecb", "scanner": "scanner-primary", "fingerprint": "04a6537248115821", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d8d129491a87c682", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/universal-citation-enrichment.service.ts:192"}, "properties": {"repobilityId": "5f3ce13c72b42135", "scanner": "scanner-primary", "fingerprint": "d8d129491a87c682", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-15ac2bff85565d14", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/gap-persistence.service.ts:270"}, "properties": {"repobilityId": "9c3657783abfdef2", "scanner": "scanner-primary", "fingerprint": "15ac2bff85565d14", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85b9237c2d04e66e", "level": "note", "message": {"text": "Legacy-named symbol `extractThemesLegacy` in backend/src/modules/literature/services/multimedia-analysis.service.ts:77"}, "properties": {"repobilityId": "e1caeddd26e48501", "scanner": "scanner-primary", "fingerprint": "85b9237c2d04e66e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f846c97548805870", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/enhanced-theme-integration.service.ts:636"}, "properties": {"repobilityId": "3738ccd3a9f5c6a1", "scanner": "scanner-primary", "fingerprint": "f846c97548805870", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d83a41e70ad014c6", "level": "none", "message": {"text": "Commented-code block (11 lines) in backend/src/modules/literature/services/paper-collection.service.ts:257"}, "properties": {"repobilityId": "edd5328a2496fc4d", "scanner": "scanner-primary", "fingerprint": "d83a41e70ad014c6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d2c6479971fac99a", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/paper-quality-scoring.service.ts:212"}, "properties": {"repobilityId": "85f8e476772248a4", "scanner": "scanner-primary", "fingerprint": "d2c6479971fac99a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d8725fe4b61b0275", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/neural-relevance.service.ts:315"}, "properties": {"repobilityId": "5461a266eb6c742d", "scanner": "scanner-primary", "fingerprint": "d8725fe4b61b0275", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b82da1fee30b5fc7", "level": "none", "message": {"text": "Commented-code block (11 lines) in backend/src/modules/literature/services/predictive-gap.service.ts:581"}, "properties": {"repobilityId": "f0c1e53c4fcd67b4", "scanner": "scanner-primary", "fingerprint": "b82da1fee30b5fc7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-80cf29304708aefd", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/semantic-query-expansion.service.ts:383"}, "properties": {"repobilityId": "d198ba4a2990885b", "scanner": "scanner-primary", "fingerprint": "80cf29304708aefd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e3fe6af6e5f6e65", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/cross-encoder-reranker.service.ts:133"}, "properties": {"repobilityId": "9d17e6df9de2d184", "scanner": "scanner-primary", "fingerprint": "2e3fe6af6e5f6e65", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9b27100244595ef6", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/pmc.service.ts:206"}, "properties": {"repobilityId": "7379f56b2c32dd90", "scanner": "scanner-primary", "fingerprint": "9b27100244595ef6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-baaa5d217ef708d5", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/confidence-calibration.service.ts:114"}, "properties": {"repobilityId": "4501f415d53c0a39", "scanner": "scanner-primary", "fingerprint": "baaa5d217ef708d5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd77ab3df6188e0d", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/api-quota-monitor.service.ts:500"}, "properties": {"repobilityId": "c8bd2ba2f8b1ea2f", "scanner": "scanner-primary", "fingerprint": "fd77ab3df6188e0d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30cfee6c1f67eebc", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/services/openaire.service.ts:106"}, "properties": {"repobilityId": "1d037ee91f65d4a6", "scanner": "scanner-primary", "fingerprint": "30cfee6c1f67eebc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b79dd1dc1e63d3e", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-provenance.service.ts:81"}, "properties": {"repobilityId": "edfa14cf24854b48", "scanner": "scanner-primary", "fingerprint": "8b79dd1dc1e63d3e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7e0a0642cbfdb058", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/paper-collection.service.spec.ts:343"}, "properties": {"repobilityId": "7daba8dc1150205b", "scanner": "scanner-primary", "fingerprint": "7e0a0642cbfdb058", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-10d40c4534477084", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/retraction-monitor.service.ts:72"}, "properties": {"repobilityId": "3fce0a51abff3727", "scanner": "scanner-primary", "fingerprint": "10d40c4534477084", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f6eea01e51e84e76", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/openalex-enrichment.service.ts:97"}, "properties": {"repobilityId": "cae8133f58c05017", "scanner": "scanner-primary", "fingerprint": "f6eea01e51e84e76", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a94475087ffce976", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/grobid-extraction.service.ts:38"}, "properties": {"repobilityId": "69e9101a4c4f21c3", "scanner": "scanner-primary", "fingerprint": "a94475087ffce976", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1fd03fa80478797d", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/services/pdf-parse-pool.service.ts:255"}, "properties": {"repobilityId": "8bd16688556b5c40", "scanner": "scanner-primary", "fingerprint": "1fd03fa80478797d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9cfaa27a86fd16a3", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/services/theme-to-statement.service.ts:455"}, "properties": {"repobilityId": "62a4f9fb77035e2f", "scanner": "scanner-primary", "fingerprint": "9cfaa27a86fd16a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d4e220005278b70", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/services/source-content-fetcher.service.ts:80"}, "properties": {"repobilityId": "05c8a79cdcd49af5", "scanner": "scanner-primary", "fingerprint": "8d4e220005278b70", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-474111ab1ff26976", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/sentence-provenance.service.ts:182"}, "properties": {"repobilityId": "ed3740f0d8b709b4", "scanner": "scanner-primary", "fingerprint": "474111ab1ff26976", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-725e71ad2c5b5030", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/evidence-table.service.ts:231"}, "properties": {"repobilityId": "0f2a7edb42b3cd1d", "scanner": "scanner-primary", "fingerprint": "725e71ad2c5b5030", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-421df01cfe3b17ff", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/source-performance-tracking.service.ts:202"}, "properties": {"repobilityId": "1ee949054b8d2825", "scanner": "scanner-primary", "fingerprint": "421df01cfe3b17ff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ab0c7b5d2c80092d", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/source-credential-map.ts:86"}, "properties": {"repobilityId": "36accdd6730f4efd", "scanner": "scanner-primary", "fingerprint": "ab0c7b5d2c80092d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-265e80bde2bdda35", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/scopus.service.ts:238"}, "properties": {"repobilityId": "08af4abf5815e8fb", "scanner": "scanner-primary", "fingerprint": "265e80bde2bdda35", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bd03c780db434e2d", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/reinforcement-threshold.service.ts:417"}, "properties": {"repobilityId": "0e3a5c96add3d31e", "scanner": "scanner-primary", "fingerprint": "bd03c780db434e2d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0e77a403e18daf4f", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-database.service.ts:31"}, "properties": {"repobilityId": "95a90475d63526db", "scanner": "scanner-primary", "fingerprint": "0e77a403e18daf4f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5615692c6f9fb36e", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/citation-export.service.ts:135"}, "properties": {"repobilityId": "25072f8007da16b7", "scanner": "scanner-primary", "fingerprint": "5615692c6f9fb36e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cc199b945d04915f", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/paper-database.service.ts:41"}, "properties": {"repobilityId": "1f3fb57f5f94650e", "scanner": "scanner-primary", "fingerprint": "cc199b945d04915f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d646cf2eb2c00176", "level": "note", "message": {"text": "Legacy-named symbol `aacods_plus_v1` in backend/src/modules/literature/services/evidence-quality-scorer.service.ts:167"}, "properties": {"repobilityId": "4c3d237c7256befc", "scanner": "scanner-primary", "fingerprint": "d646cf2eb2c00176", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2be4b0a7c883b328", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-to-statement.service.spec.ts:615"}, "properties": {"repobilityId": "ae3bed9d941f93b6", "scanner": "scanner-primary", "fingerprint": "2be4b0a7c883b328", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d944ba852c0c526a", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/gap-methods-generator.service.ts:282"}, "properties": {"repobilityId": "c652bf6577aff79a", "scanner": "scanner-primary", "fingerprint": "d944ba852c0c526a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c51c636fce68462", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/pubmed.service.ts:148"}, "properties": {"repobilityId": "7d53e7c1af6db27b", "scanner": "scanner-primary", "fingerprint": "2c51c636fce68462", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f9d5fe9bdee2158", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/bayesian-gap-scoring.service.ts:292"}, "properties": {"repobilityId": "eaec77d13e839f3e", "scanner": "scanner-primary", "fingerprint": "3f9d5fe9bdee2158", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5844209068d08c20", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/crossref.service.ts:180"}, "properties": {"repobilityId": "2fc5f967c43aeeca", "scanner": "scanner-primary", "fingerprint": "5844209068d08c20", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-df77f3c46eeea93d", "level": "note", "message": {"text": "Legacy-named symbol `daysOld` in backend/src/modules/literature/services/literature-cache.service.ts:435"}, "properties": {"repobilityId": "c97924d24c8d9136", "scanner": "scanner-primary", "fingerprint": "df77f3c46eeea93d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4e2f020a93f5c1f1", "level": "note", "message": {"text": "Legacy-named symbol `idealOld` in backend/src/modules/literature/services/paper-collection-audit.service.ts:963"}, "properties": {"repobilityId": "2fd18657121e1524", "scanner": "scanner-primary", "fingerprint": "4e2f020a93f5c1f1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bc0da4002737c569", "level": "none", "message": {"text": "Commented-code block (14 lines) in backend/src/modules/literature/services/paper-collection-audit.service.ts:337"}, "properties": {"repobilityId": "c34c7089fb233dcb", "scanner": "scanner-primary", "fingerprint": "bc0da4002737c569", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d05b694ecb270e6", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/unified-thematization.service.ts:881"}, "properties": {"repobilityId": "e1b538957948bf48", "scanner": "scanner-primary", "fingerprint": "4d05b694ecb270e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ca1d1e644bb396b8", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/query-adapter.service.ts:30"}, "properties": {"repobilityId": "634ed4685990b622", "scanner": "scanner-primary", "fingerprint": "ca1d1e644bb396b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8e76a79fcb5b739e", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/knowledge-graph-layout.service.ts:238"}, "properties": {"repobilityId": "102876e742c63377", "scanner": "scanner-primary", "fingerprint": "8e76a79fcb5b739e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bee5fcae27db4224", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/study-access.service.ts:57"}, "properties": {"repobilityId": "2ad1cdd099f5c0f9", "scanner": "scanner-primary", "fingerprint": "bee5fcae27db4224", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d83af5af7796ed44", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/early-stop.service.ts:100"}, "properties": {"repobilityId": "0a4ee476264f9df8", "scanner": "scanner-primary", "fingerprint": "d83af5af7796ed44", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa18461828977751", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/search-pipeline.service.ts:187"}, "properties": {"repobilityId": "a0e6d45e1f523361", "scanner": "scanner-primary", "fingerprint": "fa18461828977751", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d3edeec5dca6bd8c", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-extraction.service.ts:363"}, "properties": {"repobilityId": "01e0ea9bebd2c35b", "scanner": "scanner-primary", "fingerprint": "d3edeec5dca6bd8c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1dd16c36a4340eb1", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/gap-analyzer.service.ts:30"}, "properties": {"repobilityId": "3f08210e3d3b3132", "scanner": "scanner-primary", "fingerprint": "1dd16c36a4340eb1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-06732cdbc93a391d", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-saturation.service.ts:234"}, "properties": {"repobilityId": "9047262ce80fc59d", "scanner": "scanner-primary", "fingerprint": "06732cdbc93a391d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c7f307a2f055848", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/citation-extraction.service.ts:444"}, "properties": {"repobilityId": "7b9074e90b66546d", "scanner": "scanner-primary", "fingerprint": "1c7f307a2f055848", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-50070e845b84fa95", "level": "none", "message": {"text": "Commented-code block (11 lines) in backend/src/modules/literature/services/clinical-trials.service.ts:151"}, "properties": {"repobilityId": "a7b93c5d134124a2", "scanner": "scanner-primary", "fingerprint": "50070e845b84fa95", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7be41b5ec57877a8", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/alternative-sources.service.ts:125"}, "properties": {"repobilityId": "f8cc8442ddd4c333", "scanner": "scanner-primary", "fingerprint": "7be41b5ec57877a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f5e309ae193ea7f8", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/self-healing-pipeline.service.ts:305"}, "properties": {"repobilityId": "c461c037fd0c0e13", "scanner": "scanner-primary", "fingerprint": "f5e309ae193ea7f8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d41846ce9bf1e692", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/fulltext-search-index.service.ts:299"}, "properties": {"repobilityId": "f6dc0c7def5ee9ba", "scanner": "scanner-primary", "fingerprint": "d41846ce9bf1e692", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4228869434ced0e0", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/adaptive-timeout.service.ts:377"}, "properties": {"repobilityId": "7e3c13248365d12e", "scanner": "scanner-primary", "fingerprint": "4228869434ced0e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-48e676c1cc578e1c", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/intelligent-fulltext-detection.service.ts:47"}, "properties": {"repobilityId": "ec80c2f0aa7d1dae", "scanner": "scanner-primary", "fingerprint": "48e676c1cc578e1c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e6b8bf53f4e27088", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/services/intelligent-fulltext-detection.service.ts:156"}, "properties": {"repobilityId": "8b828a08506f0cbf", "scanner": "scanner-primary", "fingerprint": "e6b8bf53f4e27088", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-79e0b0105dad72da", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/services/active-learning.service.ts:89"}, "properties": {"repobilityId": "15bbca74a38ecd8f", "scanner": "scanner-primary", "fingerprint": "79e0b0105dad72da", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b27a8c45441985a5", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/source-router.service.ts:212"}, "properties": {"repobilityId": "65519e1b6e379168", "scanner": "scanner-primary", "fingerprint": "b27a8c45441985a5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-023219139b793ef5", "level": "note", "message": {"text": "Legacy-named symbol `123_v2` in backend/src/modules/literature/services/embedding-pair-cache.service.spec.ts:981"}, "properties": {"repobilityId": "3ff1ea20f03fca53", "scanner": "scanner-primary", "fingerprint": "023219139b793ef5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-980aeed605ec7727", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/source-diagnostics.service.ts:211"}, "properties": {"repobilityId": "fd4de5a3e50008a0", "scanner": "scanner-primary", "fingerprint": "980aeed605ec7727", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-556b5bc7e3921fae", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/search-stream.service.ts:213"}, "properties": {"repobilityId": "2588eee85e2fa583", "scanner": "scanner-primary", "fingerprint": "556b5bc7e3921fae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b274b401700e9e45", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/services/search-stream.service.ts:1823"}, "properties": {"repobilityId": "05fd645666e03b82", "scanner": "scanner-primary", "fingerprint": "b274b401700e9e45", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-151e2057a0c672bc", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/meta-analysis.service.ts:462"}, "properties": {"repobilityId": "4ccbaf05182bcc1e", "scanner": "scanner-primary", "fingerprint": "151e2057a0c672bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-42b5e9ef379caf59", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/search-artifact.service.ts:313"}, "properties": {"repobilityId": "8c8edbc1262f6437", "scanner": "scanner-primary", "fingerprint": "42b5e9ef379caf59", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-17d7704865f9da89", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/controversy-coverage.service.ts:372"}, "properties": {"repobilityId": "26f52dc91146d161", "scanner": "scanner-primary", "fingerprint": "17d7704865f9da89", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed0832c848acc0cb", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/semantic-scholar.service.ts:299"}, "properties": {"repobilityId": "5e904336be8a6200", "scanner": "scanner-primary", "fingerprint": "ed0832c848acc0cb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c4cafdf68de6ee1c", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-deduplication.service.ts:982"}, "properties": {"repobilityId": "8c6c040f07fe1cfd", "scanner": "scanner-primary", "fingerprint": "c4cafdf68de6ee1c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9c8e8b787b379506", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/theme-editing.service.ts:28"}, "properties": {"repobilityId": "645b98861a302979", "scanner": "scanner-primary", "fingerprint": "9c8e8b787b379506", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fe81926d233277b8", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/citation-enrichment-scheduler.service.ts:101"}, "properties": {"repobilityId": "400dc501ed5b3c4b", "scanner": "scanner-primary", "fingerprint": "fe81926d233277b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-11f43eac7b72e8ae", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/services/progressive-semantic.service.ts:478"}, "properties": {"repobilityId": "6e9e9a810544fa69", "scanner": "scanner-primary", "fingerprint": "11f43eac7b72e8ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62600f6032aa4e13", "level": "none", "message": {"text": "Commented-code block (10 lines) in backend/src/modules/literature/services/nature.service.ts:244"}, "properties": {"repobilityId": "8cd9c28c61b6a617", "scanner": "scanner-primary", "fingerprint": "62600f6032aa4e13", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-31c228648f0851d1", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/html-full-text.service.ts:304"}, "properties": {"repobilityId": "a4c85bd6cef1332c", "scanner": "scanner-primary", "fingerprint": "31c228648f0851d1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b97a37768043bde", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/services/html-full-text.service.ts:914"}, "properties": {"repobilityId": "b42d9e90de9ad2c2", "scanner": "scanner-primary", "fingerprint": "7b97a37768043bde", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e033cf99574744eb", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/domain-context.service.ts:153"}, "properties": {"repobilityId": "ed19fe7c3860f22e", "scanner": "scanner-primary", "fingerprint": "e033cf99574744eb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-01888697be2f16de", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/km-share.service.ts:79"}, "properties": {"repobilityId": "90e80aa253d65779", "scanner": "scanner-primary", "fingerprint": "01888697be2f16de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-202fa10416cfd14d", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/multi-format-import.service.ts:18"}, "properties": {"repobilityId": "ba85a7d0bfe11e45", "scanner": "scanner-primary", "fingerprint": "202fa10416cfd14d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c90651799fcff2c1", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/claim-extraction.service.ts:29"}, "properties": {"repobilityId": "803bd6b467e68fb3", "scanner": "scanner-primary", "fingerprint": "c90651799fcff2c1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-af00238ff2a71d53", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/theme-extraction-progress.service.ts:515"}, "properties": {"repobilityId": "a47e97660f0584a8", "scanner": "scanner-primary", "fingerprint": "af00238ff2a71d53", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-08d3c4cda1d5016a", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/formula-validators.service.ts:649"}, "properties": {"repobilityId": "4ed23c533c1dd1b4", "scanner": "scanner-primary", "fingerprint": "08d3c4cda1d5016a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f9799f72a29df7fe", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/living-review.service.ts:387"}, "properties": {"repobilityId": "80eecde92431e786", "scanner": "scanner-primary", "fingerprint": "f9799f72a29df7fe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec126792b39feac4", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/reproducibility-manifest.service.ts:191"}, "properties": {"repobilityId": "3e5223c18e5ba1ac", "scanner": "scanner-primary", "fingerprint": "ec126792b39feac4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b3bbe7e6cfef2ae9", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/knowledge-graph.service.ts:14"}, "properties": {"repobilityId": "065492a19625c9e0", "scanner": "scanner-primary", "fingerprint": "b3bbe7e6cfef2ae9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c4bac86aabc650f", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/risk-of-bias.service.ts:473"}, "properties": {"repobilityId": "73ec1f76e5e5e468", "scanner": "scanner-primary", "fingerprint": "6c4bac86aabc650f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff3d4d1a1b8ad189", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/arxiv.service.ts:121"}, "properties": {"repobilityId": "a57b8a27d492ca47", "scanner": "scanner-primary", "fingerprint": "ff3d4d1a1b8ad189", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2b92c8747ab18c72", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/structured-extraction.service.ts:399"}, "properties": {"repobilityId": "2d81b3a6ccad8d4c", "scanner": "scanner-primary", "fingerprint": "2b92c8747ab18c72", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5fc8f2976ee952e3", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/pdf-queue.service.ts:105"}, "properties": {"repobilityId": "93b8c01c5c462ac5", "scanner": "scanner-primary", "fingerprint": "5fc8f2976ee952e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ba348117d2fa2de", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/api-rate-limiter.service.ts:307"}, "properties": {"repobilityId": "9f6b7735ed2f28f0", "scanner": "scanner-primary", "fingerprint": "1ba348117d2fa2de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-068339be94167185", "level": "none", "message": {"text": "Commented-code block (10 lines) in backend/src/modules/literature/services/cross-encoder-pool.service.ts:220"}, "properties": {"repobilityId": "2287e62114084a28", "scanner": "scanner-primary", "fingerprint": "068339be94167185", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b48b648a31e12bc", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/literature-synthesis-pipeline.service.ts:434"}, "properties": {"repobilityId": "31d963ccdc1efaf3", "scanner": "scanner-primary", "fingerprint": "8b48b648a31e12bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b7cff0dc5d718f0c", "level": "none", "message": {"text": "Commented-code block (11 lines) in backend/src/modules/literature/services/prisma-generator.service.ts:333"}, "properties": {"repobilityId": "7cf884d162ba13a5", "scanner": "scanner-primary", "fingerprint": "b7cff0dc5d718f0c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5a8c1b608f8da211", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/core.service.ts:160"}, "properties": {"repobilityId": "9b1dc243b9eb2f2c", "scanner": "scanner-primary", "fingerprint": "5a8c1b608f8da211", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-888185e0e0950cd2", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/local-embedding.service.ts:484"}, "properties": {"repobilityId": "0948fc8b7d88f662", "scanner": "scanner-primary", "fingerprint": "888185e0e0950cd2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6cab294ccd9701eb", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/meta-analysis-orchestrator.service.ts:308"}, "properties": {"repobilityId": "82b3ac053a681606", "scanner": "scanner-primary", "fingerprint": "6cab294ccd9701eb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce850e4216c52800", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/services/rate-limiting.service.ts:420"}, "properties": {"repobilityId": "5dafc60d40a3999f", "scanner": "scanner-primary", "fingerprint": "ce850e4216c52800", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fdfcd4ac5ef2edbc", "level": "note", "message": {"text": "Legacy-named symbol `aacods_plus_v1` in backend/src/modules/literature/services/unified-evidence-repository.service.ts:104"}, "properties": {"repobilityId": "28a4fdc381a3dec4", "scanner": "scanner-primary", "fingerprint": "fdfcd4ac5ef2edbc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5b0ff19f64a5c910", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/eric.service.ts:462"}, "properties": {"repobilityId": "9fb8f3e302bea47b", "scanner": "scanner-primary", "fingerprint": "5b0ff19f64a5c910", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-899a57a97370a817", "level": "note", "message": {"text": "Legacy-named symbol `isLegacy` in backend/src/modules/literature/services/corpus-snapshot.service.ts:787"}, "properties": {"repobilityId": "42167a9d6889d2d8", "scanner": "scanner-primary", "fingerprint": "899a57a97370a817", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0cffed2b6ca2740b", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/corpus-snapshot.service.ts:120"}, "properties": {"repobilityId": "cc132e06fed88b8d", "scanner": "scanner-primary", "fingerprint": "0cffed2b6ca2740b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-73b19cf397d801ff", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/gap-review.service.ts:24"}, "properties": {"repobilityId": "ecd0992feba57465", "scanner": "scanner-primary", "fingerprint": "73b19cf397d801ff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-31b6c0623f9238f1", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/core.service.spec.ts:488"}, "properties": {"repobilityId": "0edfaa6703bd41e1", "scanner": "scanner-primary", "fingerprint": "31b6c0623f9238f1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-86017a894cf4716c", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/local-code-extraction.service.ts:584"}, "properties": {"repobilityId": "e80422d2ec522220", "scanner": "scanner-primary", "fingerprint": "86017a894cf4716c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-416a025e67cca951", "level": "note", "message": {"text": "Legacy-named symbol `rest_v1` in backend/src/modules/literature/services/wikimedia-pageviews.service.ts:234"}, "properties": {"repobilityId": "f90d97cba52fe1e7", "scanner": "scanner-primary", "fingerprint": "416a025e67cca951", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-14cb9893984722de", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/predictive-gap.service.spec.ts:10"}, "properties": {"repobilityId": "9305438b5e827b89", "scanner": "scanner-primary", "fingerprint": "14cb9893984722de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-33950a902e9d7674", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/citation-stance-classifier.service.ts:120"}, "properties": {"repobilityId": "befc1d824e9dbef2", "scanner": "scanner-primary", "fingerprint": "33950a902e9d7674", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ca39d5dc5454d2c5", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/structural-gap-resonance.service.ts:217"}, "properties": {"repobilityId": "293a979098e1d58e", "scanner": "scanner-primary", "fingerprint": "ca39d5dc5454d2c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a11dad6111ad1ccb", "level": "none", "message": {"text": "Commented-code block (10 lines) in backend/src/modules/literature/services/pdf-parsing.service.ts:146"}, "properties": {"repobilityId": "6070f52fc5d7c24d", "scanner": "scanner-primary", "fingerprint": "a11dad6111ad1ccb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-46a4399f43e2d844", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/services/pdf-parsing.service.ts:337"}, "properties": {"repobilityId": "399a96726a9f7313", "scanner": "scanner-primary", "fingerprint": "46a4399f43e2d844", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d5ebc80407f5aa68", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/fulltext-chunking.service.ts:198"}, "properties": {"repobilityId": "4780ddef25fa5eb3", "scanner": "scanner-primary", "fingerprint": "d5ebc80407f5aa68", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-29b0b0638e785250", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/gap-analyzer.service.spec.ts:710"}, "properties": {"repobilityId": "f10134f2615d696d", "scanner": "scanner-primary", "fingerprint": "29b0b0638e785250", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bbf69632e072954f", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/services/specter-back-chunking.service.ts:170"}, "properties": {"repobilityId": "3471969d65de1cf6", "scanner": "scanner-primary", "fingerprint": "bbf69632e072954f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-94324b4493042089", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/request-hedging.service.ts:90"}, "properties": {"repobilityId": "ff1210313a083e36", "scanner": "scanner-primary", "fingerprint": "94324b4493042089", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a955b8f2e0859ad5", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/services/prospero.service.ts:66"}, "properties": {"repobilityId": "2f9db10c7e0d35bf", "scanner": "scanner-primary", "fingerprint": "a955b8f2e0859ad5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d7278f5d404354d", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/__tests__/paper-database.sanitize-url.spec.ts:160"}, "properties": {"repobilityId": "ed1a7849264474b2", "scanner": "scanner-primary", "fingerprint": "4d7278f5d404354d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a455194aea908ed2", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/gap-refinement-loop.service.spec.ts:226"}, "properties": {"repobilityId": "79838a36a84ae906", "scanner": "scanner-primary", "fingerprint": "a455194aea908ed2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a40274b3b8c2adad", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/multi-format-import.normalization.spec.ts:57"}, "properties": {"repobilityId": "ec40b659ebc263b1", "scanner": "scanner-primary", "fingerprint": "a40274b3b8c2adad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9106371219705101", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/formula-validators.integration.spec.ts:50"}, "properties": {"repobilityId": "4085280ef5fc6569", "scanner": "scanner-primary", "fingerprint": "9106371219705101", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d89b7358b9022377", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/pdf-parsing.service.spec.ts:218"}, "properties": {"repobilityId": "8048452a7e4faf33", "scanner": "scanner-primary", "fingerprint": "d89b7358b9022377", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b2f384b781b6cec", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/__tests__/search-stream.phase-10988.spec.ts:111"}, "properties": {"repobilityId": "409befa6b4858fa6", "scanner": "scanner-primary", "fingerprint": "6b2f384b781b6cec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1bab0933b2d5a2f4", "level": "note", "message": {"text": "Legacy-named symbol `aacods_plus_v1` in backend/src/modules/literature/services/__tests__/evidence-quality-scorer.service.spec.ts:193"}, "properties": {"repobilityId": "480c8bb623967cbc", "scanner": "scanner-primary", "fingerprint": "1bab0933b2d5a2f4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-52b9ddbd1601a166", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/services/__tests__/request-cancellation.integration.spec.ts:52"}, "properties": {"repobilityId": "6f347fc7311f2441", "scanner": "scanner-primary", "fingerprint": "52b9ddbd1601a166", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9164d57f2782a287", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/km-corpus-prep.service.spec.ts:249"}, "properties": {"repobilityId": "69c9bfb6403d9474", "scanner": "scanner-primary", "fingerprint": "9164d57f2782a287", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a08852f6382ec40b", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/services/__tests__/search-stream.auto-refresh.spec.ts:100"}, "properties": {"repobilityId": "0070e6e7e21a7c71", "scanner": "scanner-primary", "fingerprint": "a08852f6382ec40b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ed26cec1f91e353", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/__tests__/citation-stance-classifier.service.spec.ts:170"}, "properties": {"repobilityId": "1bb12a2ddd57063b", "scanner": "scanner-primary", "fingerprint": "1ed26cec1f91e353", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f472156353041d59", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/knowledge-graph.service.spec.ts:314"}, "properties": {"repobilityId": "c8cb2d64d5ecf57c", "scanner": "scanner-primary", "fingerprint": "f472156353041d59", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-faf64cb5b46c7ef1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/src/modules/literature/services/__tests__/knowledge-graph.service.spec.ts:1526"}, "properties": {"repobilityId": "6ca113ab1ac05c2f", "scanner": "scanner-primary", "fingerprint": "faf64cb5b46c7ef1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-333965160af51dd3", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/search-pipeline.service.spec.ts:596"}, "properties": {"repobilityId": "bc7726c2083195cd", "scanner": "scanner-primary", "fingerprint": "333965160af51dd3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1d59f5024ea3d883", "level": "note", "message": {"text": "Legacy-named symbol `aacods_plus_v1` in backend/src/modules/literature/services/__tests__/unified-evidence-repository.service.spec.ts:46"}, "properties": {"repobilityId": "cdaf849f1ce3861f", "scanner": "scanner-primary", "fingerprint": "1d59f5024ea3d883", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-67130a4e35de7360", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/__tests__/grey-lit-sources.service.spec.ts:144"}, "properties": {"repobilityId": "814cdb14c10c3595", "scanner": "scanner-primary", "fingerprint": "67130a4e35de7360", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0beeaadd84a8a48d", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/__tests__/search-stream.result-cache.spec.ts:1"}, "properties": {"repobilityId": "719c9f89497a04c5", "scanner": "scanner-primary", "fingerprint": "0beeaadd84a8a48d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5fdcb226b790b757", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/query-adapter.service.spec.ts:166"}, "properties": {"repobilityId": "3c577dd86f1421c7", "scanner": "scanner-primary", "fingerprint": "5fdcb226b790b757", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-603dd68c18039271", "level": "none", "message": {"text": "Commented-code block (12 lines) in backend/src/modules/literature/services/__tests__/risk-of-bias.service.spec.ts:318"}, "properties": {"repobilityId": "63df14454e4561fb", "scanner": "scanner-primary", "fingerprint": "603dd68c18039271", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bb5231c2bfb37244", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/services/__tests__/evidence-table.service.spec.ts:213"}, "properties": {"repobilityId": "c162a1ef318831d5", "scanner": "scanner-primary", "fingerprint": "bb5231c2bfb37244", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bd64500ab3922b19", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/__tests__/bayesian-gap-scoring.service.spec.ts:479"}, "properties": {"repobilityId": "2ff9ae31c80bc0fe", "scanner": "scanner-primary", "fingerprint": "bd64500ab3922b19", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9b2c3c806f1309a8", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/search-stream.autopersist-fulltext.spec.ts:10"}, "properties": {"repobilityId": "417fc9fa163b75a7", "scanner": "scanner-primary", "fingerprint": "9b2c3c806f1309a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9f6b06968dcea52e", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/cursor-based-cache.service.spec.ts:249"}, "properties": {"repobilityId": "f2f0475f99f2b4ec", "scanner": "scanner-primary", "fingerprint": "9f6b06968dcea52e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f90d29ed72a6512", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/__tests__/paper-database.service.spec.ts:208"}, "properties": {"repobilityId": "34c11c3cd84d2d82", "scanner": "scanner-primary", "fingerprint": "5f90d29ed72a6512", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b88d3f5589633513", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/__tests__/gap-persistence-structural.service.spec.ts:127"}, "properties": {"repobilityId": "c2068f98916610f3", "scanner": "scanner-primary", "fingerprint": "b88d3f5589633513", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-03db062ad75fbdcd", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/km-share.service.spec.ts:46"}, "properties": {"repobilityId": "7381ab535c591bbb", "scanner": "scanner-primary", "fingerprint": "03db062ad75fbdcd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e42df3e4b257267", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/claim-extraction.service.spec.ts:323"}, "properties": {"repobilityId": "492edca1996bd147", "scanner": "scanner-primary", "fingerprint": "3e42df3e4b257267", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3a416673fdef14f1", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/specter-back-chunking.service.spec.ts:221"}, "properties": {"repobilityId": "81b8524e871b3b76", "scanner": "scanner-primary", "fingerprint": "3a416673fdef14f1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-64d5e1160e69b337", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/trend-intelligence.service.spec.ts:290"}, "properties": {"repobilityId": "13d9775a551c08db", "scanner": "scanner-primary", "fingerprint": "64d5e1160e69b337", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85d5d4ffd6df8761", "level": "note", "message": {"text": "Legacy-named symbol `isLegacy` in backend/src/modules/literature/services/__tests__/corpus-snapshot.service.spec.ts:467"}, "properties": {"repobilityId": "2ee5a861e2f28e6b", "scanner": "scanner-primary", "fingerprint": "85d5d4ffd6df8761", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-614f59823d674b9e", "level": "none", "message": {"text": "Commented-code block (10 lines) in backend/src/modules/literature/services/__tests__/corpus-snapshot.service.spec.ts:318"}, "properties": {"repobilityId": "17e82d5721b64d5a", "scanner": "scanner-primary", "fingerprint": "614f59823d674b9e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e34e38450c397554", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/cross-encoder-reranker.memgate.spec.ts:1"}, "properties": {"repobilityId": "6ef8db115a9c8b8a", "scanner": "scanner-primary", "fingerprint": "e34e38450c397554", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cd95b2ccb566f548", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/__tests__/pdf-parse-pool.service.spec.ts:1"}, "properties": {"repobilityId": "12091cb5f78c44b9", "scanner": "scanner-primary", "fingerprint": "cd95b2ccb566f548", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e417c9adf4ea5907", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/__tests__/search-stream.artifact-capture.spec.ts:55"}, "properties": {"repobilityId": "3595864dc7451cb6", "scanner": "scanner-primary", "fingerprint": "e417c9adf4ea5907", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-542a82903dd76c51", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/__tests__/gap-persistence-by-study.service.spec.ts:45"}, "properties": {"repobilityId": "b5a5f6710e7cbb95", "scanner": "scanner-primary", "fingerprint": "542a82903dd76c51", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6494b3247428b96e", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/__tests__/openalex.service.spec.ts:149"}, "properties": {"repobilityId": "f0e273f6c33eb278", "scanner": "scanner-primary", "fingerprint": "6494b3247428b96e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f0a035425847ddd", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/query-translation-fidelity.spec.ts:41"}, "properties": {"repobilityId": "3a5380b1ca49868d", "scanner": "scanner-primary", "fingerprint": "4f0a035425847ddd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-643f491fbeddf667", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/cross-encoder-pool.service.spec.ts:1"}, "properties": {"repobilityId": "921eb726a4322d32", "scanner": "scanner-primary", "fingerprint": "643f491fbeddf667", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c7d2a586b8f3568", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/research-session-orchestrator.service.spec.ts:331"}, "properties": {"repobilityId": "10752650ec3a814f", "scanner": "scanner-primary", "fingerprint": "7c7d2a586b8f3568", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-31a2e377d12a8931", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/search-admission-guardrails.spec.ts:32"}, "properties": {"repobilityId": "35671ba700b54764", "scanner": "scanner-primary", "fingerprint": "31a2e377d12a8931", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b680624673279446", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/cross-encoder-reranker.service.spec.ts:11"}, "properties": {"repobilityId": "5f54dbcf1d2095df", "scanner": "scanner-primary", "fingerprint": "b680624673279446", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bca6aed23d185158", "level": "none", "message": {"text": "Commented-code block (11 lines) in backend/src/modules/literature/services/__tests__/citation-enrichment-statement.spec.ts:351"}, "properties": {"repobilityId": "aece996bc5d84f44", "scanner": "scanner-primary", "fingerprint": "bca6aed23d185158", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d914c76efc199adc", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/arxiv.service.spec.ts:200"}, "properties": {"repobilityId": "415b1c78aba5bec9", "scanner": "scanner-primary", "fingerprint": "d914c76efc199adc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3cbe2b16284375f9", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/search-stream.fulltext-parity.spec.ts:56"}, "properties": {"repobilityId": "d7bbda899060355a", "scanner": "scanner-primary", "fingerprint": "3cbe2b16284375f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-72854a451dead5e5", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/__tests__/theme-database.service.spec.ts:379"}, "properties": {"repobilityId": "354f9405dcb778c6", "scanner": "scanner-primary", "fingerprint": "72854a451dead5e5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c8fe05ec5820b3f", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/services/auto-pipeline/study-corpus.service.ts:69"}, "properties": {"repobilityId": "356ca2f8cfe0b904", "scanner": "scanner-primary", "fingerprint": "6c8fe05ec5820b3f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0a1b39034e3a4b9c", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/auto-pipeline/auto-knowledge-map.service.ts:37"}, "properties": {"repobilityId": "27f32e18ffffab31", "scanner": "scanner-primary", "fingerprint": "0a1b39034e3a4b9c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-049f8df5d7384689", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/auto-pipeline/auto-gap-analysis.service.ts:35"}, "properties": {"repobilityId": "0116246caee1197e", "scanner": "scanner-primary", "fingerprint": "049f8df5d7384689", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8faa021095188237", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/auto-pipeline/auto-gap-analysis.service.spec.ts:226"}, "properties": {"repobilityId": "e9927e018c58b180", "scanner": "scanner-primary", "fingerprint": "8faa021095188237", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b8aec70e9063f20", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/auto-pipeline/auto-pipeline-runner.service.ts:72"}, "properties": {"repobilityId": "dc0d52f6569b62c9", "scanner": "scanner-primary", "fingerprint": "6b8aec70e9063f20", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55b8e9181314d265", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/auto-pipeline/__tests__/auto-pipeline-runner.service.spec.ts:137"}, "properties": {"repobilityId": "6e7c90e382692f64", "scanner": "scanner-primary", "fingerprint": "55b8e9181314d265", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2202e6187552b108", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/auto-pipeline/__tests__/auto-knowledge-map.service.spec.ts:72"}, "properties": {"repobilityId": "c6af56c2efdb4ffb", "scanner": "scanner-primary", "fingerprint": "2202e6187552b108", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-391639f3bbc186bb", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/bibliometric/km-corpus-fixture.ts:305"}, "properties": {"repobilityId": "55ca84c7e78fbbc5", "scanner": "scanner-primary", "fingerprint": "391639f3bbc186bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b461e62eca1483d", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/bibliometric/burst-detection.algorithm.ts:215"}, "properties": {"repobilityId": "8501005b723842d0", "scanner": "scanner-primary", "fingerprint": "7b461e62eca1483d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-10cc07987e1cffe2", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/bibliometric/pagerank.algorithm.ts:291"}, "properties": {"repobilityId": "de46525f3aee2ad0", "scanner": "scanner-primary", "fingerprint": "10cc07987e1cffe2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d8ff10969214d771", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/bibliometric/link-prediction.algorithm.ts:262"}, "properties": {"repobilityId": "61b28658ef65560a", "scanner": "scanner-primary", "fingerprint": "d8ff10969214d771", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b1a0e393c325bfe", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/bibliometric/disruption-index.algorithm.ts:316"}, "properties": {"repobilityId": "e172469a591de549", "scanner": "scanner-primary", "fingerprint": "4b1a0e393c325bfe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-385ee65244330e57", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/bibliometric/reproducibility-manifest.service.ts:170"}, "properties": {"repobilityId": "d210edcd3a3ebf15", "scanner": "scanner-primary", "fingerprint": "385ee65244330e57", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-914224cf443be8f1", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/services/bibliometric/wall-clock-budget.ts:82"}, "properties": {"repobilityId": "27e17627d8db9720", "scanner": "scanner-primary", "fingerprint": "914224cf443be8f1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-36a42f9777b61c9f", "level": "none", "message": {"text": "Commented-code block (12 lines) in backend/src/modules/literature/services/bibliometric/__tests__/reproducibility-manifest.service.spec.ts:57"}, "properties": {"repobilityId": "921da698127af657", "scanner": "scanner-primary", "fingerprint": "36a42f9777b61c9f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-41a7e1b379dc5748", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/bibliometric/__tests__/km-corpus-fixture.spec.ts:207"}, "properties": {"repobilityId": "870f07a96ef09978", "scanner": "scanner-primary", "fingerprint": "41a7e1b379dc5748", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b6ddb39c319f5b8", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/services/bibliometric/__tests__/pagerank.algorithm.spec.ts:249"}, "properties": {"repobilityId": "d716f08393d03708", "scanner": "scanner-primary", "fingerprint": "4b6ddb39c319f5b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-09255ebb99d9f384", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/gap-analysis/gap-refinement-loop.service.ts:27"}, "properties": {"repobilityId": "723e0e85fe78aa4e", "scanner": "scanner-primary", "fingerprint": "09255ebb99d9f384", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-792aa6005d78918b", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/gap-analysis/gap-detection.service.ts:43"}, "properties": {"repobilityId": "907b3bed506126ed", "scanner": "scanner-primary", "fingerprint": "792aa6005d78918b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-633da1b385885471", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/gap-analysis/gap-validation-rerank.ts:137"}, "properties": {"repobilityId": "cc64a1fc5adf7c29", "scanner": "scanner-primary", "fingerprint": "633da1b385885471", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5cfd11f386a8c01d", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/gap-analysis/gap-external-validation.service.spec.ts:320"}, "properties": {"repobilityId": "6d9375fd120080b9", "scanner": "scanner-primary", "fingerprint": "5cfd11f386a8c01d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-25738c0f0d76dd02", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/services/gap-analysis/gap-decision-migration.service.ts:126"}, "properties": {"repobilityId": "0c6ebb655d61e0de", "scanner": "scanner-primary", "fingerprint": "25738c0f0d76dd02", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a02cbbe89701c28", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/gap-analysis/corpus-enrichment.service.spec.ts:82"}, "properties": {"repobilityId": "8ff19fc6c101b211", "scanner": "scanner-primary", "fingerprint": "6a02cbbe89701c28", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-af2f4a052940806e", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/gap-analysis/gap-validation-report.service.ts:14"}, "properties": {"repobilityId": "2755f6a240af9474", "scanner": "scanner-primary", "fingerprint": "af2f4a052940806e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-49fcfc0bfad8dad2", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/gap-analysis/corpus-enrichment.service.ts:86"}, "properties": {"repobilityId": "41155a66054d99bc", "scanner": "scanner-primary", "fingerprint": "49fcfc0bfad8dad2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1fa5fe6f818cc4fa", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/gap-analysis/gap-scoring.service.ts:322"}, "properties": {"repobilityId": "0849026345f9a80a", "scanner": "scanner-primary", "fingerprint": "1fa5fe6f818cc4fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8981877ae5ba304f", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/gap-analysis/gap-corpus-utils.service.ts:17"}, "properties": {"repobilityId": "038e6e3882235629", "scanner": "scanner-primary", "fingerprint": "8981877ae5ba304f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5dc21f80abed6a23", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/gap-analysis/gap-external-validation.service.ts:13"}, "properties": {"repobilityId": "ac2ca45c1a280ee8", "scanner": "scanner-primary", "fingerprint": "5dc21f80abed6a23", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6450cda208d0e2c9", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/gap-analysis/gap-detection.service.spec.ts:510"}, "properties": {"repobilityId": "95ad99ad81c7954b", "scanner": "scanner-primary", "fingerprint": "6450cda208d0e2c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-86ebe4036b165b7c", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/services/gap-analysis/__tests__/gap-external-validation.service.spec.ts:143"}, "properties": {"repobilityId": "b1b45ca79e271478", "scanner": "scanner-primary", "fingerprint": "86ebe4036b165b7c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b5170b62d402c52d", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/modules/literature/services/layout-algorithms/research-front-topography.algorithm.ts:163"}, "properties": {"repobilityId": "2cc11195e244b129", "scanner": "scanner-primary", "fingerprint": "b5170b62d402c52d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cfe357e5ead7a97e", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-extraction/coherence-calculation.service.ts:1225"}, "properties": {"repobilityId": "9b4ae29a1a17d122", "scanner": "scanner-primary", "fingerprint": "cfe357e5ead7a97e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e47cec16ccbf83f8", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-extraction/theme-refinement.service.spec.ts:1103"}, "properties": {"repobilityId": "5dafbbc620933a75", "scanner": "scanner-primary", "fingerprint": "e47cec16ccbf83f8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-578accce9efa7e6f", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-extraction/familiarization-stage.service.ts:96"}, "properties": {"repobilityId": "d15ccaa8fb6f1a34", "scanner": "scanner-primary", "fingerprint": "578accce9efa7e6f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c619ea3f82633f9", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/theme-extraction/validation-strategy.service.ts:859"}, "properties": {"repobilityId": "7a4aac1fe878e231", "scanner": "scanner-primary", "fingerprint": "2c619ea3f82633f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-54a530b3d3d0f4a0", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-extraction/theme-generation-stage.service.ts:170"}, "properties": {"repobilityId": "e02ba82576d6af61", "scanner": "scanner-primary", "fingerprint": "54a530b3d3d0f4a0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62b8b8c4aea0be31", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/theme-extraction/saturation-analysis.service.ts:771"}, "properties": {"repobilityId": "e61477cfc3416645", "scanner": "scanner-primary", "fingerprint": "62b8b8c4aea0be31", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-11a37da50b5aded9", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/community-detection/silhouette.ts:201"}, "properties": {"repobilityId": "c44bff5364ffb1ce", "scanner": "scanner-primary", "fingerprint": "11a37da50b5aded9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5720621efab67aa3", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/community-detection/sbm.algorithm.ts:149"}, "properties": {"repobilityId": "e5036a711701cd66", "scanner": "scanner-primary", "fingerprint": "5720621efab67aa3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1a5769b5c511f866", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/services/community-detection/structure-significance.ts:84"}, "properties": {"repobilityId": "8fac6a4a02c597f9", "scanner": "scanner-primary", "fingerprint": "1a5769b5c511f866", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ae990aa9eb12b541", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/services/iterative-fetch/iterative-deduplicator.service.ts:319"}, "properties": {"repobilityId": "29c4fe723119d7cf", "scanner": "scanner-primary", "fingerprint": "ae990aa9eb12b541", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-23a638c58139877c", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/iterative-fetch/iterative-fetch.types.ts:380"}, "properties": {"repobilityId": "ce6b72474d5945d4", "scanner": "scanner-primary", "fingerprint": "23a638c58139877c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0fe7a44cb3cb2bf8", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/services/iterative-fetch/__tests__/per-source-yield-evaluation.integration.spec.ts:442"}, "properties": {"repobilityId": "e318362c7941fcc8", "scanner": "scanner-primary", "fingerprint": "0fe7a44cb3cb2bf8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c5248a7988abe9d", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/jobs/pipeline-job.service.ts:171"}, "properties": {"repobilityId": "dd0bb38aebcab699", "scanner": "scanner-primary", "fingerprint": "6c5248a7988abe9d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-43d25465370bdfd0", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/jobs/user-jobs.gateway.ts:195"}, "properties": {"repobilityId": "2df56e1b55c132f9", "scanner": "scanner-primary", "fingerprint": "43d25465370bdfd0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a64b261e5ba1072", "level": "none", "message": {"text": "Commented-code block (11 lines) in backend/src/modules/literature/jobs/pipeline-jobs.controller.ts:105"}, "properties": {"repobilityId": "f75c97a40544eef4", "scanner": "scanner-primary", "fingerprint": "2a64b261e5ba1072", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-13135933a38b2d66", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/literature/jobs/pipeline-job.types.ts:152"}, "properties": {"repobilityId": "26015b52ae889688", "scanner": "scanner-primary", "fingerprint": "13135933a38b2d66", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b41dee91bef2f2b", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/literature/jobs/__tests__/pipeline-job.service.spec.ts:307"}, "properties": {"repobilityId": "6b7cda5117d918ca", "scanner": "scanner-primary", "fingerprint": "4b41dee91bef2f2b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fbc6235e4c6220b3", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/literature/filters/build-throttler-exception.filter.ts:55"}, "properties": {"repobilityId": "9244258cc3c7f952", "scanner": "scanner-primary", "fingerprint": "fbc6235e4c6220b3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-71e2add0faeb75b2", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/literature/filters/__tests__/build-throttler-exception.filter.spec.ts:151"}, "properties": {"repobilityId": "e7a663488cd024d9", "scanner": "scanner-primary", "fingerprint": "71e2add0faeb75b2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1b66f6cfe042a5c3", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/analysis/__tests__/smoke/core-functionality.smoke.spec.ts:36"}, "properties": {"repobilityId": "1a64e1e4fc181694", "scanner": "scanner-primary", "fingerprint": "1b66f6cfe042a5c3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-63b9cb5297b75ae1", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/analysis/tests/q-analysis.service.spec.ts:43"}, "properties": {"repobilityId": "2630a38346372477", "scanner": "scanner-primary", "fingerprint": "63b9cb5297b75ae1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-982a9ad2c62544d9", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/analysis/services/statistical-output.service.spec.ts:201"}, "properties": {"repobilityId": "dee739942ffdc325", "scanner": "scanner-primary", "fingerprint": "982a9ad2c62544d9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-65354d64adb732f7", "level": "none", "message": {"text": "Commented-code block (12 lines) in backend/src/modules/analysis/services/q-analysis.service.ts:356"}, "properties": {"repobilityId": "040a0e4bab4e7261", "scanner": "scanner-primary", "fingerprint": "65354d64adb732f7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a92cc4db5cdd455", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/modules/analysis/services/hub.service.ts:478"}, "properties": {"repobilityId": "a22e3255326ec1b1", "scanner": "scanner-primary", "fingerprint": "6a92cc4db5cdd455", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d0e28e483aae3c8a", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/analysis/services/statistical-output.service.ts:326"}, "properties": {"repobilityId": "006748a9e2cf9066", "scanner": "scanner-primary", "fingerprint": "d0e28e483aae3c8a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa53bee2c6c97dd7", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/src/modules/analysis/services/interpretation.service.ts:349"}, "properties": {"repobilityId": "3e8aa7181297b5e2", "scanner": "scanner-primary", "fingerprint": "fa53bee2c6c97dd7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d2b7dac47d648ec3", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/analysis/services/literature-comparison.service.ts:55"}, "properties": {"repobilityId": "aad13cf4ba902184", "scanner": "scanner-primary", "fingerprint": "d2b7dac47d648ec3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb2f7d5ea11010c2", "level": "none", "message": {"text": "Commented-code block (11 lines) in backend/src/modules/analysis/services/__tests__/literature-comparison.service.spec.ts:11"}, "properties": {"repobilityId": "b0ff200a9fc9ca0e", "scanner": "scanner-primary", "fingerprint": "eb2f7d5ea11010c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4aaf5b94f1de5b3c", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/modules/analysis/services/__tests__/pqmethod-compatibility.service.spec.ts:6"}, "properties": {"repobilityId": "3672a13f1365a2f3", "scanner": "scanner-primary", "fingerprint": "4aaf5b94f1de5b3c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c8a1963cdbc2c2d", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/rate-limiting/rate-limiting.module.ts:87"}, "properties": {"repobilityId": "b7bc6d3a0215e2a2", "scanner": "scanner-primary", "fingerprint": "1c8a1963cdbc2c2d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-567888fe3fe914af", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/src/modules/rate-limiting/guards/ws-rate-limit.guard.ts:293"}, "properties": {"repobilityId": "cc4fecb93c1c68ac", "scanner": "scanner-primary", "fingerprint": "567888fe3fe914af", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-82914e5f7b887ee4", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/rate-limiting/services/rate-limit-metrics.service.ts:69"}, "properties": {"repobilityId": "e0b46f5e85e3b82d", "scanner": "scanner-primary", "fingerprint": "82914e5f7b887ee4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-af45ed8d11748b90", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/src/modules/report/report.service.ts:136"}, "properties": {"repobilityId": "91fa4b9abeba1864", "scanner": "scanner-primary", "fingerprint": "af45ed8d11748b90", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bb1d1fffda704206", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/report/controllers/report.controller.ts:2312"}, "properties": {"repobilityId": "ab44a95b4183a3a3", "scanner": "scanner-primary", "fingerprint": "bb1d1fffda704206", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b58772f228768fa7", "level": "none", "message": {"text": "Commented-code block (11 lines) in backend/src/modules/report/services/report-generator.service.ts:555"}, "properties": {"repobilityId": "f773211bfe9ae1c1", "scanner": "scanner-primary", "fingerprint": "b58772f228768fa7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dac9714e23c68fd9", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/report/services/reproducibility-bundle.service.ts:134"}, "properties": {"repobilityId": "296f092a8483e1b6", "scanner": "scanner-primary", "fingerprint": "dac9714e23c68fd9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9defb259ffac62b1", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/src/modules/report/services/export/pdf-export.service.ts:70"}, "properties": {"repobilityId": "d06aec53df4288c0", "scanner": "scanner-primary", "fingerprint": "9defb259ffac62b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6f1e8d69f1c32483", "level": "none", "message": {"text": "Commented-code block (12 lines) in backend/src/modules/file-upload/file-upload.module.ts:7"}, "properties": {"repobilityId": "067ef625437435f4", "scanner": "scanner-primary", "fingerprint": "6f1e8d69f1c32483", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9284f6892fdb68a7", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/src/controllers/enhanced-metrics.controller.ts:285"}, "properties": {"repobilityId": "bbc98a53596e5770", "scanner": "scanner-primary", "fingerprint": "9284f6892fdb68a7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-83e859d41592c12e", "level": "note", "message": {"text": "182 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "1a7e7ad6353e4aba", "scanner": "scanner-primary", "fingerprint": "83e859d41592c12e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "88792024a3c12ae2", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "2f4d85ad96e0341b", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-b7db82c6db533604", "level": "error", "message": {"text": "Dangling fetch: GET https://api.unpaywall.org/v2/${encodeURIComponent(p.doi)}?email=research@blackq.app (test-smart-resolver.js:27)"}, "properties": {"repobilityId": "dc811947ef68d478", "scanner": "scanner-primary", "fingerprint": "b7db82c6db533604", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-fd13df5e0c539553", "level": "error", "message": {"text": "Dangling fetch: POST https://api.semanticscholar.org/graph/v1/paper/batch (test-smart-resolver.js:55)"}, "properties": {"repobilityId": "699168d6ed0febab", "scanner": "scanner-primary", "fingerprint": "fd13df5e0c539553", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-899f14d1181ae126", "level": "error", "message": {"text": "Dangling fetch: HEAD https://files.eric.ed.gov/fulltext/${ericId}.pdf (test-smart-resolver.js:85)"}, "properties": {"repobilityId": "541a72c21af04725", "scanner": "scanner-primary", "fingerprint": "899f14d1181ae126", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-df433fae15bcff06", "level": "error", "message": {"text": "Dangling fetch: GET https://api.crossref.org/works/${encodeURIComponent(p.doi)} (test-smart-resolver.js:112)"}, "properties": {"repobilityId": "c2181af9714b9ef9", "scanner": "scanner-primary", "fingerprint": "df433fae15bcff06", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-45649fdc73547d7a", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:3001 (frontend/test-ui-components.js:16)"}, "properties": {"repobilityId": "6c8422ab45fba20d", "scanner": "scanner-primary", "fingerprint": "45649fdc73547d7a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9a02fa27992b34bc", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=javascript:alert(1) (scripts/edge-case-tests.js:58)"}, "properties": {"repobilityId": "f464532599ba2c78", "scanner": "scanner-primary", "fingerprint": "9a02fa27992b34bc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a6989ffc5ae28c2a", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=data:text/html,<script>alert(1)</script> (scripts/edge-case-tests.js:64)"}, "properties": {"repobilityId": "ded06a1aa0a6b103", "scanner": "scanner-primary", "fingerprint": "a6989ffc5ae28c2a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d91b747b4e42bfe9", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=/../../../etc/passwd (scripts/edge-case-tests.js:70)"}, "properties": {"repobilityId": "e18b5f0d13f6d4ef", "scanner": "scanner-primary", "fingerprint": "d91b747b4e42bfe9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7647c3fcc00e3370", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=/discover%00/literature (scripts/edge-case-tests.js:76)"}, "properties": {"repobilityId": "bb7e415d016d1db0", "scanner": "scanner-primary", "fingerprint": "7647c3fcc00e3370", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5588783fe5a16cdc", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=/discover%E2%80%8B/literature (scripts/edge-case-tests.js:82)"}, "properties": {"repobilityId": "5c7fc9f62c1a30c4", "scanner": "scanner-primary", "fingerprint": "5588783fe5a16cdc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-80755ee69b394c8c", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=%252F%252Fevil.com (scripts/edge-case-tests.js:88)"}, "properties": {"repobilityId": "df5bdf997d431fa9", "scanner": "scanner-primary", "fingerprint": "80755ee69b394c8c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-cc74edcdbb5726a6", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=/discover%0D%0ASet-Cookie:evil=1 (scripts/edge-case-tests.js:94)"}, "properties": {"repobilityId": "15007f6576ad720d", "scanner": "scanner-primary", "fingerprint": "cc74edcdbb5726a6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4b68d186b8b958d5", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/profile (scripts/edge-case-tests.js:102)"}, "properties": {"repobilityId": "2d2aa5eefd83ce6d", "scanner": "scanner-primary", "fingerprint": "4b68d186b8b958d5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3df35fa1a3c993cc", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/profile (scripts/edge-case-tests.js:108)"}, "properties": {"repobilityId": "f6a6755de4862d70", "scanner": "scanner-primary", "fingerprint": "3df35fa1a3c993cc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e3b9c01eed3c9c09", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=//evil.com/phish (scripts/edge-case-tests.js:131)"}, "properties": {"repobilityId": "c2a7355c67d36ea8", "scanner": "scanner-primary", "fingerprint": "e3b9c01eed3c9c09", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7fdc32e4b26191e6", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl=https://evil.com (scripts/edge-case-tests.js:137)"}, "properties": {"repobilityId": "7800049ed0dce231", "scanner": "scanner-primary", "fingerprint": "7fdc32e4b26191e6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4866d1af9a6863e0", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid?returnUrl= (scripts/edge-case-tests.js:143)"}, "properties": {"repobilityId": "3e5187a835ee3608", "scanner": "scanner-primary", "fingerprint": "4866d1af9a6863e0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f81864b3cb1be98b", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid (scripts/edge-case-tests.js:149)"}, "properties": {"repobilityId": "dd24540aa867ee64", "scanner": "scanner-primary", "fingerprint": "f81864b3cb1be98b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b7e4a8940e098297", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:4000/api/auth/orcid/callback?code=test&state=test (scripts/edge-case-tests.js:157)"}, "properties": {"repobilityId": "17432f059f23deb6", "scanner": "scanner-primary", "fingerprint": "b7e4a8940e098297", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-add90e96cd21a6da", "level": "error", "message": {"text": "Dangling fetch: POST /api/questionnaires/sync (public/service-worker.js:173)"}, "properties": {"repobilityId": "f0a5a5505eee099d", "scanner": "scanner-primary", "fingerprint": "add90e96cd21a6da", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6d40e79002b58924", "level": "error", "message": {"text": "Dangling fetch: POST /api/studies/test-id/grid (__tests__/phase-6.85-integration.test.tsx:253)"}, "properties": {"repobilityId": "bc7abf586f40d933", "scanner": "scanner-primary", "fingerprint": "6d40e79002b58924", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b5cb037fdfd49fe9", "level": "error", "message": {"text": "Dangling fetch: POST /api/studies/test-id/stimuli (__tests__/phase-6.85-integration.test.tsx:288)"}, "properties": {"repobilityId": "c5268693b772f206", "scanner": "scanner-primary", "fingerprint": "b5cb037fdfd49fe9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2c5172f40e10ad91", "level": "error", "message": {"text": "Dangling fetch: POST /api/participant-flow/save (frontend/__tests__/e2e/participant-flow.spec.ts:413)"}, "properties": {"repobilityId": "265fa707a6e6ad19", "scanner": "scanner-primary", "fingerprint": "2c5172f40e10ad91", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b198c9f9d7c70cbc", "level": "error", "message": {"text": "Dangling fetch: POST /api/questionnaires/sync (frontend/components/ServiceWorkerProvider.tsx:295)"}, "properties": {"repobilityId": "308f171f5f8b8675", "scanner": "scanner-primary", "fingerprint": "b198c9f9d7c70cbc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8e0dcc681b4ff036", "level": "error", "message": {"text": "Dangling fetch: PUT /api/upload/image (frontend/components/editors/InlineImageUpload.tsx:147)"}, "properties": {"repobilityId": "4576ccae270dd875", "scanner": "scanner-primary", "fingerprint": "8e0dcc681b4ff036", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6a07fd2badb03e4e", "level": "error", "message": {"text": "Dangling fetch: PUT /api/upload/image (frontend/components/editors/RichTextEditorV2.tsx:115)"}, "properties": {"repobilityId": "b9c66e5744651ba7", "scanner": "scanner-primary", "fingerprint": "6a07fd2badb03e4e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-726ccff2af9eb50f", "level": "error", "message": {"text": "Dangling fetch: GET /api/studies/available (frontend/components/participant/PreScreening.tsx:426)"}, "properties": {"repobilityId": "5f1180a1db198ec5", "scanner": "scanner-primary", "fingerprint": "726ccff2af9eb50f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7513ae0c8ee8045e", "level": "error", "message": {"text": "Dangling fetch: POST /api/upload/signature (frontend/components/study-creation/ResearcherSignature.tsx:50)"}, "properties": {"repobilityId": "02fb6b5558ea5f69", "scanner": "scanner-primary", "fingerprint": "7513ae0c8ee8045e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b0c595f05f8bbcab", "level": "error", "message": {"text": "Dangling fetch: POST /api/upload/signature (frontend/components/study-creation/ResearcherSignature.tsx:102)"}, "properties": {"repobilityId": "6b9008d9ba500575", "scanner": "scanner-primary", "fingerprint": "b0c595f05f8bbcab", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d89e66672a7ebd63", "level": "error", "message": {"text": "Dangling fetch: POST /api/upload/signature (frontend/components/study-creation/ResearcherSignature.tsx:132)"}, "properties": {"repobilityId": "b13125b05581cce7", "scanner": "scanner-primary", "fingerprint": "d89e66672a7ebd63", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b4b4438ae0f8c504", "level": "error", "message": {"text": "Dangling fetch: GET /api/ai/monitoring/metrics?range=${timeRange} (frontend/components/ai/AIUsageDashboard.tsx:89)"}, "properties": {"repobilityId": "090e3bde528f517d", "scanner": "scanner-primary", "fingerprint": "b4b4438ae0f8c504", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bc1c531b2fc311c2", "level": "error", "message": {"text": "Dangling fetch: GET /api/ai/monitoring/usage (frontend/components/ai/AIUsageDashboard.tsx:101)"}, "properties": {"repobilityId": "1654ae034cbaf291", "scanner": "scanner-primary", "fingerprint": "bc1c531b2fc311c2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f1a7e89f2e708afd", "level": "error", "message": {"text": "Dangling fetch: POST /api/ai/grid (frontend/components/ai/GridDesignAssistant.tsx:61)"}, "properties": {"repobilityId": "3bde78d3145b9130", "scanner": "scanner-primary", "fingerprint": "f1a7e89f2e708afd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7ce07bfdf5e84f13", "level": "error", "message": {"text": "Dangling fetch: POST /api/studies/${studyId}/grid (frontend/components/grid/InteractiveGridBuilder.tsx:253)"}, "properties": {"repobilityId": "2bcaec7e9c6e43f4", "scanner": "scanner-primary", "fingerprint": "7ce07bfdf5e84f13", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2512a20007a4dcb1", "level": "error", "message": {"text": "Dangling fetch: POST /api/studies/${studyId}/stimuli (frontend/components/stimuli/StimuliUploadSystemV3.tsx:166)"}, "properties": {"repobilityId": "1826b06cc5a099d1", "scanner": "scanner-primary", "fingerprint": "2512a20007a4dcb1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e539582297a4741e", "level": "error", "message": {"text": "Dangling fetch: POST /api/studies/${studyId}/stimuli (frontend/components/stimuli/StimuliUploadSystemV4.tsx:182)"}, "properties": {"repobilityId": "58b38a0d472f43ee", "scanner": "scanner-primary", "fingerprint": "e539582297a4741e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0561b784a1916d71", "level": "error", "message": {"text": "Dangling fetch: POST /api/studies/${studyId}/stimuli (frontend/components/stimuli/StimuliUploadSystemV2.tsx:238)"}, "properties": {"repobilityId": "9bf4bfd688bc41ea", "scanner": "scanner-primary", "fingerprint": "0561b784a1916d71", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-79cd002257013db5", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/studies/${studyId}/stimuli?stimulusId=${id} (frontend/components/stimuli/StimuliUploadSystemV2.tsx:265)"}, "properties": {"repobilityId": "5aba4d784ed3936f", "scanner": "scanner-primary", "fingerprint": "79cd002257013db5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3cf88960b8d59509", "level": "error", "message": {"text": "Dangling fetch: POST /api/studies/${studyId}/stimuli (frontend/components/stimuli/StimuliUploadSystem.tsx:138)"}, "properties": {"repobilityId": "1a786c939497b3da", "scanner": "scanner-primary", "fingerprint": "3cf88960b8d59509", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7bfdfcc40237f7bd", "level": "error", "message": {"text": "Dangling fetch: POST /api/studies/${studyId}/stimuli (frontend/components/stimuli/StimuliUploadSystem.tsx:263)"}, "properties": {"repobilityId": "2cdbd4170575f8e1", "scanner": "scanner-primary", "fingerprint": "7bfdfcc40237f7bd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2205e0ddc630f142", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/studies/${studyId}/stimuli?stimulusId=${id} (frontend/components/stimuli/StimuliUploadSystem.tsx:285)"}, "properties": {"repobilityId": "476b094be8ec81f8", "scanner": "scanner-primary", "fingerprint": "2205e0ddc630f142", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-efebd223918d3996", "level": "error", "message": {"text": "Dangling fetch: GET /home (frontend/app/auth/login/page.tsx:136)"}, "properties": {"repobilityId": "b1a061ed9b79e647", "scanner": "scanner-primary", "fingerprint": "efebd223918d3996", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d75e6c937777b79c", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/resend-verification (frontend/app/auth/verify-email/page.tsx:89)"}, "properties": {"repobilityId": "00dfc2ebe63dfdac", "scanner": "scanner-primary", "fingerprint": "d75e6c937777b79c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-34a1f80d4aea9da8", "level": "error", "message": {"text": "Dangling fetch: POST /api/studies (frontend/app/api/studies/route.ts:30)"}, "properties": {"repobilityId": "09447fc01fb1e6e3", "scanner": "scanner-primary", "fingerprint": "34a1f80d4aea9da8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dfb13136078b9a5a", "level": "error", "message": {"text": "Dangling fetch: GET /api/participant/studies (frontend/app/(participant)/my-studies/page.tsx:43)"}, "properties": {"repobilityId": "f6c8bd0650c2a893", "scanner": "scanner-primary", "fingerprint": "dfb13136078b9a5a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bbf9937f5b39879e", "level": "error", "message": {"text": "Dangling fetch: POST /api/analysis/upload (frontend/app/(researcher)/analysis/q-methodology/hooks/useQAnalysis.ts:172)"}, "properties": {"repobilityId": "d25ecafa7d5b56b8", "scanner": "scanner-primary", "fingerprint": "bbf9937f5b39879e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ad229651bd33904f", "level": "error", "message": {"text": "Dangling fetch: GET /api/analysis/export?format=${format} (frontend/app/(researcher)/analysis/q-methodology/hooks/useQAnalysis.ts:310)"}, "properties": {"repobilityId": "47236c577d3db3d8", "scanner": "scanner-primary", "fingerprint": "ad229651bd33904f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ad3862d8fa8278f5", "level": "error", "message": {"text": "Dangling fetch: POST /api/studies/${studyMetadata.id}/stimuli (frontend/lib/stores/study-builder-store.ts:301)"}, "properties": {"repobilityId": "e2c66fb32d3057e5", "scanner": "scanner-primary", "fingerprint": "ad3862d8fa8278f5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dc2a2ece41cdeca7", "level": "error", "message": {"text": "Dangling fetch: POST /api/studies/${studyMetadata.id}/grid (frontend/lib/stores/study-builder-store.ts:410)"}, "properties": {"repobilityId": "ec5f1284f247ff2a", "scanner": "scanner-primary", "fingerprint": "dc2a2ece41cdeca7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-595b290f5a19d73e", "level": "error", "message": {"text": "Dangling fetch: GET /api/studies/${studyId}/grid (frontend/lib/stores/study-builder-store.ts:450)"}, "properties": {"repobilityId": "ba3f641747fa61ba", "scanner": "scanner-primary", "fingerprint": "595b290f5a19d73e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a08ab8cbb517e194", "level": "error", "message": {"text": "Dangling fetch: GET /api/data (frontend/lib/utils/retry.ts:249)"}, "properties": {"repobilityId": "99a19cf819c9f01f", "scanner": "scanner-primary", "fingerprint": "a08ab8cbb517e194", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-63c2c73779d2d0e3", "level": "error", "message": {"text": "Dangling fetch: GET /api/... (frontend/lib/services/hub-api.service.ts:10)"}, "properties": {"repobilityId": "1d1ca2c3d500d90a", "scanner": "scanner-primary", "fingerprint": "63c2c73779d2d0e3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-55b22ff4b3aef1d5", "level": "error", "message": {"text": "Dangling fetch: POST /api/analytics/performance (frontend/hooks/use-performance-monitor.ts:242)"}, "properties": {"repobilityId": "23ccad65a0e3a410", "scanner": "scanner-primary", "fingerprint": "55b22ff4b3aef1d5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7869d0de58c607c2", "level": "error", "message": {"text": "Dangling fetch: POST /api/literature/themes/extract (frontend/e2e/jobs-ring.spec.ts:100)"}, "properties": {"repobilityId": "61ef7ef85105d5d7", "scanner": "scanner-primary", "fingerprint": "7869d0de58c607c2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-36772d51d735ad18", "level": "error", "message": {"text": "Dangling fetch: POST http://localhost:4000/api/auth/login (backend/test-auth-api.ts:17)"}, "properties": {"repobilityId": "be18d457161188e7", "scanner": "scanner-primary", "fingerprint": "36772d51d735ad18", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-e1b5c499aaaf393e", "level": "error", "message": {"text": "Dangling fetch: POST http://localhost:4000/api/auth/login (backend/test-auth-api.ts:63)"}, "properties": {"repobilityId": "4e8d3a8d92799fcb", "scanner": "scanner-primary", "fingerprint": "e1b5c499aaaf393e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-838e669f4399abab", "level": "error", "message": {"text": "Dangling fetch: POST https://sandbox.orcid.org/oauth/token (backend/scripts/refresh-orcid-token.ts:179)"}, "properties": {"repobilityId": "690e7d4cfcccba3e", "scanner": "scanner-primary", "fingerprint": "838e669f4399abab", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bcbc201f6873f66c", "level": "error", "message": {"text": "Dangling fetch: GET https://api.semanticscholar.org/graph/v1/paper/search (backend/scripts/test-source-limits.ts:48)"}, "properties": {"repobilityId": "233adc7a08ea17d4", "scanner": "scanner-primary", "fingerprint": "bcbc201f6873f66c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-18bb708bac7aa18d", "level": "error", "message": {"text": "Dangling fetch: GET https://api.openalex.org/works (backend/scripts/test-source-limits.ts:99)"}, "properties": {"repobilityId": "48faa0c220826c1b", "scanner": "scanner-primary", "fingerprint": "18bb708bac7aa18d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-ebcdc0671cb24874", "level": "error", "message": {"text": "Dangling fetch: GET https://api.crossref.org/works (backend/scripts/test-source-limits.ts:140)"}, "properties": {"repobilityId": "29c23665e6da0a91", "scanner": "scanner-primary", "fingerprint": "ebcdc0671cb24874", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-5c4ea6ef385bda3c", "level": "error", "message": {"text": "Dangling fetch: GET https://export.arxiv.org/api/query (backend/scripts/test-source-limits.ts:186)"}, "properties": {"repobilityId": "cead2035bf552475", "scanner": "scanner-primary", "fingerprint": "5c4ea6ef385bda3c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-95acc8c230488f13", "level": "error", "message": {"text": "Dangling fetch: GET https://api.ies.ed.gov/eric/ (backend/scripts/test-source-limits.ts:242)"}, "properties": {"repobilityId": "23325c5cbee41f6b", "scanner": "scanner-primary", "fingerprint": "95acc8c230488f13", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-55aa3e575f0eada2", "level": "error", "message": {"text": "Dangling fetch: GET https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi (backend/scripts/test-source-limits.ts:283)"}, "properties": {"repobilityId": "cd0cc4c2c48e6c5d", "scanner": "scanner-primary", "fingerprint": "55aa3e575f0eada2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-a3cd4f7c055d1b11", "level": "error", "message": {"text": "Dangling fetch: GET https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi (backend/scripts/test-source-limits.ts:301)"}, "properties": {"repobilityId": "73cc1773dad3b9aa", "scanner": "scanner-primary", "fingerprint": "a3cd4f7c055d1b11", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-ae7cc8dfd77b79fe", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost:8070/api/isalive (backend/scripts/test-grobid-extraction-e2e.ts:278)"}, "properties": {"repobilityId": "75edaedaa218138f", "scanner": "scanner-primary", "fingerprint": "ae7cc8dfd77b79fe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-ca48a10d1b58325c", "level": "error", "message": {"text": "Dangling fetch: GET https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi (backend/scripts/test-source-balance-e2e.ts:57)"}, "properties": {"repobilityId": "a5b51f847d25e3ee", "scanner": "scanner-primary", "fingerprint": "ca48a10d1b58325c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-97de2d54deef5d74", "level": "error", "message": {"text": "Dangling fetch: GET https://api.openalex.org/works (backend/scripts/test-source-balance-e2e.ts:70)"}, "properties": {"repobilityId": "b18691bbf2690b85", "scanner": "scanner-primary", "fingerprint": "97de2d54deef5d74", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-77e7de1a5e50dc38", "level": "error", "message": {"text": "Dangling fetch: GET https://api.crossref.org/works (backend/scripts/test-source-balance-e2e.ts:80)"}, "properties": {"repobilityId": "2fd75794b9c04287", "scanner": "scanner-primary", "fingerprint": "77e7de1a5e50dc38", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-9b74f8b60e171660", "level": "error", "message": {"text": "Dangling fetch: GET https://export.arxiv.org/api/query (backend/scripts/test-source-balance-e2e.ts:93)"}, "properties": {"repobilityId": "ac9fd60d0caa3f82", "scanner": "scanner-primary", "fingerprint": "9b74f8b60e171660", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-c8b8067f93e1e56b", "level": "error", "message": {"text": "Dangling fetch: GET https://api.semanticscholar.org/graph/v1/paper/search (backend/scripts/test-source-balance-e2e.ts:110)"}, "properties": {"repobilityId": "26d570b50619a03c", "scanner": "scanner-primary", "fingerprint": "c8b8067f93e1e56b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-4ddda579511553b3", "level": "error", "message": {"text": "Dangling fetch: GET https://api.ies.ed.gov/eric/ (backend/scripts/test-source-balance-e2e.ts:123)"}, "properties": {"repobilityId": "7ee89e812d6c969c", "scanner": "scanner-primary", "fingerprint": "4ddda579511553b3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-1296fbf48aa0cb71", "level": "error", "message": {"text": "Dangling fetch: GET https://api.core.ac.uk/v3/search/works (backend/scripts/test-source-balance-e2e.ts:136)"}, "properties": {"repobilityId": "9001af546acc5938", "scanner": "scanner-primary", "fingerprint": "1296fbf48aa0cb71", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-96aeb3ad9078b641", "level": "error", "message": {"text": "Dangling fetch: POST https://api.sandbox.orcid.org/v3.0/${user.orcidId}/work (backend/scripts/add-orcid-publications.ts:151)"}, "properties": {"repobilityId": "36d4dbadaac811fe", "scanner": "scanner-primary", "fingerprint": "96aeb3ad9078b641", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0e8063bf43b6727b", "level": "error", "message": {"text": "Dangling fetch: GET https://pub.orcid.org/v3.0/${user.orcidId}/works (backend/scripts/add-orcid-publications.ts:179)"}, "properties": {"repobilityId": "0e4df553cbe837c7", "scanner": "scanner-primary", "fingerprint": "0e8063bf43b6727b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-09ab0c88a8f06a41", "level": "error", "message": {"text": "Dangling fetch: POST https://api.sandbox.orcid.org/v3.0/${orcidId}/work (backend/scripts/check-orcid-user.ts:105)"}, "properties": {"repobilityId": "21998536fe1d116c", "scanner": "scanner-primary", "fingerprint": "09ab0c88a8f06a41", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-282e983d03e379b5", "level": "error", "message": {"text": "Dangling fetch: POST http://localhost:4000/api/literature/search/public (backend/scripts/test-search-pipeline-e2e.ts:50)"}, "properties": {"repobilityId": "1bdabf591c2a0d97", "scanner": "scanner-primary", "fingerprint": "282e983d03e379b5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-6fdb65dbfb90c72b", "level": "error", "message": {"text": "Dangling fetch: GET /api/user (backend/src/modules/literature/interfaces/result.interface.ts:334)"}, "properties": {"repobilityId": "7b6e5c4f571c11b4", "scanner": "scanner-primary", "fingerprint": "6fdb65dbfb90c72b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e2f223db19657c8d", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (backend/src/modules/literature/services/theme-to-survey-item.service.ts:444)"}, "properties": {"repobilityId": "893f4be2918386eb", "scanner": "scanner-primary", "fingerprint": "e2f223db19657c8d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-ca34be097a456960", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (backend/src/modules/literature/services/theme-to-survey-item.service.ts:515)"}, "properties": {"repobilityId": "224662ccb0e5d0e4", "scanner": "scanner-primary", "fingerprint": "ca34be097a456960", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-fe336a6faabce548", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (backend/src/modules/literature/services/theme-to-survey-item.service.ts:580)"}, "properties": {"repobilityId": "23aecc7513cd22b2", "scanner": "scanner-primary", "fingerprint": "fe336a6faabce548", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-e01bea04e764b451", "level": "note", "message": {"text": "Unused endpoint: GET /${name}/:id"}, "properties": {"repobilityId": "90eba570ab87f79d", "scanner": "scanner-primary", "fingerprint": "e01bea04e764b451", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2b2dfa2392b98b1c", "level": "note", "message": {"text": "Unused endpoint: POST /reports/export"}, "properties": {"repobilityId": "606e7ac3e287e74b", "scanner": "scanner-primary", "fingerprint": "2b2dfa2392b98b1c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1818482aa73c1d31", "level": "note", "message": {"text": "Unused endpoint: POST /literature/themes/merge"}, "properties": {"repobilityId": "cdfc0c210cc255ab", "scanner": "scanner-primary", "fingerprint": "1818482aa73c1d31", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-18b069b4ab5c6158", "level": "note", "message": {"text": "Unused endpoint: POST /literature/themes/split"}, "properties": {"repobilityId": "df17ac6c8577907c", "scanner": "scanner-primary", "fingerprint": "18b069b4ab5c6158", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d5313efb01c417c7", "level": "note", "message": {"text": "Unused endpoint: POST /auth/orcid/unlink"}, "properties": {"repobilityId": "b557dba854ea03c5", "scanner": "scanner-primary", "fingerprint": "d5313efb01c417c7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d9a17e63897954ed", "level": "note", "message": {"text": "Unused endpoint: POST /literature/gap-analysis/refine"}, "properties": {"repobilityId": "9f200b65fe226103", "scanner": "scanner-primary", "fingerprint": "d9a17e63897954ed", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4c0648c95fed1c47", "level": "note", "message": {"text": "Unused endpoint: POST /literature/gap-analysis/validate"}, "properties": {"repobilityId": "bdafc1985f9220da", "scanner": "scanner-primary", "fingerprint": "4c0648c95fed1c47", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d20ce244d16bac09", "level": "note", "message": {"text": "Unused endpoint: POST /literature/gap-analysis/validate/report"}, "properties": {"repobilityId": "976080026433cfbc", "scanner": "scanner-primary", "fingerprint": "d20ce244d16bac09", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-99346b1bdf20e612", "level": "note", "message": {"text": "Unused endpoint: POST /literature/gap-analysis/enrich"}, "properties": {"repobilityId": "e070cff3babf26ee", "scanner": "scanner-primary", "fingerprint": "99346b1bdf20e612", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5473d14dbed680b0", "level": "note", "message": {"text": "Unused endpoint: GET /literature/citation-validation/review-queue"}, "properties": {"repobilityId": "ea4d4e2d3f34db3e", "scanner": "scanner-primary", "fingerprint": "5473d14dbed680b0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0687765e075bb4d9", "level": "note", "message": {"text": "Unused endpoint: POST /reports/preview"}, "properties": {"repobilityId": "714197c42e281e08", "scanner": "scanner-primary", "fingerprint": "0687765e075bb4d9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b64bdbb62405a3b8", "level": "note", "message": {"text": "Unused endpoint: GET /analysis/${studyId}/results"}, "properties": {"repobilityId": "d026475901eab92e", "scanner": "scanner-primary", "fingerprint": "b64bdbb62405a3b8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b36892106ecdc9aa", "level": "note", "message": {"text": "Unused endpoint: POST /auth/refresh"}, "properties": {"repobilityId": "4011d34903287715", "scanner": "scanner-primary", "fingerprint": "b36892106ecdc9aa", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-51bed5c4f0b81714", "level": "note", "message": {"text": "Unused endpoint: POST /participant/session/start"}, "properties": {"repobilityId": "deb135039728e66e", "scanner": "scanner-primary", "fingerprint": "51bed5c4f0b81714", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2e8133d88b2c5214", "level": "note", "message": {"text": "Unused endpoint: POST /repository/index"}, "properties": {"repobilityId": "3fa3a21aaa6e87d5", "scanner": "scanner-primary", "fingerprint": "2e8133d88b2c5214", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c3b3558bbe215ac6", "level": "note", "message": {"text": "Unused endpoint: GET /repository/facets"}, "properties": {"repobilityId": "388cae5b79354222", "scanner": "scanner-primary", "fingerprint": "c3b3558bbe215ac6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c5ce8b81ca4bf014", "level": "note", "message": {"text": "Unused endpoint: GET /repository/stats"}, "properties": {"repobilityId": "a584290fb64404c3", "scanner": "scanner-primary", "fingerprint": "c5ce8b81ca4bf014", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d187fbe508368e0c", "level": "note", "message": {"text": "Unused endpoint: DELETE /repository/search-history"}, "properties": {"repobilityId": "be648cfe9fa53944", "scanner": "scanner-primary", "fingerprint": "d187fbe508368e0c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4585c350da9e880d", "level": "note", "message": {"text": "Unused endpoint: POST /auth/change-password"}, "properties": {"repobilityId": "a33d7bf367a9c9da", "scanner": "scanner-primary", "fingerprint": "4585c350da9e880d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-deb8df763a50c73a", "level": "note", "message": {"text": "Unused endpoint: POST /auth/reset-password"}, "properties": {"repobilityId": "be425cf749eff73b", "scanner": "scanner-primary", "fingerprint": "deb8df763a50c73a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-59cb6e2c914d4369", "level": "note", "message": {"text": "Unused endpoint: POST /auth/2fa/enable"}, "properties": {"repobilityId": "800354b33619865d", "scanner": "scanner-primary", "fingerprint": "59cb6e2c914d4369", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4d22329d46e296f4", "level": "note", "message": {"text": "Unused endpoint: DELETE /auth/2fa/disable"}, "properties": {"repobilityId": "028b4a4cb34660b1", "scanner": "scanner-primary", "fingerprint": "4d22329d46e296f4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-08103989631e8858", "level": "note", "message": {"text": "Unused endpoint: POST /literature/audit/health"}, "properties": {"repobilityId": "d575f225ca2f1138", "scanner": "scanner-primary", "fingerprint": "08103989631e8858", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cd9f6e425704c7d4", "level": "note", "message": {"text": "Unused endpoint: POST /research-design/refine-question"}, "properties": {"repobilityId": "ea2f047a8b12911a", "scanner": "scanner-primary", "fingerprint": "cd9f6e425704c7d4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-77cbb4230a91ed63", "level": "note", "message": {"text": "Unused endpoint: POST /research-design/generate-hypotheses"}, "properties": {"repobilityId": "16bde5b4f7ba2499", "scanner": "scanner-primary", "fingerprint": "77cbb4230a91ed63", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a329598b05279b43", "level": "note", "message": {"text": "Unused endpoint: POST /research-design/build-theory-diagram"}, "properties": {"repobilityId": "cdf5127f4adf6b1d", "scanner": "scanner-primary", "fingerprint": "a329598b05279b43", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ff95b386c122061c", "level": "note", "message": {"text": "Unused endpoint: POST /research-design/recommend-methodology"}, "properties": {"repobilityId": "5c76f56cd928f1f4", "scanner": "scanner-primary", "fingerprint": "ff95b386c122061c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1bcbe25560251481", "level": "note", "message": {"text": "Unused endpoint: POST /literature/jobs/latency-beacon"}, "properties": {"repobilityId": "b338060fa44e3e47", "scanner": "scanner-primary", "fingerprint": "1bcbe25560251481", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b81678fd70a77f96", "level": "note", "message": {"text": "Unused endpoint: POST /observability/fe-metrics"}, "properties": {"repobilityId": "5dd94f27597c7105", "scanner": "scanner-primary", "fingerprint": "b81678fd70a77f96", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f40172acc881bffa", "level": "note", "message": {"text": "Unused endpoint: POST /literature/save"}, "properties": {"repobilityId": "32e50e538df83e08", "scanner": "scanner-primary", "fingerprint": "f40172acc881bffa", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1e31e470a0e31c8b", "level": "note", "message": {"text": "Unused endpoint: POST /literature/papers/bulk-save"}, "properties": {"repobilityId": "9588bf61fba4fe30", "scanner": "scanner-primary", "fingerprint": "1e31e470a0e31c8b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-faea945148b89f9a", "level": "note", "message": {"text": "Unused endpoint: GET /literature/library"}, "properties": {"repobilityId": "9e2bc334fcec64ef", "scanner": "scanner-primary", "fingerprint": "faea945148b89f9a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3d85024d69587034", "level": "note", "message": {"text": "Unused endpoint: DELETE /literature/papers/trash/empty"}, "properties": {"repobilityId": "e29df7e9f5297b3d", "scanner": "scanner-primary", "fingerprint": "3d85024d69587034", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1ffb212b92448a2a", "level": "note", "message": {"text": "Unused endpoint: GET /literature/papers/trash"}, "properties": {"repobilityId": "a780e80b553d4078", "scanner": "scanner-primary", "fingerprint": "1ffb212b92448a2a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9a9f8c128f32ae60", "level": "note", "message": {"text": "Unused endpoint: POST /literature/gap-analysis/analyze-and-score"}, "properties": {"repobilityId": "f33622bda986ebb3", "scanner": "scanner-primary", "fingerprint": "9a9f8c128f32ae60", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cab75b474d33d9c0", "level": "note", "message": {"text": "Unused endpoint: POST /q-sort/optimize"}, "properties": {"repobilityId": "6de3f4f1afa84626", "scanner": "scanner-primary", "fingerprint": "cab75b474d33d9c0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a39885e0b750a915", "level": "note", "message": {"text": "Unused endpoint: GET /literature/alternative"}, "properties": {"repobilityId": "b1fb794d8f3daf4b", "scanner": "scanner-primary", "fingerprint": "a39885e0b750a915", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f5f0ff778bda066d", "level": "note", "message": {"text": "Unused endpoint: POST /literature/youtube/channel/info"}, "properties": {"repobilityId": "b595965c4ba70a8c", "scanner": "scanner-primary", "fingerprint": "f5f0ff778bda066d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b69963ab2f0a97a6", "level": "note", "message": {"text": "Unused endpoint: POST /literature/youtube/channel/videos"}, "properties": {"repobilityId": "8e168ed4d3710bc5", "scanner": "scanner-primary", "fingerprint": "b69963ab2f0a97a6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e72812a0ef28284b", "level": "note", "message": {"text": "Unused endpoint: POST /literature/papers/refresh-metadata"}, "properties": {"repobilityId": "a7c74851b0dbd6ce", "scanner": "scanner-primary", "fingerprint": "e72812a0ef28284b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-be2268c74d5e8c2f", "level": "note", "message": {"text": "Unused endpoint: POST /literature/gap-analysis/structural-analyze"}, "properties": {"repobilityId": "9ed6764103c94c96", "scanner": "scanner-primary", "fingerprint": "be2268c74d5e8c2f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5d75a8ead84b9246", "level": "note", "message": {"text": "Unused endpoint: GET /literature/gap-analysis/decisions"}, "properties": {"repobilityId": "7f5b26372fe7ff3a", "scanner": "scanner-primary", "fingerprint": "5d75a8ead84b9246", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-74b10c20177c7c05", "level": "note", "message": {"text": "Unused endpoint: GET /literature/gap-analysis/evolution"}, "properties": {"repobilityId": "0be8f522fb48be48", "scanner": "scanner-primary", "fingerprint": "74b10c20177c7c05", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dff15094c5ac210e", "level": "note", "message": {"text": "Unused endpoint: POST /literature/gap-analysis/brief"}, "properties": {"repobilityId": "10cf3c53350555e1", "scanner": "scanner-primary", "fingerprint": "dff15094c5ac210e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d66d4544942915d6", "level": "note", "message": {"text": "Unused endpoint: POST /literature/gap-analysis/briefs-bundle"}, "properties": {"repobilityId": "e88d86681c4c8f92", "scanner": "scanner-primary", "fingerprint": "d66d4544942915d6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f34ea2bbefa929d3", "level": "note", "message": {"text": "Unused endpoint: POST /literature/gap-analysis/research-questions"}, "properties": {"repobilityId": "7c5e4fb2ac66245f", "scanner": "scanner-primary", "fingerprint": "f34ea2bbefa929d3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e44a4df64159bc4f", "level": "note", "message": {"text": "Unused endpoint: POST /literature/gap-analysis/narrative"}, "properties": {"repobilityId": "e76a7428747d6375", "scanner": "scanner-primary", "fingerprint": "e44a4df64159bc4f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3075b51888278f3c", "level": "note", "message": {"text": "Unused endpoint: POST /literature/gap-analysis/hypotheses"}, "properties": {"repobilityId": "2c78bb2ca2c80213", "scanner": "scanner-primary", "fingerprint": "3075b51888278f3c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-50fba15edb1945e4", "level": "note", "message": {"text": "Unused endpoint: POST /literature/gap-analysis/export/grant-section"}, "properties": {"repobilityId": "01b97c11dd43e8e1", "scanner": "scanner-primary", "fingerprint": "50fba15edb1945e4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b427324275b05be5", "level": "note", "message": {"text": "Unused endpoint: POST /literature/gap-analysis/keywords"}, "properties": {"repobilityId": "3f5e793435f28bf6", "scanner": "scanner-primary", "fingerprint": "b427324275b05be5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}