{"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-ab3a3f9ae4eaf221", "name": "Possibly dead Python function: initialize", "shortDescription": {"text": "Possibly dead Python function: initialize"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-88de5e5d2950374b", "name": "Possibly dead Python function: visit_Import", "shortDescription": {"text": "Possibly dead Python function: visit_Import"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5a77b35133227b7d", "name": "Possibly dead Python function: visit_ImportFrom", "shortDescription": {"text": "Possibly dead Python function: visit_ImportFrom"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49680055c2cde1ce", "name": "Possibly dead Python function: sort_key", "shortDescription": {"text": "Possibly dead Python function: sort_key"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a3639a2fe1acca67", "name": "Possibly dead Python function: remove_rx_tap", "shortDescription": {"text": "Possibly dead Python function: remove_rx_tap"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c587a3188d0a1820", "name": "Possibly dead Python function: ensure_startup_ready", "shortDescription": {"text": "Possibly dead Python function: ensure_startup_ready"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b238ccd07a484c21", "name": "Possibly dead Python function: state_is_fresh", "shortDescription": {"text": "Possibly dead Python function: state_is_fresh"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5c3b5cc2292d0980", "name": "Possibly dead Python function: query_safe", "shortDescription": {"text": "Possibly dead Python function: query_safe"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a60a77d6cc954405", "name": "Possibly dead Python function: format_stats", "shortDescription": {"text": "Possibly dead Python function: format_stats"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a3da7cdd928918ab", "name": "Stray `console.log` in TS/JS \u2014 frontend/src/lib/audio/tx-mic.ts:133", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/lib/audio/tx-mic.ts: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-513751fa5a9632d0", "name": "Stray `console.log` in TS/JS \u2014 frontend/src/lib/audio/audio-manager.ts:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/lib/audio/audio-manager.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-e80069919fb7b7df", "name": "TODO/FIXME marker in shipping code \u2014 frontend/src/lib/runtime/commands/panel-commands.ts:44", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/lib/runtime/commands/panel-commands.ts:44"}, "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-6045396b99d818e6", "name": "Stray `console.log` in TS/JS \u2014 frontend/src/components-v2/layout/MobileRadioLayout.svelte:234", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/components-v2/layout/MobileRadioLayout.svelte:234"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a182e15d22810277", "name": "Stray `console.log` in TS/JS \u2014 frontend/src/components-v2/wiring/double-click.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/components-v2/wiring/double-click.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-08101e9770c1fb59", "name": "Privileged port 3 in use", "shortDescription": {"text": "Privileged port 3 in use"}, "fullDescription": {"text": "Port 3 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-4a3f3939e1fcb9a1", "name": "Privileged port 6 in use", "shortDescription": {"text": "Privileged port 6 in use"}, "fullDescription": {"text": "Port 6 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-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-aa7106ad626d30bf", "name": "Insecure pattern 'node_child_process' in frontend/scripts/i18n-preview-server.mjs:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in frontend/scripts/i18n-preview-server.mjs: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-d35bb2548b2ca0b9", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components/spectrum/__tests__/BandPlanOverlay.component.t", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components/spectrum/__tests__/BandPlanOverlay.component.test.ts:99"}, "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-e63cc41d9be9aacb", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components/spectrum/__tests__/SpectrumToolbar.component.t", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components/spectrum/__tests__/SpectrumToolbar.component.test.ts:87"}, "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-fa4041d4a0820352", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components/spectrum/__tests__/click-to-tune.test.ts:91", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components/spectrum/__tests__/click-to-tune.test.ts:91"}, "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-9d84c2a48d7f3161", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components/spectrum/__tests__/SpectrumPanel.component.tes", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components/spectrum/__tests__/SpectrumPanel.component.test.ts:191"}, "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-06793f12becf2478", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/lib/Button/__tests__/ControlButton.test.ts:34", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/lib/Button/__tests__/ControlButton.test.ts:34"}, "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-155a7abdeef9e612", "name": "Insecure pattern 'local_storage_auth_token' in frontend/src/lib/transport/http-client.ts:86", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/src/lib/transport/http-client.ts:86"}, "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-5328ce58bb7f38fe", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/layout/__tests__/RadioLayout.test.ts:301", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/layout/__tests__/RadioLayout.test.ts:301"}, "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-5df78bc35812c0f4", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/layout/__tests__/MobileRadioLayout.componen", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/layout/__tests__/MobileRadioLayout.component.svelte.test.ts:179"}, "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-9d2d23b424bfcbb1", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/layout/__tests__/KeyboardHandler.test.ts:70", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/layout/__tests__/KeyboardHandler.test.ts:70"}, "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-0e5e2ae268414386", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/layout/__tests__/top-row-visual-regression.", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/layout/__tests__/top-row-visual-regression.test.ts:198"}, "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-065c60c4c3f9ed0c", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/display/__tests__/FrequencyDisplayInteracti", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/display/__tests__/FrequencyDisplayInteractive.component.svelte.test.ts:82"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1adeff48790c35c8", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/vfo/__tests__/VfoOps.test.ts:108", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/vfo/__tests__/VfoOps.test.ts:108"}, "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-efc2f2a8aafbcd9d", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/vfo/__tests__/VfoPanel.test.ts:154", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/vfo/__tests__/VfoPanel.test.ts:154"}, "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-f824144f08891918", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/RxAudioPanel.test.ts:139", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/RxAudioPanel.test.ts:139"}, "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-94996e8f785aa516", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/DspPanel.component.test.ts", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/DspPanel.component.test.ts:78"}, "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-a79113b8f54904c6", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/CwPanel.component.test.ts:", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/CwPanel.component.test.ts:63"}, "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-7dadf3cfe7ebf845", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/ModePanel.test.ts:57", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/ModePanel.test.ts:57"}, "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-efa713d82c5377c7", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/DspPanel.test.ts:128", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/DspPanel.test.ts:128"}, "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-74467a5209f76503", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/RfFrontEnd.component.test.", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/RfFrontEnd.component.test.ts:85"}, "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-234de9ed5066be39", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/MeterPanel.test.ts:181", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/MeterPanel.test.ts:181"}, "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-705cd84866112287", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/RitXitPanel.test.ts:56", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/RitXitPanel.test.ts:56"}, "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-c1bba74bc729bc0b", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/FilterPanel.test.ts:140", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/FilterPanel.test.ts:140"}, "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-ae3f666083759cfc", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/ModInputTxWarning.test.ts:", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/ModInputTxWarning.test.ts:51"}, "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-699f9f354e7c76bf", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/TxPanel.test.ts:160", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/TxPanel.test.ts:160"}, "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-d3cc2e18a7777aef", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/vfo/__tests__/DualVfoDisplay.test.ts", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/vfo/__tests__/DualVfoDisplay.test.ts:64"}, "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-aec33f51208d2291", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/lcd/__tests__/lcd-availability.test.", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/lcd/__tests__/lcd-availability.test.ts:89"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-25445ccb382051bb", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/controls/__tests__/AttenuatorControl.test.t", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/controls/__tests__/AttenuatorControl.test.ts:24"}, "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-b0f87d5e6cdd4692", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/controls/__tests__/CollapsiblePanel.test.ts", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/controls/__tests__/CollapsiblePanel.test.ts:45"}, "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-dfada5004ba7acc2", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/controls/__tests__/BottomSheet.test.ts:43", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/controls/__tests__/BottomSheet.test.ts:43"}, "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-9fb756b051963730", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/controls/__tests__/PullToRefresh.test.ts:35", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/controls/__tests__/PullToRefresh.test.ts:35"}, "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-1ff6bd10fff3a5a9", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/controls/__tests__/SegmentedButton.test.ts:", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/controls/__tests__/SegmentedButton.test.ts:53"}, "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-5bdef2708d3a31aa", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/controls/__tests__/LanguageSelector.test.ts", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/controls/__tests__/LanguageSelector.test.ts:40"}, "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-9032ff789cbedc9a", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/controls/__tests__/BandSelector.test.ts:80", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/controls/__tests__/BandSelector.test.ts:80"}, "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-805a3adb96a6bdc6", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/controls/value-control/__tests__/ValueContr", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/controls/value-control/__tests__/ValueControl.test.ts:35"}, "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-695a465807bf21d0", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/dialogs/__tests__/SendReportDialog.test.ts:", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/dialogs/__tests__/SendReportDialog.test.ts:97"}, "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-5e624cc49883845d", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/rigplane/web/static.old/index.html:803", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/rigplane/web/static.old/index.html:803"}, "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-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4258abfbf39a21d2", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "dorny/paths-filter@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": "medium", "confidence": 1.0}}, {"id": "scanner-a65ee2bea76c0f1b", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/github-script@v7 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-0763d85002569570", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "astral-sh/setup-uv@v8.1.0 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": "medium", "confidence": 1.0}}, {"id": "scanner-14ce8614dd03f409", "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-99388e8a83e0f093", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "astral-sh/setup-uv@v8.1.0 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": "medium", "confidence": 1.0}}, {"id": "scanner-a53bf972e19b52fd", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "astral-sh/setup-uv@v8.1.0 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": "medium", "confidence": 1.0}}, {"id": "scanner-7ffa33751be3d771", "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-d465f2171932a07c", "name": "Very large file: frontend/tests/e2e/v2-ui-interactive.impl.ts (1454 lines)", "shortDescription": {"text": "Very large file: frontend/tests/e2e/v2-ui-interactive.impl.ts (1454 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-4cf221137c37f540", "name": "Very large file: tests/test_web_server_coverage.py (2835 lines)", "shortDescription": {"text": "Very large file: tests/test_web_server_coverage.py (2835 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-f9e815aee7705e0c", "name": "Very large file: tests/test_cli_coverage.py (1645 lines)", "shortDescription": {"text": "Very large file: tests/test_cli_coverage.py (1645 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-1d668f5fdb3cefec", "name": "Very large file: tests/test_rigctld_handler.py (5268 lines)", "shortDescription": {"text": "Very large file: tests/test_rigctld_handler.py (5268 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-839a1d70b3e846d6", "name": "Very large file: tests/test_commands.py (2520 lines)", "shortDescription": {"text": "Very large file: tests/test_commands.py (2520 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-de347cc62881126d", "name": "Very large file: tests/test_radio_poller_coverage.py (2740 lines)", "shortDescription": {"text": "Very large file: tests/test_radio_poller_coverage.py (2740 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-bf75f6105e6e02d0", "name": "Very large file: tests/test_handlers_coverage.py (2365 lines)", "shortDescription": {"text": "Very large file: tests/test_handlers_coverage.py (2365 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-fc93ea225032e8a6", "name": "Very large file: tests/test_acquisition_scheduler.py (2193 lines)", "shortDescription": {"text": "Very large file: tests/test_acquisition_scheduler.py (2193 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-796d63fb256a3fac", "name": "Very large file: tests/test_ftx1_radio.py (2426 lines)", "shortDescription": {"text": "Very large file: tests/test_ftx1_radio.py (2426 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-141e9cf1b365461b", "name": "Very large file: tests/test_yaesu_cat_observation_adapter.py (1842 lines)", "shortDescription": {"text": "Very large file: tests/test_yaesu_cat_observation_adapter.py (1842 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-ebdcd5e284610663", "name": "Very large file: tests/test_yaesu_cat_poller.py (1546 lines)", "shortDescription": {"text": "Very large file: tests/test_yaesu_cat_poller.py (1546 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-df12c6f6dece8b7f", "name": "Very large file: tests/test_cli.py (1638 lines)", "shortDescription": {"text": "Very large file: tests/test_cli.py (1638 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-3f4a55afa1575789", "name": "Very large file: tests/test_usb_audio_resolve.py (1491 lines)", "shortDescription": {"text": "Very large file: tests/test_usb_audio_resolve.py (1491 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-9368cc52b4107fe4", "name": "Very large file: tests/test_radio_coverage.py (2195 lines)", "shortDescription": {"text": "Very large file: tests/test_radio_coverage.py (2195 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-e1ce22352e98e1ac", "name": "Very large file: tests/test_civ_rx_coverage.py (3204 lines)", "shortDescription": {"text": "Very large file: tests/test_civ_rx_coverage.py (3204 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-b92aca26f2b99965", "name": "Very large file: tests/test_radio.py (2438 lines)", "shortDescription": {"text": "Very large file: tests/test_radio.py (2438 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-1984560c67758600", "name": "Very large file: tests/test_web_server.py (3759 lines)", "shortDescription": {"text": "Very large file: tests/test_web_server.py (3759 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-2a0aa13d0ddb2457", "name": "Very large file: tests/test_rigctld_server.py (1671 lines)", "shortDescription": {"text": "Very large file: tests/test_rigctld_server.py (1671 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-f0ac75db9a7edc32", "name": "Very large file: tests/validation/test_hardware.py (1502 lines)", "shortDescription": {"text": "Very large file: tests/validation/test_hardware.py (1502 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-7829427491e0c5cc", "name": "Very large file: src/rigplane/cli/__init__.py (3829 lines)", "shortDescription": {"text": "Very large file: src/rigplane/cli/__init__.py (3829 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-41d3181f39360f2d", "name": "Very large file: src/rigplane/cli/_validate.py (1304 lines)", "shortDescription": {"text": "Very large file: src/rigplane/cli/_validate.py (1304 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-81ef09512c849f35", "name": "Very large file: src/rigplane/rigctld/handler.py (2454 lines)", "shortDescription": {"text": "Very large file: src/rigplane/rigctld/handler.py (2454 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-85f9e977409bba99", "name": "Very large file: src/rigplane/audio/backend.py (1865 lines)", "shortDescription": {"text": "Very large file: src/rigplane/audio/backend.py (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-0b7e5483c65a6c26", "name": "Very large file: src/rigplane/validation/hardware.py (2056 lines)", "shortDescription": {"text": "Very large file: src/rigplane/validation/hardware.py (2056 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-13407f83697ac1f8", "name": "Very large file: src/rigplane/web/server.py (5053 lines)", "shortDescription": {"text": "Very large file: src/rigplane/web/server.py (5053 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-d74ec9cc5888c189", "name": "Very large file: src/rigplane/web/radio_poller.py (2557 lines)", "shortDescription": {"text": "Very large file: src/rigplane/web/radio_poller.py (2557 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-ba6ced46ba602f53", "name": "Very large file: src/rigplane/web/handlers/control.py (2393 lines)", "shortDescription": {"text": "Very large file: src/rigplane/web/handlers/control.py (2393 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-016590158a74791c", "name": "Very large file: src/rigplane/web/handlers/audio.py (1679 lines)", "shortDescription": {"text": "Very large file: src/rigplane/web/handlers/audio.py (1679 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-3bcb287b82461383", "name": "Very large file: src/rigplane/backends/yaesu_cat/observations.py (1085 lines)", "shortDescription": {"text": "Very large file: src/rigplane/backends/yaesu_cat/observations.py (1085 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-b35a029945775271", "name": "Very large file: src/rigplane/backends/yaesu_cat/radio.py (2711 lines)", "shortDescription": {"text": "Very large file: src/rigplane/backends/yaesu_cat/radio.py (2711 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-28b591c81192b605", "name": "Very large file: src/rigplane/runtime/_civ_rx.py (2817 lines)", "shortDescription": {"text": "Very large file: src/rigplane/runtime/_civ_rx.py (2817 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-4919f06b90716d1b", "name": "Very large file: src/rigplane/runtime/radio.py (4023 lines)", "shortDescription": {"text": "Very large file: src/rigplane/runtime/radio.py (4023 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-87be083b0cce89c1", "name": "Very large file: src/rigplane/core/radio_protocol.py (1666 lines)", "shortDescription": {"text": "Very large file: src/rigplane/core/radio_protocol.py (1666 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-3605437c5d5c1737", "name": "Very large file: src/rigplane/core/acquisition_scheduler.py (1542 lines)", "shortDescription": {"text": "Very large file: src/rigplane/core/acquisition_scheduler.py (1542 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-602d7407959cffaa", "name": "Very large file: src/rigplane/profiles/rig_loader.py (1452 lines)", "shortDescription": {"text": "Very large file: src/rigplane/profiles/rig_loader.py (1452 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-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 340 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 93 placeholder/mock markers across 35 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-cc7de32b0ea20e02", "name": "Agent authority lacks a verifier contract: .claude/commands/next.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/next.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-bcd25ed1b1a1ae83", "name": "Agent authority lacks a verifier contract: .claude/commands/audit-ui.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/audit-ui.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-943782dd706b8e3f", "name": "Network/subprocess call without timeout or try/except \u2014 hatch_build.py:67", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 hatch_build.py:67"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-68965aca589fbe52", "name": "Commented-code block (10 lines) in frontend/vite.config.ts:52", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/vite.config.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-5f9c9a632dfb9e03", "name": "Commented-code block (5 lines) in frontend/eslint.config.js:165", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/eslint.config.js: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-9b8aa6fac9241080", "name": "Commented-code block (8 lines) in frontend/src/main.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/main.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-69fa922316d99c95", "name": "Commented-code block (5 lines) in frontend/src/components/spectrum/__tests__/SpectrumToolbar.component.test.ts:266", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/spectrum/__tests__/SpectrumToolbar.component.test.ts: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-c2249c9c23f3accc", "name": "Commented-code block (6 lines) in frontend/src/lib/drag-reorder.svelte.ts:67", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/lib/drag-reorder.svelte.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-a83cbc81d9d8e91f", "name": "Commented-code block (8 lines) in frontend/src/lib/stores/radio.svelte.ts:143", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/lib/stores/radio.svelte.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-d8b54629d3614511", "name": "Commented-code block (5 lines) in frontend/src/lib/i18n/index.ts:62", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/lib/i18n/index.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-27f03d510822c7bc", "name": "Commented-code block (6 lines) in frontend/src/lib/i18n/__tests__/index.test.ts:33", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/lib/i18n/__tests__/index.test.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-8d183a0c10ce551f", "name": "Commented-code block (5 lines) in frontend/src/lib/i18n/__tests__/pseudo-locale.smoke.test.ts:83", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/lib/i18n/__tests__/pseudo-locale.smoke.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-45fa6ece23d1d5ff", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/api/diagnostics.ts:125", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/api/diagnostics.ts:125"}, "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-6077e12ca4a7e658", "name": "Commented-code block (6 lines) in frontend/src/lib/radio/filter-controls.ts:53", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/lib/radio/filter-controls.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-fcd5f09687e92814", "name": "Commented-code block (5 lines) in frontend/src/lib/audio/rx-player.ts:63", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/lib/audio/rx-player.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-76ca9dde1a611533", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/transport/http-client.ts:97", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/transport/http-client.ts:97"}, "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-f466917b3954b773", "name": "Commented-code block (8 lines) in frontend/src/lib/transport/__tests__/ws-client-store.integration.test.ts:6", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/lib/transport/__tests__/ws-client-store.integration.test.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6835f3110bc48d85", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/runtime/system-controller.ts:48", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/runtime/system-controller.ts:48"}, "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-ac9e6c509c56ffa2", "name": "Commented-code block (5 lines) in frontend/src/lib/runtime/adapters/panel-adapters.ts:149", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/lib/runtime/adapters/panel-adapters.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-ded1350d780a5aee", "name": "Commented-code block (6 lines) in frontend/src/lib/runtime/props/panel-props.ts:215", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/lib/runtime/props/panel-props.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-eb95018ffa3d8ee6", "name": "Commented-code block (5 lines) in frontend/src/components-v2/display/__tests__/FrequencyDisplayInteractive.component.sve", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components-v2/display/__tests__/FrequencyDisplayInteractive.component.svelte.test.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-170f416900c4bdf8", "name": "Commented-code block (5 lines) in frontend/src/components-v2/meters/__tests__/LinearSMeter.test.ts:188", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components-v2/meters/__tests__/LinearSMeter.test.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-6e059728af896bfa", "name": "Commented-code block (7 lines) in frontend/src/components-v2/panels/meter-utils.test.ts:236", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/components-v2/panels/meter-utils.test.ts:236"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d5ca458e2d9a1a87", "name": "Commented-code block (5 lines) in frontend/src/components-v2/panels/meter-utils.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components-v2/panels/meter-utils.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-6cffad22eadd8639", "name": "Commented-code block (6 lines) in frontend/src/components-v2/panels/filter-controls.ts:7", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/components-v2/panels/filter-controls.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-4eb83025a9e86eb7", "name": "Commented-code block (5 lines) in frontend/src/components-v2/panels/__tests__/MetersDockPanel.peakhold.svelte.test.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components-v2/panels/__tests__/MetersDockPanel.peakhold.svelte.test.ts:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-084233ec2d025a16", "name": "Commented-code block (6 lines) in frontend/src/components-v2/wiring/command-bus.ts:71", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/components-v2/wiring/command-bus.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-09680e2c852206f1", "name": "Commented-code block (5 lines) in frontend/src/components-v2/wiring/state-adapter.ts:342", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components-v2/wiring/state-adapter.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-567db6128c73c601", "name": "Commented-code block (5 lines) in frontend/src/components-v2/wiring/__tests__/dsp-nb-depth.test.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components-v2/wiring/__tests__/dsp-nb-depth.test.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-1477aa62362309a4", "name": "Commented-code block (5 lines) in frontend/src/components-v2/wiring/__tests__/dsp-nr-level.test.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components-v2/wiring/__tests__/dsp-nr-level.test.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-4d1521e8f063bba2", "name": "Commented-code block (5 lines) in frontend/src/components-v2/wiring/__tests__/keyboard-wiring.test.ts:130", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components-v2/wiring/__tests__/keyboard-wiring.test.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-6df4200afeb44e55", "name": "Commented-code block (5 lines) in frontend/src/components-v2/dialogs/__tests__/SendReportDialog.test.ts:398", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components-v2/dialogs/__tests__/SendReportDialog.test.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-a9710b85c8195a5c", "name": "Commented-code block (7 lines) in tests/test_web_server_coverage.py:206", "shortDescription": {"text": "Commented-code block (7 lines) in tests/test_web_server_coverage.py: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-f062c38282d6812b", "name": "Commented-code block (5 lines) in tests/test_usb_audio_channel_clamp_mor238.py:78", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_usb_audio_channel_clamp_mor238.py: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-e3453d1f1257ace1", "name": "Legacy-named symbol `test_interpolate_swr_empty_calibrations_uses_legacy` in tests/test_swr_calibration.py:115", "shortDescription": {"text": "Legacy-named symbol `test_interpolate_swr_empty_calibrations_uses_legacy` in tests/test_swr_calibration.py:115"}, "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-b80226f8afd70d2f", "name": "Legacy-named symbol `test_bus_prefers_neutral_surface_over_legacy` in tests/test_audio_bus.py:417", "shortDescription": {"text": "Legacy-named symbol `test_bus_prefers_neutral_surface_over_legacy` in tests/test_audio_bus.py:417"}, "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-194233299a8c3336", "name": "Commented-code block (5 lines) in tests/test_yaesu_web_projection.py:45", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_yaesu_web_projection.py: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-1a5ccf170b247104", "name": "Commented-code block (5 lines) in tests/test_memory_commands.py:193", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_memory_commands.py: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-1795577ca29c469e", "name": "Legacy-named symbol `test_default_schema_is_v2` in tests/test_diagnostics_bundle.py:303", "shortDescription": {"text": "Legacy-named symbol `test_default_schema_is_v2` in tests/test_diagnostics_bundle.py:303"}, "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-0d4277dc903a6187", "name": "Legacy-named symbol `_replay_legacy` in tests/test_web_audio_session_rx.py:225", "shortDescription": {"text": "Legacy-named symbol `_replay_legacy` in tests/test_web_audio_session_rx.py:225"}, "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-b433769589688b6a", "name": "Commented-code block (6 lines) in tests/test_audio_rx_tx_transition.py:377", "shortDescription": {"text": "Commented-code block (6 lines) in tests/test_audio_rx_tx_transition.py: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-36d7106556a1fe94", "name": "Commented-code block (6 lines) in tests/test_rigctld_handler.py:5133", "shortDescription": {"text": "Commented-code block (6 lines) in tests/test_rigctld_handler.py:5133"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1cf5b1b20e3e674f", "name": "Commented-code block (5 lines) in tests/test_pcm_e2e.py:54", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_pcm_e2e.py: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-68263da60b579815", "name": "Commented-code block (6 lines) in tests/test_serial_backend_smoke.py:356", "shortDescription": {"text": "Commented-code block (6 lines) in tests/test_serial_backend_smoke.py: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-b9021713e2aef86d", "name": "Commented-code block (6 lines) in tests/test_civ_rx_short_frame_robustness.py:82", "shortDescription": {"text": "Commented-code block (6 lines) in tests/test_civ_rx_short_frame_robustness.py: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-effb34d8af243d3c", "name": "Commented-code block (7 lines) in tests/test_lifecycle_diagnostics.py:68", "shortDescription": {"text": "Commented-code block (7 lines) in tests/test_lifecycle_diagnostics.py: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-6c9f6078aa372d02", "name": "Commented-code block (8 lines) in tests/test_radio_poller_coverage.py:1464", "shortDescription": {"text": "Commented-code block (8 lines) in tests/test_radio_poller_coverage.py:1464"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ef91937830ba1dac", "name": "Commented-code block (5 lines) in tests/test_handlers_coverage.py:96", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_handlers_coverage.py: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-b354873731672346", "name": "Legacy-named symbol `test_list_devices_returns_copy` in tests/test_audio_backend.py:259", "shortDescription": {"text": "Legacy-named symbol `test_list_devices_returns_copy` in tests/test_audio_backend.py:259"}, "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-e436984a51a3ce4c", "name": "Legacy-named symbol `stale_executor_copy` in tests/test_acquisition_scheduler.py:279", "shortDescription": {"text": "Legacy-named symbol `stale_executor_copy` in tests/test_acquisition_scheduler.py:279"}, "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-3f79dfb553e42f97", "name": "Commented-code block (7 lines) in tests/test_rig_loader.py:845", "shortDescription": {"text": "Commented-code block (7 lines) in tests/test_rig_loader.py:845"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2a231c5e38c41691", "name": "Commented-code block (7 lines) in tests/test_per_receiver_vfo_roundtrip.py:114", "shortDescription": {"text": "Commented-code block (7 lines) in tests/test_per_receiver_vfo_roundtrip.py: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-395919c286837792", "name": "Legacy-named symbol `test_retransmit_loop_cleans_old` in tests/test_transport.py:656", "shortDescription": {"text": "Legacy-named symbol `test_retransmit_loop_cleans_old` in tests/test_transport.py:656"}, "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-33a38a9fd8b929ed", "name": "Commented-code block (5 lines) in tests/test_yaesu_cat_observation_adapter.py:164", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_yaesu_cat_observation_adapter.py: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-94faca8335a4c5de", "name": "Commented-code block (7 lines) in tests/test_icom_receiver_tier.py:311", "shortDescription": {"text": "Commented-code block (7 lines) in tests/test_icom_receiver_tier.py:311"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1019e797555c1a08", "name": "Commented-code block (6 lines) in tests/test_security_headers.py:26", "shortDescription": {"text": "Commented-code block (6 lines) in tests/test_security_headers.py: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-55990a019bae0c19", "name": "Commented-code block (5 lines) in tests/test_usb_audio_resolve.py:518", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_usb_audio_resolve.py:518"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-30fa5cb2715a9ccf", "name": "Commented-code block (5 lines) in tests/test_radio_coverage.py:1465", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_radio_coverage.py:1465"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8208769c176ce939", "name": "Commented-code block (5 lines) in tests/_diagnostics_mock_server.py:24", "shortDescription": {"text": "Commented-code block (5 lines) in tests/_diagnostics_mock_server.py: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-5e5dcd31f8674a71", "name": "Commented-code block (6 lines) in tests/test_civ_rx_coverage.py:2341", "shortDescription": {"text": "Commented-code block (6 lines) in tests/test_civ_rx_coverage.py:2341"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-11cf1459f1b05f1c", "name": "Legacy-named symbol `test_is_fresh_expired_when_timestamp_is_old` in tests/test_state_cache.py:135", "shortDescription": {"text": "Legacy-named symbol `test_is_fresh_expired_when_timestamp_is_old` in tests/test_state_cache.py:135"}, "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-3d8dbd1aaa00fa16", "name": "Commented-code block (5 lines) in tests/test_profiles_runtime.py:174", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_profiles_runtime.py:174"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b95fb21779dcfcbf", "name": "Commented-code block (5 lines) in tests/test_radio.py:441", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_radio.py:441"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2cb9c2ca8dcb2640", "name": "Commented-code block (5 lines) in tests/test_web_audio_adaptive_egress.py:262", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_web_audio_adaptive_egress.py: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-0b4ec6abc4e5f208", "name": "Legacy-named symbol `seq1_old` in tests/test_scope.py:421", "shortDescription": {"text": "Legacy-named symbol `seq1_old` in tests/test_scope.py:421"}, "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-d5251b17b9fed1a4", "name": "Commented-code block (6 lines) in tests/integration/test_rigctld_wsjtx.py:397", "shortDescription": {"text": "Commented-code block (6 lines) in tests/integration/test_rigctld_wsjtx.py:397"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-afafe35757b06759", "name": "Commented-code block (6 lines) in tests/smoke/test_audio_path_smoke.py:375", "shortDescription": {"text": "Commented-code block (6 lines) in tests/smoke/test_audio_path_smoke.py:375"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cd836a170f6a0b6d", "name": "Legacy-named symbol `test_probe_unused` in tests/validation/test_generator.py:224", "shortDescription": {"text": "Legacy-named symbol `test_probe_unused` in tests/validation/test_generator.py:224"}, "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-262a8499e9d48bf1", "name": "Commented-code block (11 lines) in tests/contracts/test_audio_transport_conformance.py:356", "shortDescription": {"text": "Commented-code block (11 lines) in tests/contracts/test_audio_transport_conformance.py: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-99c81913907aa45c", "name": "Commented-code block (5 lines) in docs/plans/discovery-artifacts/discovery_graph.py:360", "shortDescription": {"text": "Commented-code block (5 lines) in docs/plans/discovery-artifacts/discovery_graph.py:360"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0d42b8d25060adf2", "name": "Commented-code block (7 lines) in src/rigplane/commands/commander.py:23", "shortDescription": {"text": "Commented-code block (7 lines) in src/rigplane/commands/commander.py: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-c870e22602767e2e", "name": "Commented-code block (5 lines) in src/rigplane/cli/__init__.py:3377", "shortDescription": {"text": "Commented-code block (5 lines) in src/rigplane/cli/__init__.py:3377"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cc8f487dce6093ff", "name": "Stub function `_noop_pkt` (body is just `pass`/`return`) \u2014 src/rigplane/cli/__init__.py:1832", "shortDescription": {"text": "Stub function `_noop_pkt` (body is just `pass`/`return`) \u2014 src/rigplane/cli/__init__.py:1832"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6d969c4ba5f234b5", "name": "Commented-code block (9 lines) in src/rigplane/cli/_validate.py:736", "shortDescription": {"text": "Commented-code block (9 lines) in src/rigplane/cli/_validate.py: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-f59967d49f57d49a", "name": "Commented-code block (5 lines) in src/rigplane/cli/_diagnose.py:38", "shortDescription": {"text": "Commented-code block (5 lines) in src/rigplane/cli/_diagnose.py: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-5e11f8cc5c4e2848", "name": "Commented-code block (5 lines) in src/rigplane/rigctld/protocol.py:39", "shortDescription": {"text": "Commented-code block (5 lines) in src/rigplane/rigctld/protocol.py: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-c0656b6b317406c0", "name": "Commented-code block (10 lines) in src/rigplane/rigctld/handler.py:83", "shortDescription": {"text": "Commented-code block (10 lines) in src/rigplane/rigctld/handler.py: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-892be80726e23cd6", "name": "Commented-code block (5 lines) in src/rigplane/rigctld/server.py:785", "shortDescription": {"text": "Commented-code block (5 lines) in src/rigplane/rigctld/server.py:785"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d3e9dd59de5b54f4", "name": "Commented-code block (5 lines) in src/rigplane/audio/usb_driver.py:38", "shortDescription": {"text": "Commented-code block (5 lines) in src/rigplane/audio/usb_driver.py: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-e4ee1a1f4339560a", "name": "Commented-code block (5 lines) in src/rigplane/audio/fft_scope.py:36", "shortDescription": {"text": "Commented-code block (5 lines) in src/rigplane/audio/fft_scope.py: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-5b8f6c7c0294ea46", "name": "Commented-code block (6 lines) in src/rigplane/audio/session.py:80", "shortDescription": {"text": "Commented-code block (6 lines) in src/rigplane/audio/session.py: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-167624aaa38c2892", "name": "Commented-code block (6 lines) in src/rigplane/audio/bridge.py:291", "shortDescription": {"text": "Commented-code block (6 lines) in src/rigplane/audio/bridge.py: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-21da9d73227fe38f", "name": "Commented-code block (7 lines) in src/rigplane/audio/bus.py:63", "shortDescription": {"text": "Commented-code block (7 lines) in src/rigplane/audio/bus.py: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-becba4423c80d716", "name": "Commented-code block (7 lines) in src/rigplane/audio/backend.py:744", "shortDescription": {"text": "Commented-code block (7 lines) in src/rigplane/audio/backend.py:744"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-17eec94903847769", "name": "Commented-code block (5 lines) in src/rigplane/validation/hardware.py:117", "shortDescription": {"text": "Commented-code block (5 lines) in src/rigplane/validation/hardware.py: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-172e963ae145c741", "name": "Commented-code block (6 lines) in src/rigplane/validation/audio_checks.py:90", "shortDescription": {"text": "Commented-code block (6 lines) in src/rigplane/validation/audio_checks.py: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-11982456874cde65", "name": "Commented-code block (6 lines) in src/rigplane/validation/runner.py:123", "shortDescription": {"text": "Commented-code block (6 lines) in src/rigplane/validation/runner.py: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-6c0363b306d18a25", "name": "Commented-code block (5 lines) in src/rigplane/validation/registry/_system.py:151", "shortDescription": {"text": "Commented-code block (5 lines) in src/rigplane/validation/registry/_system.py: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-a5df120bed80fb55", "name": "Commented-code block (5 lines) in src/rigplane/web/discovery.py:185", "shortDescription": {"text": "Commented-code block (5 lines) in src/rigplane/web/discovery.py: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-1047f33a8c884d3f", "name": "Network/subprocess call without timeout or try/except \u2014 src/rigplane/web/tls.py:87", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rigplane/web/tls.py:87"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cd6ad8e73892d4d0", "name": "Commented-code block (7 lines) in src/rigplane/web/server.py:425", "shortDescription": {"text": "Commented-code block (7 lines) in src/rigplane/web/server.py:425"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-822e5f51af471ee6", "name": "Commented-code block (6 lines) in src/rigplane/web/radio_poller.py:729", "shortDescription": {"text": "Commented-code block (6 lines) in src/rigplane/web/radio_poller.py:729"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-10814c2f3dd0b7ab", "name": "Commented-code block (6 lines) in src/rigplane/web/runtime_helpers.py:179", "shortDescription": {"text": "Commented-code block (6 lines) in src/rigplane/web/runtime_helpers.py:179"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-10af5d9ffb33fa4b", "name": "Commented-code block (5 lines) in src/rigplane/web/handlers/diagnostics.py:366", "shortDescription": {"text": "Commented-code block (5 lines) in src/rigplane/web/handlers/diagnostics.py: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-ecac27d4891dc5ce", "name": "Commented-code block (5 lines) in src/rigplane/web/handlers/control.py:432", "shortDescription": {"text": "Commented-code block (5 lines) in src/rigplane/web/handlers/control.py:432"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c121ef1f0d0446dd", "name": "Commented-code block (5 lines) in src/rigplane/web/handlers/audio.py:48", "shortDescription": {"text": "Commented-code block (5 lines) in src/rigplane/web/handlers/audio.py: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-549f5dd901cb333f", "name": "Commented-code block (5 lines) in src/rigplane/backends/_icom_serial_base.py:87", "shortDescription": {"text": "Commented-code block (5 lines) in src/rigplane/backends/_icom_serial_base.py: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-fc55c8f29f96e915", "name": "Stub function `_ensure_audio_started` (body is just `pass`/`return`) \u2014 src/rigplane/backends/_icom_serial_base.py:821", "shortDescription": {"text": "Stub function `_ensure_audio_started` (body is just `pass`/`return`) \u2014 src/rigplane/backends/_icom_serial_base.py:821"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-95aaf9607bbdab5c", "name": "Commented-code block (7 lines) in src/rigplane/backends/factory.py:86", "shortDescription": {"text": "Commented-code block (7 lines) in src/rigplane/backends/factory.py: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-2f329e1aa490d6a6", "name": "Commented-code block (7 lines) in src/rigplane/backends/rigctld_client/transport.py:113", "shortDescription": {"text": "Commented-code block (7 lines) in src/rigplane/backends/rigctld_client/transport.py: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-5d0e12c4ed35f429", "name": "Commented-code block (7 lines) in src/rigplane/backends/rigctld_client/radio.py:441", "shortDescription": {"text": "Commented-code block (7 lines) in src/rigplane/backends/rigctld_client/radio.py:441"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5e704af7d32c46a5", "name": "Commented-code block (8 lines) in src/rigplane/backends/icom7610/drivers/serial_stub.py:217", "shortDescription": {"text": "Commented-code block (8 lines) in src/rigplane/backends/icom7610/drivers/serial_stub.py: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-d0cb586a973bfa1b", "name": "Stub function `set_vfo` (body is just `pass`/`return`) \u2014 src/rigplane/backends/icom7610/drivers/serial_stub.py:621", "shortDescription": {"text": "Stub function `set_vfo` (body is just `pass`/`return`) \u2014 src/rigplane/backends/icom7610/drivers/serial_stub.py:621"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-003e123021f9cc0c", "name": "Commented-code block (9 lines) in src/rigplane/backends/icom7610/drivers/serial_session.py:162", "shortDescription": {"text": "Commented-code block (9 lines) in src/rigplane/backends/icom7610/drivers/serial_session.py:162"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4df0fd57e3c21d04", "name": "Stub function `start_ping_loop` (body is just `pass`/`return`) \u2014 src/rigplane/backends/icom7610/drivers/serial_session.p", "shortDescription": {"text": "Stub function `start_ping_loop` (body is just `pass`/`return`) \u2014 src/rigplane/backends/icom7610/drivers/serial_session.py:108"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bf2f4b591ea77e0a", "name": "Commented-code block (5 lines) in src/rigplane/backends/yaesu_cat/observations.py:64", "shortDescription": {"text": "Commented-code block (5 lines) in src/rigplane/backends/yaesu_cat/observations.py: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-27454ac76e6f91c7", "name": "Commented-code block (11 lines) in src/rigplane/backends/yaesu_cat/radio.py:43", "shortDescription": {"text": "Commented-code block (11 lines) in src/rigplane/backends/yaesu_cat/radio.py: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-42cebec4cd62244a", "name": "Commented-code block (8 lines) in src/rigplane/runtime/radios.py:73", "shortDescription": {"text": "Commented-code block (8 lines) in src/rigplane/runtime/radios.py: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-47bdf57d00990d7b", "name": "Legacy-named symbol `_replay_legacy` in src/rigplane/runtime/_audio_recovery.py:157", "shortDescription": {"text": "Legacy-named symbol `_replay_legacy` in src/rigplane/runtime/_audio_recovery.py:157"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b0a6fce53907b0dd", "name": "Commented-code block (6 lines) in src/rigplane/runtime/profiles_runtime.py:201", "shortDescription": {"text": "Commented-code block (6 lines) in src/rigplane/runtime/profiles_runtime.py: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-e09dbaed9858f37d", "name": "Commented-code block (6 lines) in src/rigplane/runtime/sync.py:140", "shortDescription": {"text": "Commented-code block (6 lines) in src/rigplane/runtime/sync.py: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-30639c2d969d594a", "name": "Commented-code block (5 lines) in src/rigplane/runtime/_civ_rx.py:69", "shortDescription": {"text": "Commented-code block (5 lines) in src/rigplane/runtime/_civ_rx.py: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-6628e314c7b51226", "name": "Commented-code block (5 lines) in src/rigplane/runtime/radio.py:324", "shortDescription": {"text": "Commented-code block (5 lines) in src/rigplane/runtime/radio.py:324"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0a2d90a62aafe280", "name": "Commented-code block (6 lines) in src/rigplane/diagnostics/redaction.py:49", "shortDescription": {"text": "Commented-code block (6 lines) in src/rigplane/diagnostics/redaction.py: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-c8102f063be92f33", "name": "Commented-code block (5 lines) in src/rigplane/diagnostics/_logging.py:79", "shortDescription": {"text": "Commented-code block (5 lines) in src/rigplane/diagnostics/_logging.py: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-a0ae0da975e5b79e", "name": "Commented-code block (10 lines) in src/rigplane/core/capabilities.py:80", "shortDescription": {"text": "Commented-code block (10 lines) in src/rigplane/core/capabilities.py: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-f6d634c605af93dd", "name": "Commented-code block (6 lines) in src/rigplane/core/types.py:197", "shortDescription": {"text": "Commented-code block (6 lines) in src/rigplane/core/types.py: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-c04991518f92c307", "name": "Commented-code block (6 lines) in src/rigplane/core/transport.py:134", "shortDescription": {"text": "Commented-code block (6 lines) in src/rigplane/core/transport.py: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-4e500759df7edb95", "name": "Commented-code block (5 lines) in src/rigplane/profiles/__init__.py:175", "shortDescription": {"text": "Commented-code block (5 lines) in src/rigplane/profiles/__init__.py: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-0366e7613b143e17", "name": "Legacy-named symbol `has_legacy` in src/rigplane/profiles/rig_loader.py:1100", "shortDescription": {"text": "Legacy-named symbol `has_legacy` in src/rigplane/profiles/rig_loader.py:1100"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/rigplane/commands/dsp.py:get_attenuator, src/rigplane/commands/dsp.py:get_preamp\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-18728ded1c00a072", "name": "Near-duplicate function bodies in 27 places", "shortDescription": {"text": "Near-duplicate function bodies in 27 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/rigplane/commands/dsp.py:get_digisel, src/rigplane/commands/dsp.py:get_af_mute, src/rigplane/commands/dsp.py:get_agc, src/rigplane/commands/dsp.py:get_audio_peak_filter\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-9dad557909b86499", "name": "Near-duplicate function bodies in 10 places", "shortDescription": {"text": "Near-duplicate function bodies in 10 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/rigplane/commands/dsp.py:set_digisel, src/rigplane/commands/dsp.py:set_nb, src/rigplane/commands/dsp.py:set_nr, src/rigplane/commands/dsp.py:set_ip_plus\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-fe1d9311d6aee734", "name": "Near-duplicate function bodies in 12 places", "shortDescription": {"text": "Near-duplicate function bodies in 12 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/rigplane/commands/dsp.py:set_compressor, src/rigplane/commands/dsp.py:set_monitor, src/rigplane/commands/dsp.py:set_vox, src/rigplane/commands/dsp.py:set_dial_lock\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-46969939caf8120b", "name": "Near-duplicate function bodies in 9 places", "shortDescription": {"text": "Near-duplicate function bodies in 9 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/rigplane/commands/scope.py:get_scope_mode, src/rigplane/commands/scope.py:get_scope_span, src/rigplane/commands/scope.py:get_scope_edge, src/rigplane/commands/scope.py:get_scope_hold\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-380b7cb95b387b9c", "name": "Near-duplicate function bodies in 11 places", "shortDescription": {"text": "Near-duplicate function bodies in 11 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/rigplane/commands/config.py:set_acc1_mod_level, src/rigplane/commands/config.py:set_usb_mod_level, src/rigplane/commands/config.py:set_lan_mod_level, src/rigplane/commands/levels.py:set_rf_power\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/rigplane/commands/config.py:set_data_off_mod_input, src/rigplane/commands/config.py:set_data1_mod_input, src/rigplane/commands/config.py:set_data2_mod_input, src/rigplane/commands/config.py:set_data3_mod_input\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-33a6b62e30ce7ab4", "name": "Near-duplicate function bodies in 6 places", "shortDescription": {"text": "Near-duplicate function bodies in 6 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/rigplane/commands/config.py:set_civ_transceive, src/rigplane/commands/config.py:set_civ_output_ant, src/rigplane/commands/antenna.py:set_antenna_1, src/rigplane/commands/antenna.py:set_antenna_2\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-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/rigplane/commands/system.py:get_system_date, src/rigplane/commands/system.py:get_system_time, src/rigplane/commands/system.py:get_utc_offset\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/18171"}, "properties": {"repository": "rigplane/rigplane-core", "repoUrl": "https://github.com/rigplane/rigplane-core", "branch": "main"}, "results": [{"ruleId": "scanner-ab3a3f9ae4eaf221", "level": "note", "message": {"text": "Possibly dead Python function: initialize"}, "properties": {"repobilityId": "024b267ec08e6038", "scanner": "scanner-primary", "fingerprint": "ab3a3f9ae4eaf221", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "hatch_build.py:39"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-88de5e5d2950374b", "level": "note", "message": {"text": "Possibly dead Python function: visit_Import"}, "properties": {"repobilityId": "66cd6a2eba488b69", "scanner": "scanner-primary", "fingerprint": "88de5e5d2950374b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/plans/discovery-artifacts/classify_cycle_edges.py:118"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5a77b35133227b7d", "level": "note", "message": {"text": "Possibly dead Python function: visit_ImportFrom"}, "properties": {"repobilityId": "9943a88b95a56d70", "scanner": "scanner-primary", "fingerprint": "5a77b35133227b7d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/plans/discovery-artifacts/classify_cycle_edges.py:125"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-49680055c2cde1ce", "level": "note", "message": {"text": "Possibly dead Python function: sort_key"}, "properties": {"repobilityId": "ac2a4181eae38738", "scanner": "scanner-primary", "fingerprint": "49680055c2cde1ce", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/plans/discovery-artifacts/build_orphan_report.py:119"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a3639a2fe1acca67", "level": "note", "message": {"text": "Possibly dead Python function: remove_rx_tap"}, "properties": {"repobilityId": "a17805dcb267374a", "scanner": "scanner-primary", "fingerprint": "a3639a2fe1acca67", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rigplane/audio/lan_stream.py:498"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c587a3188d0a1820", "level": "note", "message": {"text": "Possibly dead Python function: ensure_startup_ready"}, "properties": {"repobilityId": "0afc690987c73ad1", "scanner": "scanner-primary", "fingerprint": "c587a3188d0a1820", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rigplane/web/server.py:959"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b238ccd07a484c21", "level": "note", "message": {"text": "Possibly dead Python function: state_is_fresh"}, "properties": {"repobilityId": "33dd1e3b62e1ef30", "scanner": "scanner-primary", "fingerprint": "b238ccd07a484c21", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rigplane/web/radio_poller.py:565"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5c3b5cc2292d0980", "level": "note", "message": {"text": "Possibly dead Python function: query_safe"}, "properties": {"repobilityId": "d4d59325a06153cf", "scanner": "scanner-primary", "fingerprint": "5c3b5cc2292d0980", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rigplane/backends/yaesu_cat/transport.py:424"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a60a77d6cc954405", "level": "note", "message": {"text": "Possibly dead Python function: format_stats"}, "properties": {"repobilityId": "866d35a53b8d0290", "scanner": "scanner-primary", "fingerprint": "a60a77d6cc954405", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rigplane/backends/yaesu_cat/transport.py:439"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a3da7cdd928918ab", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/lib/audio/tx-mic.ts:133"}, "properties": {"repobilityId": "197d568333a2b073", "scanner": "scanner-primary", "fingerprint": "a3da7cdd928918ab", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-513751fa5a9632d0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/lib/audio/audio-manager.ts:75"}, "properties": {"repobilityId": "fae033618e730f65", "scanner": "scanner-primary", "fingerprint": "513751fa5a9632d0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e80069919fb7b7df", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/lib/runtime/commands/panel-commands.ts:44"}, "properties": {"repobilityId": "c710471ee7f46ae4", "scanner": "scanner-primary", "fingerprint": "e80069919fb7b7df", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-6045396b99d818e6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/components-v2/layout/MobileRadioLayout.svelte:234"}, "properties": {"repobilityId": "2a1dc66c24ad173d", "scanner": "scanner-primary", "fingerprint": "6045396b99d818e6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a182e15d22810277", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/components-v2/wiring/double-click.ts:17"}, "properties": {"repobilityId": "acf7daca86f8fb4b", "scanner": "scanner-primary", "fingerprint": "a182e15d22810277", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-08101e9770c1fb59", "level": "warning", "message": {"text": "Privileged port 3 in use"}, "properties": {"repobilityId": "261b7b1c6a18d412", "scanner": "scanner-primary", "fingerprint": "08101e9770c1fb59", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/full.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4a3f3939e1fcb9a1", "level": "warning", "message": {"text": "Privileged port 6 in use"}, "properties": {"repobilityId": "888a3c205ea7334c", "scanner": "scanner-primary", "fingerprint": "4a3f3939e1fcb9a1", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/full.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-aa7106ad626d30bf", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in frontend/scripts/i18n-preview-server.mjs:3"}, "properties": {"repobilityId": "80318188042fafb7", "scanner": "scanner-primary", "fingerprint": "aa7106ad626d30bf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/scripts/i18n-preview-server.mjs"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-d35bb2548b2ca0b9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components/spectrum/__tests__/BandPlanOverlay.component.test.ts:99"}, "properties": {"repobilityId": "cb81a818d6515edb", "scanner": "scanner-primary", "fingerprint": "d35bb2548b2ca0b9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/spectrum/__tests__/BandPlanOverlay.component.test.ts"}, "region": {"startLine": 99}}}]}, {"ruleId": "scanner-e63cc41d9be9aacb", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components/spectrum/__tests__/SpectrumToolbar.component.test.ts:87"}, "properties": {"repobilityId": "f1c6260244ab192a", "scanner": "scanner-primary", "fingerprint": "e63cc41d9be9aacb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/spectrum/__tests__/SpectrumToolbar.component.test.ts"}, "region": {"startLine": 87}}}]}, {"ruleId": "scanner-fa4041d4a0820352", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components/spectrum/__tests__/click-to-tune.test.ts:91"}, "properties": {"repobilityId": "dcdadd833c823235", "scanner": "scanner-primary", "fingerprint": "fa4041d4a0820352", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/spectrum/__tests__/click-to-tune.test.ts"}, "region": {"startLine": 91}}}]}, {"ruleId": "scanner-9d84c2a48d7f3161", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components/spectrum/__tests__/SpectrumPanel.component.test.ts:191"}, "properties": {"repobilityId": "3396039789b916ea", "scanner": "scanner-primary", "fingerprint": "9d84c2a48d7f3161", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/spectrum/__tests__/SpectrumPanel.component.test.ts"}, "region": {"startLine": 191}}}]}, {"ruleId": "scanner-06793f12becf2478", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/lib/Button/__tests__/ControlButton.test.ts:34"}, "properties": {"repobilityId": "88235a25c3bdabb5", "scanner": "scanner-primary", "fingerprint": "06793f12becf2478", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/lib/Button/__tests__/ControlButton.test.ts"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-155a7abdeef9e612", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/src/lib/transport/http-client.ts:86"}, "properties": {"repobilityId": "04d4153805d0d3c1", "scanner": "scanner-primary", "fingerprint": "155a7abdeef9e612", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/lib/transport/http-client.ts"}, "region": {"startLine": 86}}}]}, {"ruleId": "scanner-5328ce58bb7f38fe", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/layout/__tests__/RadioLayout.test.ts:301"}, "properties": {"repobilityId": "dc4ffb7a9bacccfa", "scanner": "scanner-primary", "fingerprint": "5328ce58bb7f38fe", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/layout/__tests__/RadioLayout.test.ts"}, "region": {"startLine": 301}}}]}, {"ruleId": "scanner-5df78bc35812c0f4", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/layout/__tests__/MobileRadioLayout.component.svelte.test.ts:179"}, "properties": {"repobilityId": "988dc691f752cfe2", "scanner": "scanner-primary", "fingerprint": "5df78bc35812c0f4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/layout/__tests__/MobileRadioLayout.component.svelte.test.ts"}, "region": {"startLine": 179}}}]}, {"ruleId": "scanner-9d2d23b424bfcbb1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/layout/__tests__/KeyboardHandler.test.ts:70"}, "properties": {"repobilityId": "c127703688bf3a59", "scanner": "scanner-primary", "fingerprint": "9d2d23b424bfcbb1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/layout/__tests__/KeyboardHandler.test.ts"}, "region": {"startLine": 70}}}]}, {"ruleId": "scanner-0e5e2ae268414386", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/layout/__tests__/top-row-visual-regression.test.ts:198"}, "properties": {"repobilityId": "ff1d818083cf06a0", "scanner": "scanner-primary", "fingerprint": "0e5e2ae268414386", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/layout/__tests__/top-row-visual-regression.test.ts"}, "region": {"startLine": 198}}}]}, {"ruleId": "scanner-065c60c4c3f9ed0c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/display/__tests__/FrequencyDisplayInteractive.component.svelte.test.ts:82"}, "properties": {"repobilityId": "2e028119fd597975", "scanner": "scanner-primary", "fingerprint": "065c60c4c3f9ed0c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/display/__tests__/FrequencyDisplayInteractive.component.svelte.test.ts"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-1adeff48790c35c8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/vfo/__tests__/VfoOps.test.ts:108"}, "properties": {"repobilityId": "1d6c1ef99341d43e", "scanner": "scanner-primary", "fingerprint": "1adeff48790c35c8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/vfo/__tests__/VfoOps.test.ts"}, "region": {"startLine": 108}}}]}, {"ruleId": "scanner-efc2f2a8aafbcd9d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/vfo/__tests__/VfoPanel.test.ts:154"}, "properties": {"repobilityId": "5e9bfe6e3f470a62", "scanner": "scanner-primary", "fingerprint": "efc2f2a8aafbcd9d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/vfo/__tests__/VfoPanel.test.ts"}, "region": {"startLine": 154}}}]}, {"ruleId": "scanner-f824144f08891918", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/RxAudioPanel.test.ts:139"}, "properties": {"repobilityId": "ce9a8c9566e3f76a", "scanner": "scanner-primary", "fingerprint": "f824144f08891918", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/panels/__tests__/RxAudioPanel.test.ts"}, "region": {"startLine": 139}}}]}, {"ruleId": "scanner-94996e8f785aa516", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/DspPanel.component.test.ts:78"}, "properties": {"repobilityId": "483e2fa359e9b7a6", "scanner": "scanner-primary", "fingerprint": "94996e8f785aa516", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/panels/__tests__/DspPanel.component.test.ts"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-a79113b8f54904c6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/CwPanel.component.test.ts:63"}, "properties": {"repobilityId": "90c849ee82b5b9e8", "scanner": "scanner-primary", "fingerprint": "a79113b8f54904c6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/panels/__tests__/CwPanel.component.test.ts"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-7dadf3cfe7ebf845", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/ModePanel.test.ts:57"}, "properties": {"repobilityId": "af2d9f63d0765a1f", "scanner": "scanner-primary", "fingerprint": "7dadf3cfe7ebf845", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/panels/__tests__/ModePanel.test.ts"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-efa713d82c5377c7", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/DspPanel.test.ts:128"}, "properties": {"repobilityId": "2502e8db60d34c17", "scanner": "scanner-primary", "fingerprint": "efa713d82c5377c7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/panels/__tests__/DspPanel.test.ts"}, "region": {"startLine": 128}}}]}, {"ruleId": "scanner-74467a5209f76503", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/RfFrontEnd.component.test.ts:85"}, "properties": {"repobilityId": "5be14f81f6dd8f9b", "scanner": "scanner-primary", "fingerprint": "74467a5209f76503", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/panels/__tests__/RfFrontEnd.component.test.ts"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-234de9ed5066be39", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/MeterPanel.test.ts:181"}, "properties": {"repobilityId": "2e04a5017e8791fb", "scanner": "scanner-primary", "fingerprint": "234de9ed5066be39", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/panels/__tests__/MeterPanel.test.ts"}, "region": {"startLine": 181}}}]}, {"ruleId": "scanner-705cd84866112287", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/RitXitPanel.test.ts:56"}, "properties": {"repobilityId": "0eb664b4cfac2427", "scanner": "scanner-primary", "fingerprint": "705cd84866112287", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/panels/__tests__/RitXitPanel.test.ts"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-c1bba74bc729bc0b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/FilterPanel.test.ts:140"}, "properties": {"repobilityId": "faf21bb8941c1ce9", "scanner": "scanner-primary", "fingerprint": "c1bba74bc729bc0b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/panels/__tests__/FilterPanel.test.ts"}, "region": {"startLine": 140}}}]}, {"ruleId": "scanner-ae3f666083759cfc", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/ModInputTxWarning.test.ts:51"}, "properties": {"repobilityId": "b492f99a22313f80", "scanner": "scanner-primary", "fingerprint": "ae3f666083759cfc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/panels/__tests__/ModInputTxWarning.test.ts"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-699f9f354e7c76bf", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/__tests__/TxPanel.test.ts:160"}, "properties": {"repobilityId": "5842f4e09c6ac6a4", "scanner": "scanner-primary", "fingerprint": "699f9f354e7c76bf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/panels/__tests__/TxPanel.test.ts"}, "region": {"startLine": 160}}}]}, {"ruleId": "scanner-d3cc2e18a7777aef", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/vfo/__tests__/DualVfoDisplay.test.ts:64"}, "properties": {"repobilityId": "941dc987461c6e72", "scanner": "scanner-primary", "fingerprint": "d3cc2e18a7777aef", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/panels/vfo/__tests__/DualVfoDisplay.test.ts"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-aec33f51208d2291", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/panels/lcd/__tests__/lcd-availability.test.ts:89"}, "properties": {"repobilityId": "32fa8a6003e03ec9", "scanner": "scanner-primary", "fingerprint": "aec33f51208d2291", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/panels/lcd/__tests__/lcd-availability.test.ts"}, "region": {"startLine": 89}}}]}, {"ruleId": "scanner-25445ccb382051bb", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/controls/__tests__/AttenuatorControl.test.ts:24"}, "properties": {"repobilityId": "f13b88b736a37f76", "scanner": "scanner-primary", "fingerprint": "25445ccb382051bb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/controls/__tests__/AttenuatorControl.test.ts"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-b0f87d5e6cdd4692", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/controls/__tests__/CollapsiblePanel.test.ts:45"}, "properties": {"repobilityId": "dba910b7af42aac5", "scanner": "scanner-primary", "fingerprint": "b0f87d5e6cdd4692", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/controls/__tests__/CollapsiblePanel.test.ts"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-dfada5004ba7acc2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/controls/__tests__/BottomSheet.test.ts:43"}, "properties": {"repobilityId": "1dca133f12557713", "scanner": "scanner-primary", "fingerprint": "dfada5004ba7acc2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/controls/__tests__/BottomSheet.test.ts"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-9fb756b051963730", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/controls/__tests__/PullToRefresh.test.ts:35"}, "properties": {"repobilityId": "25d34a766a3c467d", "scanner": "scanner-primary", "fingerprint": "9fb756b051963730", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/controls/__tests__/PullToRefresh.test.ts"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-1ff6bd10fff3a5a9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/controls/__tests__/SegmentedButton.test.ts:53"}, "properties": {"repobilityId": "25aec413de5d2cfa", "scanner": "scanner-primary", "fingerprint": "1ff6bd10fff3a5a9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/controls/__tests__/SegmentedButton.test.ts"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-5bdef2708d3a31aa", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/controls/__tests__/LanguageSelector.test.ts:40"}, "properties": {"repobilityId": "a01d817820865bd8", "scanner": "scanner-primary", "fingerprint": "5bdef2708d3a31aa", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/controls/__tests__/LanguageSelector.test.ts"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-9032ff789cbedc9a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/controls/__tests__/BandSelector.test.ts:80"}, "properties": {"repobilityId": "6dd8d05984c15649", "scanner": "scanner-primary", "fingerprint": "9032ff789cbedc9a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/controls/__tests__/BandSelector.test.ts"}, "region": {"startLine": 80}}}]}, {"ruleId": "scanner-805a3adb96a6bdc6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/controls/value-control/__tests__/ValueControl.test.ts:35"}, "properties": {"repobilityId": "653ef2e2c6f47b4d", "scanner": "scanner-primary", "fingerprint": "805a3adb96a6bdc6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/controls/value-control/__tests__/ValueControl.test.ts"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-695a465807bf21d0", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components-v2/dialogs/__tests__/SendReportDialog.test.ts:97"}, "properties": {"repobilityId": "5755466461cb2f8e", "scanner": "scanner-primary", "fingerprint": "695a465807bf21d0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components-v2/dialogs/__tests__/SendReportDialog.test.ts"}, "region": {"startLine": 97}}}]}, {"ruleId": "scanner-5e624cc49883845d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/rigplane/web/static.old/index.html:803"}, "properties": {"repobilityId": "734a3846c5ff3645", "scanner": "scanner-primary", "fingerprint": "5e624cc49883845d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rigplane/web/static.old/index.html"}, "region": {"startLine": 803}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-4258abfbf39a21d2", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "44da6508816ee1ff", "scanner": "scanner-primary", "fingerprint": "4258abfbf39a21d2", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/quick.yml"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-4258abfbf39a21d2", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "06cc0a19a16730ca", "scanner": "scanner-primary", "fingerprint": "4258abfbf39a21d2", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/quick.yml"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-4258abfbf39a21d2", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2281c9431b8a4c73", "scanner": "scanner-primary", "fingerprint": "4258abfbf39a21d2", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/quick.yml"}, "region": {"startLine": 101}}}]}, {"ruleId": "scanner-4258abfbf39a21d2", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "daf214ccaf33e47c", "scanner": "scanner-primary", "fingerprint": "4258abfbf39a21d2", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/quick.yml"}, "region": {"startLine": 164}}}]}, {"ruleId": "scanner-4258abfbf39a21d2", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "daf214ccaf33e47c", "scanner": "scanner-primary", "fingerprint": "4258abfbf39a21d2", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/quick.yml"}, "region": {"startLine": 175}}}]}, {"ruleId": "scanner-4258abfbf39a21d2", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "daf214ccaf33e47c", "scanner": "scanner-primary", "fingerprint": "4258abfbf39a21d2", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/quick.yml"}, "region": {"startLine": 186}}}]}, {"ruleId": "scanner-a65ee2bea76c0f1b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f9ad7dce6a587778", "scanner": "scanner-primary", "fingerprint": "a65ee2bea76c0f1b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/agent-review-gate.yml"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-a65ee2bea76c0f1b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f9ad7dce6a587778", "scanner": "scanner-primary", "fingerprint": "a65ee2bea76c0f1b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/agent-review-gate.yml"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-0763d85002569570", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9e11fe0a2ed5c301", "scanner": "scanner-primary", "fingerprint": "0763d85002569570", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docs.yml"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-0763d85002569570", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "932ede9197f66143", "scanner": "scanner-primary", "fingerprint": "0763d85002569570", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docs.yml"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-0763d85002569570", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e4610670d3104927", "scanner": "scanner-primary", "fingerprint": "0763d85002569570", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docs.yml"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-14ce8614dd03f409", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "81c5c697653f94e8", "scanner": "scanner-primary", "fingerprint": "14ce8614dd03f409", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docs.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-99388e8a83e0f093", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "083827fbe4d1abd4", "scanner": "scanner-primary", "fingerprint": "99388e8a83e0f093", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/full.yml"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-99388e8a83e0f093", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "225e9ec791e45783", "scanner": "scanner-primary", "fingerprint": "99388e8a83e0f093", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/full.yml"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-99388e8a83e0f093", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7f2276ad81540ad3", "scanner": "scanner-primary", "fingerprint": "99388e8a83e0f093", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/full.yml"}, "region": {"startLine": 123}}}]}, {"ruleId": "scanner-99388e8a83e0f093", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7f2276ad81540ad3", "scanner": "scanner-primary", "fingerprint": "99388e8a83e0f093", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/full.yml"}, "region": {"startLine": 134}}}]}, {"ruleId": "scanner-99388e8a83e0f093", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7f2276ad81540ad3", "scanner": "scanner-primary", "fingerprint": "99388e8a83e0f093", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/full.yml"}, "region": {"startLine": 145}}}]}, {"ruleId": "scanner-a53bf972e19b52fd", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4ef390d74e790bf2", "scanner": "scanner-primary", "fingerprint": "a53bf972e19b52fd", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/publish.yml"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-a53bf972e19b52fd", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a3bdefa5a986ff5b", "scanner": "scanner-primary", "fingerprint": "a53bf972e19b52fd", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/publish.yml"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-a53bf972e19b52fd", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4ef390d74e790bf2", "scanner": "scanner-primary", "fingerprint": "a53bf972e19b52fd", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/publish.yml"}, "region": {"startLine": 81}}}]}, {"ruleId": "scanner-a53bf972e19b52fd", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a3bdefa5a986ff5b", "scanner": "scanner-primary", "fingerprint": "a53bf972e19b52fd", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/publish.yml"}, "region": {"startLine": 92}}}]}, {"ruleId": "scanner-a53bf972e19b52fd", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3fa69e030c51fba4", "scanner": "scanner-primary", "fingerprint": "a53bf972e19b52fd", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/publish.yml"}, "region": {"startLine": 111}}}]}, {"ruleId": "scanner-a53bf972e19b52fd", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "84012af3e8ae5b4c", "scanner": "scanner-primary", "fingerprint": "a53bf972e19b52fd", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/publish.yml"}, "region": {"startLine": 124}}}]}, {"ruleId": "scanner-a53bf972e19b52fd", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "26eca5024249c767", "scanner": "scanner-primary", "fingerprint": "a53bf972e19b52fd", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/publish.yml"}, "region": {"startLine": 130}}}]}, {"ruleId": "scanner-7ffa33751be3d771", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "491a3ad29cbaf189", "scanner": "scanner-primary", "fingerprint": "7ffa33751be3d771", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/publish.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d465f2171932a07c", "level": "note", "message": {"text": "Very large file: frontend/tests/e2e/v2-ui-interactive.impl.ts (1454 lines)"}, "properties": {"repobilityId": "c54684f520d52ae1", "scanner": "scanner-primary", "fingerprint": "d465f2171932a07c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4cf221137c37f540", "level": "note", "message": {"text": "Very large file: tests/test_web_server_coverage.py (2835 lines)"}, "properties": {"repobilityId": "76ee0b213793630a", "scanner": "scanner-primary", "fingerprint": "4cf221137c37f540", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f9e815aee7705e0c", "level": "note", "message": {"text": "Very large file: tests/test_cli_coverage.py (1645 lines)"}, "properties": {"repobilityId": "5b822e754f7b35c9", "scanner": "scanner-primary", "fingerprint": "f9e815aee7705e0c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1d668f5fdb3cefec", "level": "note", "message": {"text": "Very large file: tests/test_rigctld_handler.py (5268 lines)"}, "properties": {"repobilityId": "7dc60a9988320359", "scanner": "scanner-primary", "fingerprint": "1d668f5fdb3cefec", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-839a1d70b3e846d6", "level": "note", "message": {"text": "Very large file: tests/test_commands.py (2520 lines)"}, "properties": {"repobilityId": "4c9aaa2ccd235a64", "scanner": "scanner-primary", "fingerprint": "839a1d70b3e846d6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-de347cc62881126d", "level": "note", "message": {"text": "Very large file: tests/test_radio_poller_coverage.py (2740 lines)"}, "properties": {"repobilityId": "8342856981201860", "scanner": "scanner-primary", "fingerprint": "de347cc62881126d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bf75f6105e6e02d0", "level": "note", "message": {"text": "Very large file: tests/test_handlers_coverage.py (2365 lines)"}, "properties": {"repobilityId": "9b1f25a232140080", "scanner": "scanner-primary", "fingerprint": "bf75f6105e6e02d0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fc93ea225032e8a6", "level": "note", "message": {"text": "Very large file: tests/test_acquisition_scheduler.py (2193 lines)"}, "properties": {"repobilityId": "a2a72051bd4f9145", "scanner": "scanner-primary", "fingerprint": "fc93ea225032e8a6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-796d63fb256a3fac", "level": "note", "message": {"text": "Very large file: tests/test_ftx1_radio.py (2426 lines)"}, "properties": {"repobilityId": "e3bf5ed7abab8f49", "scanner": "scanner-primary", "fingerprint": "796d63fb256a3fac", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141e9cf1b365461b", "level": "note", "message": {"text": "Very large file: tests/test_yaesu_cat_observation_adapter.py (1842 lines)"}, "properties": {"repobilityId": "a93048e257fc669e", "scanner": "scanner-primary", "fingerprint": "141e9cf1b365461b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ebdcd5e284610663", "level": "note", "message": {"text": "Very large file: tests/test_yaesu_cat_poller.py (1546 lines)"}, "properties": {"repobilityId": "a7ef3b54cb4d87a3", "scanner": "scanner-primary", "fingerprint": "ebdcd5e284610663", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-df12c6f6dece8b7f", "level": "note", "message": {"text": "Very large file: tests/test_cli.py (1638 lines)"}, "properties": {"repobilityId": "2121c5b297f0116c", "scanner": "scanner-primary", "fingerprint": "df12c6f6dece8b7f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3f4a55afa1575789", "level": "note", "message": {"text": "Very large file: tests/test_usb_audio_resolve.py (1491 lines)"}, "properties": {"repobilityId": "3dcaf500ad070ca5", "scanner": "scanner-primary", "fingerprint": "3f4a55afa1575789", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9368cc52b4107fe4", "level": "note", "message": {"text": "Very large file: tests/test_radio_coverage.py (2195 lines)"}, "properties": {"repobilityId": "24a53799017e063a", "scanner": "scanner-primary", "fingerprint": "9368cc52b4107fe4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e1ce22352e98e1ac", "level": "note", "message": {"text": "Very large file: tests/test_civ_rx_coverage.py (3204 lines)"}, "properties": {"repobilityId": "3bc780f6b6e556a4", "scanner": "scanner-primary", "fingerprint": "e1ce22352e98e1ac", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b92aca26f2b99965", "level": "note", "message": {"text": "Very large file: tests/test_radio.py (2438 lines)"}, "properties": {"repobilityId": "9bbe945f491033c7", "scanner": "scanner-primary", "fingerprint": "b92aca26f2b99965", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1984560c67758600", "level": "note", "message": {"text": "Very large file: tests/test_web_server.py (3759 lines)"}, "properties": {"repobilityId": "4a29eadd4a2e7aaf", "scanner": "scanner-primary", "fingerprint": "1984560c67758600", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2a0aa13d0ddb2457", "level": "note", "message": {"text": "Very large file: tests/test_rigctld_server.py (1671 lines)"}, "properties": {"repobilityId": "7fc0659fdaa816bf", "scanner": "scanner-primary", "fingerprint": "2a0aa13d0ddb2457", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f0ac75db9a7edc32", "level": "note", "message": {"text": "Very large file: tests/validation/test_hardware.py (1502 lines)"}, "properties": {"repobilityId": "b31a63f568bbe83f", "scanner": "scanner-primary", "fingerprint": "f0ac75db9a7edc32", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7829427491e0c5cc", "level": "note", "message": {"text": "Very large file: src/rigplane/cli/__init__.py (3829 lines)"}, "properties": {"repobilityId": "cd2253445eeeea65", "scanner": "scanner-primary", "fingerprint": "7829427491e0c5cc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-41d3181f39360f2d", "level": "note", "message": {"text": "Very large file: src/rigplane/cli/_validate.py (1304 lines)"}, "properties": {"repobilityId": "bd19fa531fc94851", "scanner": "scanner-primary", "fingerprint": "41d3181f39360f2d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-81ef09512c849f35", "level": "note", "message": {"text": "Very large file: src/rigplane/rigctld/handler.py (2454 lines)"}, "properties": {"repobilityId": "7deee74582f0b725", "scanner": "scanner-primary", "fingerprint": "81ef09512c849f35", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-85f9e977409bba99", "level": "note", "message": {"text": "Very large file: src/rigplane/audio/backend.py (1865 lines)"}, "properties": {"repobilityId": "1473701e2b63c96a", "scanner": "scanner-primary", "fingerprint": "85f9e977409bba99", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0b7e5483c65a6c26", "level": "note", "message": {"text": "Very large file: src/rigplane/validation/hardware.py (2056 lines)"}, "properties": {"repobilityId": "1c55edf5b9e9417f", "scanner": "scanner-primary", "fingerprint": "0b7e5483c65a6c26", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-13407f83697ac1f8", "level": "note", "message": {"text": "Very large file: src/rigplane/web/server.py (5053 lines)"}, "properties": {"repobilityId": "780d57dd6f8192bd", "scanner": "scanner-primary", "fingerprint": "13407f83697ac1f8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d74ec9cc5888c189", "level": "note", "message": {"text": "Very large file: src/rigplane/web/radio_poller.py (2557 lines)"}, "properties": {"repobilityId": "32d807ec0288e11e", "scanner": "scanner-primary", "fingerprint": "d74ec9cc5888c189", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ba6ced46ba602f53", "level": "note", "message": {"text": "Very large file: src/rigplane/web/handlers/control.py (2393 lines)"}, "properties": {"repobilityId": "6831a1d01204fcca", "scanner": "scanner-primary", "fingerprint": "ba6ced46ba602f53", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-016590158a74791c", "level": "note", "message": {"text": "Very large file: src/rigplane/web/handlers/audio.py (1679 lines)"}, "properties": {"repobilityId": "59ccb412eef1e360", "scanner": "scanner-primary", "fingerprint": "016590158a74791c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3bcb287b82461383", "level": "note", "message": {"text": "Very large file: src/rigplane/backends/yaesu_cat/observations.py (1085 lines)"}, "properties": {"repobilityId": "08885365be86519f", "scanner": "scanner-primary", "fingerprint": "3bcb287b82461383", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b35a029945775271", "level": "note", "message": {"text": "Very large file: src/rigplane/backends/yaesu_cat/radio.py (2711 lines)"}, "properties": {"repobilityId": "b45dbd6c23931438", "scanner": "scanner-primary", "fingerprint": "b35a029945775271", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-28b591c81192b605", "level": "note", "message": {"text": "Very large file: src/rigplane/runtime/_civ_rx.py (2817 lines)"}, "properties": {"repobilityId": "fde75572e2cf3a56", "scanner": "scanner-primary", "fingerprint": "28b591c81192b605", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4919f06b90716d1b", "level": "note", "message": {"text": "Very large file: src/rigplane/runtime/radio.py (4023 lines)"}, "properties": {"repobilityId": "c665aa90239087df", "scanner": "scanner-primary", "fingerprint": "4919f06b90716d1b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-87be083b0cce89c1", "level": "note", "message": {"text": "Very large file: src/rigplane/core/radio_protocol.py (1666 lines)"}, "properties": {"repobilityId": "6d62f1c9f735ffc2", "scanner": "scanner-primary", "fingerprint": "87be083b0cce89c1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3605437c5d5c1737", "level": "note", "message": {"text": "Very large file: src/rigplane/core/acquisition_scheduler.py (1542 lines)"}, "properties": {"repobilityId": "5e0de7e1f818ed59", "scanner": "scanner-primary", "fingerprint": "3605437c5d5c1737", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-602d7407959cffaa", "level": "note", "message": {"text": "Very large file: src/rigplane/profiles/rig_loader.py (1452 lines)"}, "properties": {"repobilityId": "8fc3ae7b5e585235", "scanner": "scanner-primary", "fingerprint": "602d7407959cffaa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "c5784a42be50e44c", "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": "5efe162bef887d06", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "996fe5a8b09943d5", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "03b5a97fbaea350a", "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": "321627d9599c5fb7", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-cc7de32b0ea20e02", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/next.md"}, "properties": {"repobilityId": "c33a1c594ef6d029", "scanner": "scanner-primary", "fingerprint": "cc7de32b0ea20e02", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/next.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bcd25ed1b1a1ae83", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/audit-ui.md"}, "properties": {"repobilityId": "db4695ce89c5911c", "scanner": "scanner-primary", "fingerprint": "bcd25ed1b1a1ae83", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/audit-ui.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-943782dd706b8e3f", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 hatch_build.py:67"}, "properties": {"repobilityId": "de6a93c18bbf177e", "scanner": "scanner-primary", "fingerprint": "943782dd706b8e3f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-68965aca589fbe52", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/vite.config.ts:52"}, "properties": {"repobilityId": "059f9ab56e553faf", "scanner": "scanner-primary", "fingerprint": "68965aca589fbe52", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f9c9a632dfb9e03", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/eslint.config.js:165"}, "properties": {"repobilityId": "951ce6dfc597fe98", "scanner": "scanner-primary", "fingerprint": "5f9c9a632dfb9e03", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9b8aa6fac9241080", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/main.ts:3"}, "properties": {"repobilityId": "86dde10338afe0a0", "scanner": "scanner-primary", "fingerprint": "9b8aa6fac9241080", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-69fa922316d99c95", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/spectrum/__tests__/SpectrumToolbar.component.test.ts:266"}, "properties": {"repobilityId": "a1c122cdd4e156d1", "scanner": "scanner-primary", "fingerprint": "69fa922316d99c95", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c2249c9c23f3accc", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/lib/drag-reorder.svelte.ts:67"}, "properties": {"repobilityId": "698913d88bb359ac", "scanner": "scanner-primary", "fingerprint": "c2249c9c23f3accc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a83cbc81d9d8e91f", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/lib/stores/radio.svelte.ts:143"}, "properties": {"repobilityId": "9f1c8c38aae99bee", "scanner": "scanner-primary", "fingerprint": "a83cbc81d9d8e91f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d8b54629d3614511", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/lib/i18n/index.ts:62"}, "properties": {"repobilityId": "b0f9c17ba3ae8c6d", "scanner": "scanner-primary", "fingerprint": "d8b54629d3614511", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-27f03d510822c7bc", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/lib/i18n/__tests__/index.test.ts:33"}, "properties": {"repobilityId": "f157041d8a2e56d3", "scanner": "scanner-primary", "fingerprint": "27f03d510822c7bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d183a0c10ce551f", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/lib/i18n/__tests__/pseudo-locale.smoke.test.ts:83"}, "properties": {"repobilityId": "3eb46fe39d58c83c", "scanner": "scanner-primary", "fingerprint": "8d183a0c10ce551f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-45fa6ece23d1d5ff", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/api/diagnostics.ts:125"}, "properties": {"repobilityId": "c89ab0f254e875c9", "scanner": "scanner-primary", "fingerprint": "45fa6ece23d1d5ff", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6077e12ca4a7e658", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/lib/radio/filter-controls.ts:53"}, "properties": {"repobilityId": "de822d1b12421bf3", "scanner": "scanner-primary", "fingerprint": "6077e12ca4a7e658", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fcd5f09687e92814", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/lib/audio/rx-player.ts:63"}, "properties": {"repobilityId": "5a06cebf4a73d694", "scanner": "scanner-primary", "fingerprint": "fcd5f09687e92814", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76ca9dde1a611533", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/transport/http-client.ts:97"}, "properties": {"repobilityId": "883523826badc979", "scanner": "scanner-primary", "fingerprint": "76ca9dde1a611533", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f466917b3954b773", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/lib/transport/__tests__/ws-client-store.integration.test.ts:6"}, "properties": {"repobilityId": "ef3cc8cd3be4b997", "scanner": "scanner-primary", "fingerprint": "f466917b3954b773", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6835f3110bc48d85", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/runtime/system-controller.ts:48"}, "properties": {"repobilityId": "b68f47cadffed5ab", "scanner": "scanner-primary", "fingerprint": "6835f3110bc48d85", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ac9e6c509c56ffa2", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/lib/runtime/adapters/panel-adapters.ts:149"}, "properties": {"repobilityId": "75f3645f8f168beb", "scanner": "scanner-primary", "fingerprint": "ac9e6c509c56ffa2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ded1350d780a5aee", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/lib/runtime/props/panel-props.ts:215"}, "properties": {"repobilityId": "b19ce560842577b4", "scanner": "scanner-primary", "fingerprint": "ded1350d780a5aee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb95018ffa3d8ee6", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components-v2/display/__tests__/FrequencyDisplayInteractive.component.svelte.test.ts:8"}, "properties": {"repobilityId": "325317b95b1c4d30", "scanner": "scanner-primary", "fingerprint": "eb95018ffa3d8ee6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-170f416900c4bdf8", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components-v2/meters/__tests__/LinearSMeter.test.ts:188"}, "properties": {"repobilityId": "425b9da52adf78da", "scanner": "scanner-primary", "fingerprint": "170f416900c4bdf8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6e059728af896bfa", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/components-v2/panels/meter-utils.test.ts:236"}, "properties": {"repobilityId": "55053cd94c8be718", "scanner": "scanner-primary", "fingerprint": "6e059728af896bfa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d5ca458e2d9a1a87", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components-v2/panels/meter-utils.ts:1"}, "properties": {"repobilityId": "39c590b5f594aea1", "scanner": "scanner-primary", "fingerprint": "d5ca458e2d9a1a87", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6cffad22eadd8639", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/components-v2/panels/filter-controls.ts:7"}, "properties": {"repobilityId": "890b062e4c049c48", "scanner": "scanner-primary", "fingerprint": "6cffad22eadd8639", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4eb83025a9e86eb7", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components-v2/panels/__tests__/MetersDockPanel.peakhold.svelte.test.ts:5"}, "properties": {"repobilityId": "7e4d44bac1fb7c42", "scanner": "scanner-primary", "fingerprint": "4eb83025a9e86eb7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-084233ec2d025a16", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/components-v2/wiring/command-bus.ts:71"}, "properties": {"repobilityId": "f494b46054c82b63", "scanner": "scanner-primary", "fingerprint": "084233ec2d025a16", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-09680e2c852206f1", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components-v2/wiring/state-adapter.ts:342"}, "properties": {"repobilityId": "7e0248af9628e30b", "scanner": "scanner-primary", "fingerprint": "09680e2c852206f1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-567db6128c73c601", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components-v2/wiring/__tests__/dsp-nb-depth.test.ts:3"}, "properties": {"repobilityId": "695fd22a0ff1e8eb", "scanner": "scanner-primary", "fingerprint": "567db6128c73c601", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1477aa62362309a4", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components-v2/wiring/__tests__/dsp-nr-level.test.ts:3"}, "properties": {"repobilityId": "906c978afe40f5bb", "scanner": "scanner-primary", "fingerprint": "1477aa62362309a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d1521e8f063bba2", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components-v2/wiring/__tests__/keyboard-wiring.test.ts:130"}, "properties": {"repobilityId": "3c239ffaf6435585", "scanner": "scanner-primary", "fingerprint": "4d1521e8f063bba2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6df4200afeb44e55", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components-v2/dialogs/__tests__/SendReportDialog.test.ts:398"}, "properties": {"repobilityId": "5277d3cb1862ff9a", "scanner": "scanner-primary", "fingerprint": "6df4200afeb44e55", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a9710b85c8195a5c", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/test_web_server_coverage.py:206"}, "properties": {"repobilityId": "83aa5143f3d3befa", "scanner": "scanner-primary", "fingerprint": "a9710b85c8195a5c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f062c38282d6812b", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_usb_audio_channel_clamp_mor238.py:78"}, "properties": {"repobilityId": "8c9bf446608e751d", "scanner": "scanner-primary", "fingerprint": "f062c38282d6812b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3453d1f1257ace1", "level": "note", "message": {"text": "Legacy-named symbol `test_interpolate_swr_empty_calibrations_uses_legacy` in tests/test_swr_calibration.py:115"}, "properties": {"repobilityId": "317f8e1b8e8ffd07", "scanner": "scanner-primary", "fingerprint": "e3453d1f1257ace1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b80226f8afd70d2f", "level": "note", "message": {"text": "Legacy-named symbol `test_bus_prefers_neutral_surface_over_legacy` in tests/test_audio_bus.py:417"}, "properties": {"repobilityId": "9ee572aa98532485", "scanner": "scanner-primary", "fingerprint": "b80226f8afd70d2f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-194233299a8c3336", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_yaesu_web_projection.py:45"}, "properties": {"repobilityId": "c4ab3e31dfb4c01e", "scanner": "scanner-primary", "fingerprint": "194233299a8c3336", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1a5ccf170b247104", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_memory_commands.py:193"}, "properties": {"repobilityId": "bd37b57b303c92d8", "scanner": "scanner-primary", "fingerprint": "1a5ccf170b247104", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1795577ca29c469e", "level": "note", "message": {"text": "Legacy-named symbol `test_default_schema_is_v2` in tests/test_diagnostics_bundle.py:303"}, "properties": {"repobilityId": "9705ca9979ddc910", "scanner": "scanner-primary", "fingerprint": "1795577ca29c469e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0d4277dc903a6187", "level": "note", "message": {"text": "Legacy-named symbol `_replay_legacy` in tests/test_web_audio_session_rx.py:225"}, "properties": {"repobilityId": "af932e75fb38a87f", "scanner": "scanner-primary", "fingerprint": "0d4277dc903a6187", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b433769589688b6a", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/test_audio_rx_tx_transition.py:377"}, "properties": {"repobilityId": "cdaaff4a40132405", "scanner": "scanner-primary", "fingerprint": "b433769589688b6a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-36d7106556a1fe94", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/test_rigctld_handler.py:5133"}, "properties": {"repobilityId": "f2c1bd3c15951b76", "scanner": "scanner-primary", "fingerprint": "36d7106556a1fe94", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1cf5b1b20e3e674f", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_pcm_e2e.py:54"}, "properties": {"repobilityId": "78c99bf0813f9abc", "scanner": "scanner-primary", "fingerprint": "1cf5b1b20e3e674f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-68263da60b579815", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/test_serial_backend_smoke.py:356"}, "properties": {"repobilityId": "4f2af0d6bf1f36d1", "scanner": "scanner-primary", "fingerprint": "68263da60b579815", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b9021713e2aef86d", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/test_civ_rx_short_frame_robustness.py:82"}, "properties": {"repobilityId": "01dffd6d31fed320", "scanner": "scanner-primary", "fingerprint": "b9021713e2aef86d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-effb34d8af243d3c", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/test_lifecycle_diagnostics.py:68"}, "properties": {"repobilityId": "b817cd21155da0dc", "scanner": "scanner-primary", "fingerprint": "effb34d8af243d3c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c9f6078aa372d02", "level": "none", "message": {"text": "Commented-code block (8 lines) in tests/test_radio_poller_coverage.py:1464"}, "properties": {"repobilityId": "99a09e8cbe6af36c", "scanner": "scanner-primary", "fingerprint": "6c9f6078aa372d02", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef91937830ba1dac", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_handlers_coverage.py:96"}, "properties": {"repobilityId": "f37511d7a310864e", "scanner": "scanner-primary", "fingerprint": "ef91937830ba1dac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b354873731672346", "level": "note", "message": {"text": "Legacy-named symbol `test_list_devices_returns_copy` in tests/test_audio_backend.py:259"}, "properties": {"repobilityId": "69769816d93ef61c", "scanner": "scanner-primary", "fingerprint": "b354873731672346", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e436984a51a3ce4c", "level": "note", "message": {"text": "Legacy-named symbol `stale_executor_copy` in tests/test_acquisition_scheduler.py:279"}, "properties": {"repobilityId": "eef2063f679c85ec", "scanner": "scanner-primary", "fingerprint": "e436984a51a3ce4c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3f79dfb553e42f97", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/test_rig_loader.py:845"}, "properties": {"repobilityId": "1c7aa0554b4b8b52", "scanner": "scanner-primary", "fingerprint": "3f79dfb553e42f97", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a231c5e38c41691", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/test_per_receiver_vfo_roundtrip.py:114"}, "properties": {"repobilityId": "acb16a78e499a80e", "scanner": "scanner-primary", "fingerprint": "2a231c5e38c41691", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-395919c286837792", "level": "note", "message": {"text": "Legacy-named symbol `test_retransmit_loop_cleans_old` in tests/test_transport.py:656"}, "properties": {"repobilityId": "28faac3ab930bcb7", "scanner": "scanner-primary", "fingerprint": "395919c286837792", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-33a38a9fd8b929ed", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_yaesu_cat_observation_adapter.py:164"}, "properties": {"repobilityId": "6a5dbeca0e94279d", "scanner": "scanner-primary", "fingerprint": "33a38a9fd8b929ed", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-94faca8335a4c5de", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/test_icom_receiver_tier.py:311"}, "properties": {"repobilityId": "d2df938508fba134", "scanner": "scanner-primary", "fingerprint": "94faca8335a4c5de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1019e797555c1a08", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/test_security_headers.py:26"}, "properties": {"repobilityId": "8651c465c8a92a5f", "scanner": "scanner-primary", "fingerprint": "1019e797555c1a08", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55990a019bae0c19", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_usb_audio_resolve.py:518"}, "properties": {"repobilityId": "a22fe4280c672f9c", "scanner": "scanner-primary", "fingerprint": "55990a019bae0c19", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30fa5cb2715a9ccf", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_radio_coverage.py:1465"}, "properties": {"repobilityId": "36d8dc6cb478c3b2", "scanner": "scanner-primary", "fingerprint": "30fa5cb2715a9ccf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8208769c176ce939", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/_diagnostics_mock_server.py:24"}, "properties": {"repobilityId": "a0099101f311d414", "scanner": "scanner-primary", "fingerprint": "8208769c176ce939", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5e5dcd31f8674a71", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/test_civ_rx_coverage.py:2341"}, "properties": {"repobilityId": "2a566cbbd4589d42", "scanner": "scanner-primary", "fingerprint": "5e5dcd31f8674a71", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-11cf1459f1b05f1c", "level": "note", "message": {"text": "Legacy-named symbol `test_is_fresh_expired_when_timestamp_is_old` in tests/test_state_cache.py:135"}, "properties": {"repobilityId": "65ff1650a96abbf2", "scanner": "scanner-primary", "fingerprint": "11cf1459f1b05f1c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3d8dbd1aaa00fa16", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_profiles_runtime.py:174"}, "properties": {"repobilityId": "c10789b5db5f80ec", "scanner": "scanner-primary", "fingerprint": "3d8dbd1aaa00fa16", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b95fb21779dcfcbf", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_radio.py:441"}, "properties": {"repobilityId": "92369906a4f7b7ac", "scanner": "scanner-primary", "fingerprint": "b95fb21779dcfcbf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2cb9c2ca8dcb2640", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_web_audio_adaptive_egress.py:262"}, "properties": {"repobilityId": "88f2dae420f2182c", "scanner": "scanner-primary", "fingerprint": "2cb9c2ca8dcb2640", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b4ec6abc4e5f208", "level": "note", "message": {"text": "Legacy-named symbol `seq1_old` in tests/test_scope.py:421"}, "properties": {"repobilityId": "15cd53495be1d4a8", "scanner": "scanner-primary", "fingerprint": "0b4ec6abc4e5f208", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d5251b17b9fed1a4", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/integration/test_rigctld_wsjtx.py:397"}, "properties": {"repobilityId": "34acaa617e8e47c8", "scanner": "scanner-primary", "fingerprint": "d5251b17b9fed1a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-afafe35757b06759", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/smoke/test_audio_path_smoke.py:375"}, "properties": {"repobilityId": "e287047eb54eeda3", "scanner": "scanner-primary", "fingerprint": "afafe35757b06759", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cd836a170f6a0b6d", "level": "note", "message": {"text": "Legacy-named symbol `test_probe_unused` in tests/validation/test_generator.py:224"}, "properties": {"repobilityId": "f8c3dc6eabdc02fc", "scanner": "scanner-primary", "fingerprint": "cd836a170f6a0b6d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-262a8499e9d48bf1", "level": "none", "message": {"text": "Commented-code block (11 lines) in tests/contracts/test_audio_transport_conformance.py:356"}, "properties": {"repobilityId": "51e03dbb7ed567d9", "scanner": "scanner-primary", "fingerprint": "262a8499e9d48bf1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-99c81913907aa45c", "level": "none", "message": {"text": "Commented-code block (5 lines) in docs/plans/discovery-artifacts/discovery_graph.py:360"}, "properties": {"repobilityId": "45c66c0c58c6f920", "scanner": "scanner-primary", "fingerprint": "99c81913907aa45c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d42b8d25060adf2", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/rigplane/commands/commander.py:23"}, "properties": {"repobilityId": "3ef0f48a18fbcf55", "scanner": "scanner-primary", "fingerprint": "0d42b8d25060adf2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c870e22602767e2e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rigplane/cli/__init__.py:3377"}, "properties": {"repobilityId": "d2a9a7a3bc7210f9", "scanner": "scanner-primary", "fingerprint": "c870e22602767e2e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cc8f487dce6093ff", "level": "note", "message": {"text": "Stub function `_noop_pkt` (body is just `pass`/`return`) \u2014 src/rigplane/cli/__init__.py:1832"}, "properties": {"repobilityId": "2c10fe04b574b4e3", "scanner": "scanner-primary", "fingerprint": "cc8f487dce6093ff", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-6d969c4ba5f234b5", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/rigplane/cli/_validate.py:736"}, "properties": {"repobilityId": "d64f84dffc4fffcc", "scanner": "scanner-primary", "fingerprint": "6d969c4ba5f234b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f59967d49f57d49a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rigplane/cli/_diagnose.py:38"}, "properties": {"repobilityId": "cd4d4f816ad1aad8", "scanner": "scanner-primary", "fingerprint": "f59967d49f57d49a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5e11f8cc5c4e2848", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rigplane/rigctld/protocol.py:39"}, "properties": {"repobilityId": "b2ae8005c60a6430", "scanner": "scanner-primary", "fingerprint": "5e11f8cc5c4e2848", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c0656b6b317406c0", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/rigplane/rigctld/handler.py:83"}, "properties": {"repobilityId": "279e0266392ac7d6", "scanner": "scanner-primary", "fingerprint": "c0656b6b317406c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-892be80726e23cd6", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rigplane/rigctld/server.py:785"}, "properties": {"repobilityId": "d8c90a27ac107585", "scanner": "scanner-primary", "fingerprint": "892be80726e23cd6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d3e9dd59de5b54f4", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rigplane/audio/usb_driver.py:38"}, "properties": {"repobilityId": "2b3f17f4b614cebd", "scanner": "scanner-primary", "fingerprint": "d3e9dd59de5b54f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e4ee1a1f4339560a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rigplane/audio/fft_scope.py:36"}, "properties": {"repobilityId": "6522ac7bd614b5a5", "scanner": "scanner-primary", "fingerprint": "e4ee1a1f4339560a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5b8f6c7c0294ea46", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/rigplane/audio/session.py:80"}, "properties": {"repobilityId": "d205527655699b64", "scanner": "scanner-primary", "fingerprint": "5b8f6c7c0294ea46", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-167624aaa38c2892", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/rigplane/audio/bridge.py:291"}, "properties": {"repobilityId": "bc5386d2a62ebe60", "scanner": "scanner-primary", "fingerprint": "167624aaa38c2892", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-21da9d73227fe38f", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/rigplane/audio/bus.py:63"}, "properties": {"repobilityId": "4947d29b91b2c6fc", "scanner": "scanner-primary", "fingerprint": "21da9d73227fe38f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-becba4423c80d716", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/rigplane/audio/backend.py:744"}, "properties": {"repobilityId": "faa20c76d975ea03", "scanner": "scanner-primary", "fingerprint": "becba4423c80d716", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-17eec94903847769", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rigplane/validation/hardware.py:117"}, "properties": {"repobilityId": "2cfd4db36595833b", "scanner": "scanner-primary", "fingerprint": "17eec94903847769", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-172e963ae145c741", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/rigplane/validation/audio_checks.py:90"}, "properties": {"repobilityId": "9a6c7f0c870ced2f", "scanner": "scanner-primary", "fingerprint": "172e963ae145c741", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-11982456874cde65", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/rigplane/validation/runner.py:123"}, "properties": {"repobilityId": "816fea98298da525", "scanner": "scanner-primary", "fingerprint": "11982456874cde65", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c0363b306d18a25", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rigplane/validation/registry/_system.py:151"}, "properties": {"repobilityId": "9806b582d950402e", "scanner": "scanner-primary", "fingerprint": "6c0363b306d18a25", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a5df120bed80fb55", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rigplane/web/discovery.py:185"}, "properties": {"repobilityId": "5f4499c3d7d5fd58", "scanner": "scanner-primary", "fingerprint": "a5df120bed80fb55", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1047f33a8c884d3f", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rigplane/web/tls.py:87"}, "properties": {"repobilityId": "64bded465c054e2a", "scanner": "scanner-primary", "fingerprint": "1047f33a8c884d3f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cd6ad8e73892d4d0", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/rigplane/web/server.py:425"}, "properties": {"repobilityId": "09dfca2cc4710cdd", "scanner": "scanner-primary", "fingerprint": "cd6ad8e73892d4d0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-822e5f51af471ee6", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/rigplane/web/radio_poller.py:729"}, "properties": {"repobilityId": "13b2c6a135a10454", "scanner": "scanner-primary", "fingerprint": "822e5f51af471ee6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-10814c2f3dd0b7ab", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/rigplane/web/runtime_helpers.py:179"}, "properties": {"repobilityId": "48e476e68eb408a3", "scanner": "scanner-primary", "fingerprint": "10814c2f3dd0b7ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-10af5d9ffb33fa4b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rigplane/web/handlers/diagnostics.py:366"}, "properties": {"repobilityId": "1d7f1253125758d7", "scanner": "scanner-primary", "fingerprint": "10af5d9ffb33fa4b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ecac27d4891dc5ce", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rigplane/web/handlers/control.py:432"}, "properties": {"repobilityId": "c0f9ec31ed332bea", "scanner": "scanner-primary", "fingerprint": "ecac27d4891dc5ce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c121ef1f0d0446dd", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rigplane/web/handlers/audio.py:48"}, "properties": {"repobilityId": "03e304f31630e62b", "scanner": "scanner-primary", "fingerprint": "c121ef1f0d0446dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-549f5dd901cb333f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rigplane/backends/_icom_serial_base.py:87"}, "properties": {"repobilityId": "707bd2033a9d27e6", "scanner": "scanner-primary", "fingerprint": "549f5dd901cb333f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fc55c8f29f96e915", "level": "note", "message": {"text": "Stub function `_ensure_audio_started` (body is just `pass`/`return`) \u2014 src/rigplane/backends/_icom_serial_base.py:821"}, "properties": {"repobilityId": "7b633ef07d781e1c", "scanner": "scanner-primary", "fingerprint": "fc55c8f29f96e915", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-95aaf9607bbdab5c", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/rigplane/backends/factory.py:86"}, "properties": {"repobilityId": "d22aa23b5562392f", "scanner": "scanner-primary", "fingerprint": "95aaf9607bbdab5c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f329e1aa490d6a6", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/rigplane/backends/rigctld_client/transport.py:113"}, "properties": {"repobilityId": "c503e14b5dcce7b6", "scanner": "scanner-primary", "fingerprint": "2f329e1aa490d6a6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d0e12c4ed35f429", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/rigplane/backends/rigctld_client/radio.py:441"}, "properties": {"repobilityId": "59f17e4f7e151983", "scanner": "scanner-primary", "fingerprint": "5d0e12c4ed35f429", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5e704af7d32c46a5", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/rigplane/backends/icom7610/drivers/serial_stub.py:217"}, "properties": {"repobilityId": "b24066234ce3536c", "scanner": "scanner-primary", "fingerprint": "5e704af7d32c46a5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d0cb586a973bfa1b", "level": "note", "message": {"text": "Stub function `set_vfo` (body is just `pass`/`return`) \u2014 src/rigplane/backends/icom7610/drivers/serial_stub.py:621"}, "properties": {"repobilityId": "62e50a7b5b78a61a", "scanner": "scanner-primary", "fingerprint": "d0cb586a973bfa1b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-003e123021f9cc0c", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/rigplane/backends/icom7610/drivers/serial_session.py:162"}, "properties": {"repobilityId": "c03c56ca18074905", "scanner": "scanner-primary", "fingerprint": "003e123021f9cc0c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4df0fd57e3c21d04", "level": "note", "message": {"text": "Stub function `start_ping_loop` (body is just `pass`/`return`) \u2014 src/rigplane/backends/icom7610/drivers/serial_session.py:108"}, "properties": {"repobilityId": "9f35234c9cbedd72", "scanner": "scanner-primary", "fingerprint": "4df0fd57e3c21d04", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-bf2f4b591ea77e0a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rigplane/backends/yaesu_cat/observations.py:64"}, "properties": {"repobilityId": "29fa87d92cefea9c", "scanner": "scanner-primary", "fingerprint": "bf2f4b591ea77e0a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-27454ac76e6f91c7", "level": "none", "message": {"text": "Commented-code block (11 lines) in src/rigplane/backends/yaesu_cat/radio.py:43"}, "properties": {"repobilityId": "70a6e15de283660d", "scanner": "scanner-primary", "fingerprint": "27454ac76e6f91c7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-42cebec4cd62244a", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/rigplane/runtime/radios.py:73"}, "properties": {"repobilityId": "3a780423afbe250f", "scanner": "scanner-primary", "fingerprint": "42cebec4cd62244a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-47bdf57d00990d7b", "level": "note", "message": {"text": "Legacy-named symbol `_replay_legacy` in src/rigplane/runtime/_audio_recovery.py:157"}, "properties": {"repobilityId": "e2db676bd0fd89be", "scanner": "scanner-primary", "fingerprint": "47bdf57d00990d7b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b0a6fce53907b0dd", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/rigplane/runtime/profiles_runtime.py:201"}, "properties": {"repobilityId": "1a7e145499c83305", "scanner": "scanner-primary", "fingerprint": "b0a6fce53907b0dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e09dbaed9858f37d", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/rigplane/runtime/sync.py:140"}, "properties": {"repobilityId": "27c9030158ccffca", "scanner": "scanner-primary", "fingerprint": "e09dbaed9858f37d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30639c2d969d594a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rigplane/runtime/_civ_rx.py:69"}, "properties": {"repobilityId": "9a892a70143fd5b5", "scanner": "scanner-primary", "fingerprint": "30639c2d969d594a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6628e314c7b51226", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rigplane/runtime/radio.py:324"}, "properties": {"repobilityId": "26f1a31c27094030", "scanner": "scanner-primary", "fingerprint": "6628e314c7b51226", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0a2d90a62aafe280", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/rigplane/diagnostics/redaction.py:49"}, "properties": {"repobilityId": "202c3eb6bc1018ce", "scanner": "scanner-primary", "fingerprint": "0a2d90a62aafe280", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8102f063be92f33", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rigplane/diagnostics/_logging.py:79"}, "properties": {"repobilityId": "6463d513ebb705f2", "scanner": "scanner-primary", "fingerprint": "c8102f063be92f33", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a0ae0da975e5b79e", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/rigplane/core/capabilities.py:80"}, "properties": {"repobilityId": "a7bf7db0f7dcaf1a", "scanner": "scanner-primary", "fingerprint": "a0ae0da975e5b79e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f6d634c605af93dd", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/rigplane/core/types.py:197"}, "properties": {"repobilityId": "4726918582675927", "scanner": "scanner-primary", "fingerprint": "f6d634c605af93dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c04991518f92c307", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/rigplane/core/transport.py:134"}, "properties": {"repobilityId": "76eb072e4470766a", "scanner": "scanner-primary", "fingerprint": "c04991518f92c307", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4e500759df7edb95", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rigplane/profiles/__init__.py:175"}, "properties": {"repobilityId": "8345999d0196c32b", "scanner": "scanner-primary", "fingerprint": "4e500759df7edb95", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0366e7613b143e17", "level": "note", "message": {"text": "Legacy-named symbol `has_legacy` in src/rigplane/profiles/rig_loader.py:1100"}, "properties": {"repobilityId": "63707a0a296ed2b9", "scanner": "scanner-primary", "fingerprint": "0366e7613b143e17", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "83e7495a0e11ebcf", "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": "495cec8087ded158", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-18728ded1c00a072", "level": "note", "message": {"text": "Near-duplicate function bodies in 27 places"}, "properties": {"repobilityId": "c2b4752f98e9ab10", "scanner": "scanner-primary", "fingerprint": "18728ded1c00a072", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-9dad557909b86499", "level": "note", "message": {"text": "Near-duplicate function bodies in 10 places"}, "properties": {"repobilityId": "7f71ef60391e87a0", "scanner": "scanner-primary", "fingerprint": "9dad557909b86499", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-fe1d9311d6aee734", "level": "note", "message": {"text": "Near-duplicate function bodies in 12 places"}, "properties": {"repobilityId": "54ae41c1065a596b", "scanner": "scanner-primary", "fingerprint": "fe1d9311d6aee734", "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": "acfc09542af198ee", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-46969939caf8120b", "level": "note", "message": {"text": "Near-duplicate function bodies in 9 places"}, "properties": {"repobilityId": "138738fa59a0c312", "scanner": "scanner-primary", "fingerprint": "46969939caf8120b", "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": "984b0747eb6e65ae", "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": "f915a5977627265b", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-380b7cb95b387b9c", "level": "note", "message": {"text": "Near-duplicate function bodies in 11 places"}, "properties": {"repobilityId": "28ddc140ece571a6", "scanner": "scanner-primary", "fingerprint": "380b7cb95b387b9c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "fc9f6a56782e8187", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-33a6b62e30ce7ab4", "level": "note", "message": {"text": "Near-duplicate function bodies in 6 places"}, "properties": {"repobilityId": "f7cf354ea80aa569", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-9dad557909b86499", "level": "note", "message": {"text": "Near-duplicate function bodies in 10 places"}, "properties": {"repobilityId": "46a65957aee300a0", "scanner": "scanner-primary", "fingerprint": "9dad557909b86499", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-33a6b62e30ce7ab4", "level": "note", "message": {"text": "Near-duplicate function bodies in 6 places"}, "properties": {"repobilityId": "06fc715a4b5412b4", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "9e5bc642f2ad391c", "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": "cdc3c8dfe5e1ec2e", "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": "ccbaa3bc4ee61d0a", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "ba1d98b7f525e125", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "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": "af8c7459feb78218", "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": "4ed3893a150058fc", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}