{"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-46270f3d52eb2b93", "name": "Possibly dead Python function: handle_join_trigger", "shortDescription": {"text": "Possibly dead Python function: handle_join_trigger"}, "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-ee8536311f715223", "name": "Possibly dead Python function: log_message", "shortDescription": {"text": "Possibly dead Python function: log_message"}, "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-7e19553913d3a666", "name": "Possibly dead Python function: do_GET", "shortDescription": {"text": "Possibly dead Python function: do_GET"}, "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-e9f001d83921555d", "name": "Possibly dead Python function: do_POST", "shortDescription": {"text": "Possibly dead Python function: do_POST"}, "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-ddfb4446d9f7b277", "name": "Possibly dead Python function: check_launchd", "shortDescription": {"text": "Possibly dead Python function: check_launchd"}, "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-7fb52e43b2b29b93", "name": "Possibly dead Python function: check_stale_results", "shortDescription": {"text": "Possibly dead Python function: check_stale_results"}, "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-6d5d1da99d793b5d", "name": "Possibly dead Python function: analyze_topics", "shortDescription": {"text": "Possibly dead Python function: analyze_topics"}, "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-0624df6dccf70c0a", "name": "Possibly dead Python function: detect_duplicate_responses", "shortDescription": {"text": "Possibly dead Python function: detect_duplicate_responses"}, "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-afe4402f13b4b440", "name": "Possibly dead Python function: detect_access_issues", "shortDescription": {"text": "Possibly dead Python function: detect_access_issues"}, "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-23cd12da0368a517", "name": "Possibly dead Python function: detect_task_timeout", "shortDescription": {"text": "Possibly dead Python function: detect_task_timeout"}, "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-f88693172f472979", "name": "Possibly dead Python function: detect_confusion", "shortDescription": {"text": "Possibly dead Python function: detect_confusion"}, "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-7218c6c145cf3b24", "name": "Possibly dead Python function: detect_fabrication", "shortDescription": {"text": "Possibly dead Python function: detect_fabrication"}, "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-d7b940d5d1cfa7c1", "name": "Possibly dead Python function: detect_reconnect_leak", "shortDescription": {"text": "Possibly dead Python function: detect_reconnect_leak"}, "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-3ef6387b7afb622c", "name": "Possibly dead Python function: detect_repeated_command", "shortDescription": {"text": "Possibly dead Python function: detect_repeated_command"}, "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-d0885f9c0e10207f", "name": "Possibly dead Python function: detect_identity_confusion", "shortDescription": {"text": "Possibly dead Python function: detect_identity_confusion"}, "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-07976b329cf42536", "name": "Possibly dead Python function: detect_recording_confusion", "shortDescription": {"text": "Possibly dead Python function: detect_recording_confusion"}, "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-e2c5e50a457d282e", "name": "Possibly dead Python function: detect_scroll_frustration", "shortDescription": {"text": "Possibly dead Python function: detect_scroll_frustration"}, "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-de423845975a0ac0", "name": "Possibly dead Python function: detect_stt_retry", "shortDescription": {"text": "Possibly dead Python function: detect_stt_retry"}, "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-0f44b9366f63d580", "name": "Possibly dead Python function: log_message", "shortDescription": {"text": "Possibly dead Python function: log_message"}, "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-558c124e4a7376dd", "name": "Possibly dead Python function: do_GET", "shortDescription": {"text": "Possibly dead Python function: do_GET"}, "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-bbfb8a3bdaa464e5", "name": "Possibly dead Python function: log_message", "shortDescription": {"text": "Possibly dead Python function: log_message"}, "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-6b8ff4d49b7e5864", "name": "Possibly dead Python function: do_OPTIONS", "shortDescription": {"text": "Possibly dead Python function: do_OPTIONS"}, "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-48ea116991072bb9", "name": "Possibly dead Python function: do_GET", "shortDescription": {"text": "Possibly dead Python function: do_GET"}, "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-493d87a45f0896f8", "name": "Possibly dead Python function: do_DELETE", "shortDescription": {"text": "Possibly dead Python function: do_DELETE"}, "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-6afd2e5502b1da0c", "name": "Possibly dead Python function: push_image", "shortDescription": {"text": "Possibly dead Python function: push_image"}, "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-e94f70a8cdc62b98", "name": "Possibly dead Python function: fire_webhook", "shortDescription": {"text": "Possibly dead Python function: fire_webhook"}, "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-d08f8bb30f2ddad3", "name": "Possibly dead Python function: log_message", "shortDescription": {"text": "Possibly dead Python function: log_message"}, "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-5961effc60bbc11d", "name": "Possibly dead Python function: do_OPTIONS", "shortDescription": {"text": "Possibly dead Python function: do_OPTIONS"}, "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-45a0dbad5a7f8f4b", "name": "Possibly dead Python function: do_GET", "shortDescription": {"text": "Possibly dead Python function: do_GET"}, "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-1ffff4c510a50c85", "name": "Possibly dead Python function: do_POST", "shortDescription": {"text": "Possibly dead Python function: do_POST"}, "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-43b20cc2406be880", "name": "Stray `console.log` in TS/JS \u2014 scripts/poc-voice-metrics-reset.js:119", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/poc-voice-metrics-reset.js:119"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ffce7ef201463ceb", "name": "TODO/FIXME marker in shipping code \u2014 skills/discord-voice/scripts/discord-voice-server.ts:436", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 skills/discord-voice/scripts/discord-voice-server.ts:436"}, "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-de791dba5fd8b175", "name": "Stray `console.log` in TS/JS \u2014 skills/discord-voice/scripts/discord-voice-server.ts:125", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/discord-voice/scripts/discord-voice-server.ts:125"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-de42e12b5ba270ff", "name": "Stray `console.log` in TS/JS \u2014 skills/overlay-apps/app/control-server.js:178", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/overlay-apps/app/control-server.js:178"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7f0ad0f3b3630b21", "name": "Stray `console.log` in TS/JS \u2014 skills/zoom/tools.ts:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/zoom/tools.ts:58"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1c67cfe0fcf5d64a", "name": "Stray `console.log` in TS/JS \u2014 skills/gws-gmail-voice/tools.ts:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/gws-gmail-voice/tools.ts:82"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4d3ac78a22dd8430", "name": "Stray `console.log` in TS/JS \u2014 skills/screen-companion/tools.ts:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/screen-companion/tools.ts:89"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7b696a54d1a301c5", "name": "Stray `console.log` in TS/JS \u2014 skills/screen-companion/scripts/activate.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/screen-companion/scripts/activate.ts:32"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-30605941dea6e484", "name": "Stray `console.log` in TS/JS \u2014 skills/obsidian-vault/tools.ts:140", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/obsidian-vault/tools.ts:140"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bfe12b5339d2f9fe", "name": "Stray `console.log` in TS/JS \u2014 skills/quota-tracker/scripts/credential-proxy.ts:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/quota-tracker/scripts/credential-proxy.ts:82"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-24986e0de8002340", "name": "Stray `console.log` in TS/JS \u2014 skills/screen-record/scripts/narration-tee.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/screen-record/scripts/narration-tee.ts:31"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a8b5400a1a7fb943", "name": "Stray `console.log` in TS/JS \u2014 skills/phone-conversation/scripts/conversation-server.ts:188", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 skills/phone-conversation/scripts/conversation-server.ts:188"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0ff27ba7b6c35dce", "name": "TODO/FIXME marker in shipping code \u2014 src/vision-tools.ts:34", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/vision-tools.ts:34"}, "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-31a524a917d287ee", "name": "Stray `console.log` in TS/JS \u2014 src/vision-tools.ts:316", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/vision-tools.ts:316"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-33019eb2d7a95dc9", "name": "Stray `console.log` in TS/JS \u2014 src/cartesia-stt-provider.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/cartesia-stt-provider.ts:56"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b50f92066a894baa", "name": "Stray `console.log` in TS/JS \u2014 src/cartesia-tts.ts:137", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/cartesia-tts.ts:137"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c7edc8fd2d395a93", "name": "TODO/FIXME marker in shipping code \u2014 src/voice-agent.ts:1438", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/voice-agent.ts:1438"}, "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-0c92b5fcdca53040", "name": "Stray `console.log` in TS/JS \u2014 src/voice-agent.ts:194", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/voice-agent.ts:194"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-53e2efc51afd42e8", "name": "Stray `console.log` in TS/JS \u2014 src/recording-tools.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/recording-tools.ts:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-690e860f2e7f5e52", "name": "Stray `console.log` in TS/JS \u2014 src/artifact-cache-tools.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/artifact-cache-tools.ts:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-89238fb4c56b3b92", "name": "Stray `console.log` in TS/JS \u2014 src/browser-tools.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/browser-tools.ts:57"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9403d16947385cb4", "name": "Stray `console.log` in TS/JS \u2014 src/web-client.ts:2133", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/web-client.ts:2133"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8df6ccbbeeabaaad", "name": "Stray `console.log` in TS/JS \u2014 src/task-bridge.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/task-bridge.ts:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3d40f6a3e5f7c1dd", "name": "Stray `console.log` in TS/JS \u2014 src/voice-config-switch.ts:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/voice-config-switch.ts:76"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f5f5492afeb6d3ce", "name": "Stray `console.log` in TS/JS \u2014 src/meeting-tools.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/meeting-tools.ts:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f2dd75ef10ef6f93", "name": "Stray `console.log` in TS/JS \u2014 src/inline-tools.ts:69", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/inline-tools.ts:69"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-02d9a4c87e379234", "name": "Stray `console.log` in TS/JS \u2014 src/conversation-store.ts:107", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/conversation-store.ts:107"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b1406a51366b359d", "name": "Privileged port 15 in use", "shortDescription": {"text": "Privileged port 15 in use"}, "fullDescription": {"text": "Port 15 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-0f37e5a72a4fe2a7", "name": "Privileged port 42 in use", "shortDescription": {"text": "Privileged port 42 in use"}, "fullDescription": {"text": "Port 42 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-5482a56d3e8fa827", "name": "Insecure pattern 'node_child_process' in skills/discord-voice/scripts/discord-voice-server.ts:48", "shortDescription": {"text": "Insecure pattern 'node_child_process' in skills/discord-voice/scripts/discord-voice-server.ts:48"}, "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-92e55591b8cb1d1e", "name": "Insecure pattern 'cors_wildcard' in skills/overlay-apps/app/control-server.js:39", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in skills/overlay-apps/app/control-server.js:39"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6d8a916faf55f42e", "name": "Insecure pattern 'node_child_process' in skills/overlay-apps/app/stats.js:12", "shortDescription": {"text": "Insecure pattern 'node_child_process' in skills/overlay-apps/app/stats.js:12"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-28b0e7a8847a8f2e", "name": "Insecure pattern 'direct_innerhtml_assignment' in skills/overlay-apps/app/stats-renderer.js:65", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in skills/overlay-apps/app/stats-renderer.js:65"}, "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-7df779df5b32ca83", "name": "Insecure pattern 'node_child_process' in skills/zoom/tools.ts:10", "shortDescription": {"text": "Insecure pattern 'node_child_process' in skills/zoom/tools.ts:10"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e760f0c3df2bab0e", "name": "Insecure pattern 'node_child_process' in skills/gws-gmail-voice/tools.ts:29", "shortDescription": {"text": "Insecure pattern 'node_child_process' in skills/gws-gmail-voice/tools.ts:29"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bb258012c530195e", "name": "Insecure pattern 'node_child_process' in skills/quota-tracker/scripts/credential-proxy.ts:17", "shortDescription": {"text": "Insecure pattern 'node_child_process' in skills/quota-tracker/scripts/credential-proxy.ts:17"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c6b7f1a589135a38", "name": "Insecure pattern 'node_child_process' in skills/screen-record/scripts/narration-tee.ts:13", "shortDescription": {"text": "Insecure pattern 'node_child_process' in skills/screen-record/scripts/narration-tee.ts:13"}, "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-08b15c3b694fc54e", "name": "Insecure pattern 'node_child_process' in skills/phone-conversation/scripts/conversation-server.ts:79", "shortDescription": {"text": "Insecure pattern 'node_child_process' in skills/phone-conversation/scripts/conversation-server.ts:79"}, "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-88fffeb5d1b324f7", "name": "Insecure pattern 'cors_wildcard' in skills/phone-conversation/scripts/conversation-server.ts:1302", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in skills/phone-conversation/scripts/conversation-server.ts:1302"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cd7433385258a465", "name": "Insecure pattern 'node_child_process' in src/voice-mode-resolver.ts:31", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/voice-mode-resolver.ts:31"}, "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-cb3de7a62ff5c212", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/chat-ui.ts:300", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/chat-ui.ts:300"}, "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-6c4ef2884e1863ee", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/overlay-manager-ui.ts:113", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/overlay-manager-ui.ts:113"}, "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-c2563efefec33d75", "name": "Insecure pattern 'node_child_process' in src/vision-tools.ts:22", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/vision-tools.ts:22"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e863a0921c039f8e", "name": "Insecure pattern 'node_child_process' in src/voice-agent.ts:30", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/voice-agent.ts:30"}, "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-4776328293e01469", "name": "Insecure pattern 'cors_wildcard' in src/dashboard.py:392", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in src/dashboard.py:392"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c50426fb64551eea", "name": "Insecure pattern 'node_child_process' in src/recording-tools.ts:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/recording-tools.ts:6"}, "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-f0835b258f833845", "name": "Insecure pattern 'node_child_process' in src/artifact-cache-tools.ts:9", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/artifact-cache-tools.ts:9"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-716398d18ff238f8", "name": "Insecure pattern 'node_child_process' in src/browser-tools.ts:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/browser-tools.ts:6"}, "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-8d3b510c04a7db4c", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/web-client.ts:998", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/web-client.ts:998"}, "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-828f0a061ba181b9", "name": "Insecure pattern 'direct_outerhtml_assignment' in src/web-client.ts:2369", "shortDescription": {"text": "Insecure pattern 'direct_outerhtml_assignment' in src/web-client.ts:2369"}, "fullDescription": {"text": "Found a known-risky pattern (direct_outerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ad8c4537fb634cb3", "name": "Insecure pattern 'cors_wildcard' in src/web-client.ts:3500", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in src/web-client.ts:3500"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6c0eb628e5bb094b", "name": "Insecure pattern 'cors_wildcard' in src/agent-api.py:293", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in src/agent-api.py:293"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f50d00b7a279b4e2", "name": "Insecure pattern 'node_child_process' in src/voice-config-switch.ts:25", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/voice-config-switch.ts:25"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-860e15648200b064", "name": "Insecure pattern 'node_child_process' in src/meeting-tools.ts:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/meeting-tools.ts:6"}, "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-ee144735a6ca2a8a", "name": "Insecure pattern 'node_child_process' in src/tmux-status.ts:12", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/tmux-status.ts:12"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e56e044af3f07f0d", "name": "Insecure pattern 'node_child_process' in src/inline-tools.ts:8", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/inline-tools.ts:8"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-65aa740cba4a4a73", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-960efac1c65752e5", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "peter-evans/create-pull-request@v6 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-779f2c6b0ac7f69b", "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-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d34023b91d4b2a6f", "name": "Very large file: skills/discord-voice/scripts/discord-voice-server.ts (1357 lines)", "shortDescription": {"text": "Very large file: skills/discord-voice/scripts/discord-voice-server.ts (1357 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-43fcbd52b7675449", "name": "Very large file: skills/phone-conversation/scripts/conversation-server.ts (1961 lines)", "shortDescription": {"text": "Very large file: skills/phone-conversation/scripts/conversation-server.ts (1961 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-d30fcdbc3abd5c34", "name": "Very large file: src/health-check.py (2060 lines)", "shortDescription": {"text": "Very large file: src/health-check.py (2060 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-86c3c2a3bcee9179", "name": "Very large file: src/voice-agent.ts (1521 lines)", "shortDescription": {"text": "Very large file: src/voice-agent.ts (1521 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-64de706f66b595f4", "name": "Very large file: src/web-client.ts (3903 lines)", "shortDescription": {"text": "Very large file: src/web-client.ts (3903 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-444ac2118c939b9e", "name": "Very large file: src/inline-tools.ts (1150 lines)", "shortDescription": {"text": "Very large file: src/inline-tools.ts (1150 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-45e4e51b7c54150a", "name": "Very large file: src/discord-bridge.py (3982 lines)", "shortDescription": {"text": "Very large file: src/discord-bridge.py (3982 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 1190 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 32 placeholder/mock markers across 16 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-17d866d91a7c451e", "name": "Agent instruction/config may expose a secret: CLAUDE.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: CLAUDE.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-89d361e8c8d3c93e", "name": "Agent authority lacks a verifier contract: skills/startup/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/startup/SKILL.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-4a41c3aa6efde481", "name": "Agent authority lacks a verifier contract: skills/x-twitter/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/x-twitter/SKILL.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-4d4de2cf34010827", "name": "Agent authority lacks a verifier contract: skills/deal-finder/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/deal-finder/SKILL.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-107892e593245116", "name": "Agent authority lacks a verifier contract: skills/email-find/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/email-find/SKILL.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-0d4be716a744ca77", "name": "Agent authority lacks a verifier contract: skills/discord-voice/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/discord-voice/SKILL.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-3a6a733649b129f3", "name": "Agent authority lacks a verifier contract: skills/overlay-apps/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/overlay-apps/SKILL.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-535f6a38bcdae1c3", "name": "Agent authority lacks a verifier contract: skills/open-sutando-ref/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/open-sutando-ref/SKILL.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-56041eedd6a1603d", "name": "Agent authority lacks a verifier contract: skills/gemini-tts/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/gemini-tts/SKILL.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-8d6d341a1ad4c615", "name": "Agent authority lacks a verifier contract: skills/ag2-relay/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/ag2-relay/SKILL.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-aa40a3b46de4c237", "name": "Agent authority lacks a verifier contract: skills/claude-router/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/claude-router/SKILL.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-6700b72620dc4d63", "name": "Agent authority lacks a verifier contract: skills/task-progress/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/task-progress/SKILL.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-a52d3c3fdffffe19", "name": "Agent authority lacks a verifier contract: skills/openai-tts/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/openai-tts/SKILL.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-c69f011d064b07dd", "name": "Agent authority lacks a verifier contract: skills/macos-tools/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/macos-tools/SKILL.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-f2382b4879ec919d", "name": "Agent authority lacks a verifier contract: skills/whatsapp/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/whatsapp/SKILL.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-58f309f63a0fafda", "name": "Agent authority lacks a verifier contract: skills/subscription-scanner/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/subscription-scanner/SKILL.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-ac8913fac0ab0bcb", "name": "Agent authority lacks a verifier contract: skills/audio-transcribe/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/audio-transcribe/SKILL.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-73764b4f2bc9b4e6", "name": "Agent authority lacks a verifier contract: skills/image-generation/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/image-generation/SKILL.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-f6a47ebecce40265", "name": "Agent authority lacks a verifier contract: skills/regression-search/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/regression-search/SKILL.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-f885fff8da7bff0f", "name": "Agent authority lacks a verifier contract: skills/screen-companion/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/screen-companion/SKILL.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-1784701605c9fd4f", "name": "Agent authority lacks a verifier contract: skills/morning-briefing/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/morning-briefing/SKILL.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-2d0e3977a3da7a52", "name": "Agent authority lacks a verifier contract: skills/obsidian-vault/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/obsidian-vault/SKILL.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-95ce835d94cbb83c", "name": "Agent authority lacks a verifier contract: skills/claude-gemini/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/claude-gemini/SKILL.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-4ee5bfb4b5e6f08f", "name": "Agent instruction/config may expose a secret: skills/quota-tracker/SKILL.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: skills/quota-tracker/SKILL.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-745e8311681ea04b", "name": "Agent authority lacks a verifier contract: skills/quota-tracker/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/quota-tracker/SKILL.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-ce83374cbac511e6", "name": "Agent authority lacks a verifier contract: skills/screen-record/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/screen-record/SKILL.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-fa2740ce1156f781", "name": "Agent authority lacks a verifier contract: skills/bot2bot-post/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/bot2bot-post/SKILL.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-cdc918b11dc84af9", "name": "Agent authority lacks a verifier contract: skills/agent-registry/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/agent-registry/SKILL.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-a1679d0dfb6a2d68", "name": "Commented-code block (6 lines) in tests/voice-mode-resolver.test.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in tests/voice-mode-resolver.test.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-e08574628900754e", "name": "Legacy-named symbol `files_upload_v2` in tests/slack-bridge-allowlist.test.py:5", "shortDescription": {"text": "Legacy-named symbol `files_upload_v2` in tests/slack-bridge-allowlist.test.py:5"}, "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-5de1e4cdd2f62c1f", "name": "Commented-code block (5 lines) in tests/tmux-status.test.ts:185", "shortDescription": {"text": "Commented-code block (5 lines) in tests/tmux-status.test.ts: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-d4a5425f74c31378", "name": "Commented-code block (5 lines) in tests/open-file-app-param.test.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in tests/open-file-app-param.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-bf0163203e2fbd49", "name": "Commented-code block (5 lines) in tests/env-loader.test.py:68", "shortDescription": {"text": "Commented-code block (5 lines) in tests/env-loader.test.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-1f9c1e3aeb85e800", "name": "Commented-code block (5 lines) in tests/task-bridge-isvoice.test.ts:8", "shortDescription": {"text": "Commented-code block (5 lines) in tests/task-bridge-isvoice.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-7950feaf5c148f9e", "name": "Commented-code block (7 lines) in tests/get-core-status-tool.test.ts:7", "shortDescription": {"text": "Commented-code block (7 lines) in tests/get-core-status-tool.test.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bd73500dd48a7eba", "name": "Commented-code block (10 lines) in tests/slack-bridge-access.test.py:79", "shortDescription": {"text": "Commented-code block (10 lines) in tests/slack-bridge-access.test.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-f93d47d87ddc66ab", "name": "Commented-code block (6 lines) in tests/inline-tools-press-key-app-escape.test.ts:8", "shortDescription": {"text": "Commented-code block (6 lines) in tests/inline-tools-press-key-app-escape.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-593abb702662907d", "name": "Commented-code block (6 lines) in tests/conversation-server-meeting-injection.test.ts:9", "shortDescription": {"text": "Commented-code block (6 lines) in tests/conversation-server-meeting-injection.test.ts:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7fb80887899e0335", "name": "Commented-code block (6 lines) in tests/conversation-server-no-hallucination.test.ts:6", "shortDescription": {"text": "Commented-code block (6 lines) in tests/conversation-server-no-hallucination.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-190559bd953d99c9", "name": "Commented-code block (5 lines) in tests/end-session-gate.test.ts:56", "shortDescription": {"text": "Commented-code block (5 lines) in tests/end-session-gate.test.ts:56"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a5cc788ed3d5d389", "name": "Commented-code block (5 lines) in tests/init-script.test.ts:120", "shortDescription": {"text": "Commented-code block (5 lines) in tests/init-script.test.ts:120"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-05d8f07d4b25c41d", "name": "Commented-code block (5 lines) in tests/discord-bridge-attachment-filename-sanitize.test.py:39", "shortDescription": {"text": "Commented-code block (5 lines) in tests/discord-bridge-attachment-filename-sanitize.test.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-a95bdf88e155e0ad", "name": "Commented-code block (5 lines) in tests/dm-result-multipart-upload.test.py:262", "shortDescription": {"text": "Commented-code block (5 lines) in tests/dm-result-multipart-upload.test.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-46cd40259a5c4c41", "name": "Commented-code block (7 lines) in tests/conversation-server-archive-phone-tasks.test.ts:81", "shortDescription": {"text": "Commented-code block (7 lines) in tests/conversation-server-archive-phone-tasks.test.ts:81"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-034673843e230c15", "name": "Commented-code block (5 lines) in tests/screen-companion-work-retained.test.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in tests/screen-companion-work-retained.test.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-06ecf678823d3db1", "name": "Legacy-named symbol `TestMigrationFromLegacy` in tests/workspace-default.test.py:76", "shortDescription": {"text": "Legacy-named symbol `TestMigrationFromLegacy` in tests/workspace-default.test.py:76"}, "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-31c194ff49d8b93d", "name": "Commented-code block (6 lines) in tests/phone-conversation-audio-path-guard.test.ts:11", "shortDescription": {"text": "Commented-code block (6 lines) in tests/phone-conversation-audio-path-guard.test.ts:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ba3e3813d392e47f", "name": "Commented-code block (9 lines) in tests/task-bridge-stop-at-task-delimiter.test.ts:7", "shortDescription": {"text": "Commented-code block (9 lines) in tests/task-bridge-stop-at-task-delimiter.test.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0e4f7696e1cffe2e", "name": "Commented-code block (7 lines) in tests/voice-config-owner-mode.test.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in tests/voice-config-owner-mode.test.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b83a4108a252ab60", "name": "Commented-code block (7 lines) in tests/task-bridge-fallthrough-guard.test.ts:12", "shortDescription": {"text": "Commented-code block (7 lines) in tests/task-bridge-fallthrough-guard.test.ts:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f5f6fbafd3918a27", "name": "Commented-code block (6 lines) in tests/state-paths-adoption.test.py:92", "shortDescription": {"text": "Commented-code block (6 lines) in tests/state-paths-adoption.test.py:92"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d55bffb5fc7f193a", "name": "Commented-code block (5 lines) in tests/agent-state-endpoint.test.ts:9", "shortDescription": {"text": "Commented-code block (5 lines) in tests/agent-state-endpoint.test.ts:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5014f5bfd4a2aad2", "name": "Commented-code block (6 lines) in tests/phone-conversation-loopback-guard.test.ts:11", "shortDescription": {"text": "Commented-code block (6 lines) in tests/phone-conversation-loopback-guard.test.ts:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6d03527f4ffc34d7", "name": "Commented-code block (5 lines) in tests/discord-chunker.test.py:16", "shortDescription": {"text": "Commented-code block (5 lines) in tests/discord-chunker.test.py:16"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2e72d4be34e932be", "name": "Commented-code block (5 lines) in tests/result-channel-key.test.ts:169", "shortDescription": {"text": "Commented-code block (5 lines) in tests/result-channel-key.test.ts:169"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6a1a97b30fa7ebd4", "name": "Commented-code block (5 lines) in tests/task-priority.test.py:69", "shortDescription": {"text": "Commented-code block (5 lines) in tests/task-priority.test.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-aa27f5a0a0978098", "name": "Commented-code block (6 lines) in scripts/poc-voice-metrics-reset.js:7", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/poc-voice-metrics-reset.js: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-c63a170863de4e97", "name": "Commented-code block (5 lines) in scripts/regen-wire-list.py:249", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/regen-wire-list.py:249"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-494c192331cb1b26", "name": "Commented-code block (5 lines) in skills/x-twitter/x-post.py:25", "shortDescription": {"text": "Commented-code block (5 lines) in skills/x-twitter/x-post.py:25"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-644bef111befc34b", "name": "Network/subprocess call without timeout or try/except \u2014 skills/x-twitter/x-post.py:125", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/x-twitter/x-post.py:125"}, "fullDescription": {"text": "`requests.post(...)` 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-d6c8a056642a3189", "name": "Commented-code block (7 lines) in skills/deal-finder/scripts/scan.py:143", "shortDescription": {"text": "Commented-code block (7 lines) in skills/deal-finder/scripts/scan.py: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-86abb66a8a021f36", "name": "Commented-code block (8 lines) in skills/discord-voice/scripts/discord-voice-server.ts:109", "shortDescription": {"text": "Commented-code block (8 lines) in skills/discord-voice/scripts/discord-voice-server.ts:109"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-08b1eb3c9b4fba5e", "name": "Commented-code block (5 lines) in skills/discord-voice/scripts/join_trigger.py:381", "shortDescription": {"text": "Commented-code block (5 lines) in skills/discord-voice/scripts/join_trigger.py:381"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-007bb3307f433b32", "name": "Commented-code block (5 lines) in skills/overlay-apps/app/main.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in skills/overlay-apps/app/main.js: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-23f0da963437461c", "name": "Network/subprocess call without timeout or try/except \u2014 skills/open-sutando-ref/scripts/resolve.py:120", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/open-sutando-ref/scripts/resolve.py:120"}, "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-12784c16ca15544d", "name": "Network/subprocess call without timeout or try/except \u2014 skills/voice-agent-test-harness/scripts/audio.py:52", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/voice-agent-test-harness/scripts/audio.py:52"}, "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-b80e85844996d9c4", "name": "Commented-code block (5 lines) in skills/ag2-relay/remote-task-client.py:78", "shortDescription": {"text": "Commented-code block (5 lines) in skills/ag2-relay/remote-task-client.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-5d99088213eee5c3", "name": "Commented-code block (6 lines) in skills/call-diagnostics/scripts/diagnose.py:175", "shortDescription": {"text": "Commented-code block (6 lines) in skills/call-diagnostics/scripts/diagnose.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-253a4d09c3f9396a", "name": "Network/subprocess call without timeout or try/except \u2014 skills/make-viral-video/scripts/verify_video.py:39", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/make-viral-video/scripts/verify_video.py:39"}, "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-15403911878abe2d", "name": "Commented-code block (6 lines) in skills/make-viral-video/scripts/render.py:487", "shortDescription": {"text": "Commented-code block (6 lines) in skills/make-viral-video/scripts/render.py:487"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-be12f2a6ccd75e2b", "name": "Network/subprocess call without timeout or try/except \u2014 skills/make-viral-video/scripts/render.py:333", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/make-viral-video/scripts/render.py:333"}, "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-a170f257157a1624", "name": "Commented-code block (5 lines) in skills/zoom/tools.ts:37", "shortDescription": {"text": "Commented-code block (5 lines) in skills/zoom/tools.ts:37"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7de2e7ad80ae72a2", "name": "Commented-code block (10 lines) in skills/gws-gmail-voice/tools.ts:8", "shortDescription": {"text": "Commented-code block (10 lines) in skills/gws-gmail-voice/tools.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-43bdce45edd3e993", "name": "Commented-code block (7 lines) in skills/screen-companion/tools.ts:29", "shortDescription": {"text": "Commented-code block (7 lines) in skills/screen-companion/tools.ts:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9479420be536649c", "name": "Commented-code block (6 lines) in skills/screen-companion/scripts/load-config.ts:33", "shortDescription": {"text": "Commented-code block (6 lines) in skills/screen-companion/scripts/load-config.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-da9675167e689a53", "name": "Commented-code block (7 lines) in skills/obsidian-vault/tools.ts:7", "shortDescription": {"text": "Commented-code block (7 lines) in skills/obsidian-vault/tools.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-c32e59fc254c1264", "name": "Commented-code block (10 lines) in skills/quota-tracker/scripts/read-quota.py:31", "shortDescription": {"text": "Commented-code block (10 lines) in skills/quota-tracker/scripts/read-quota.py:31"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7a8d2be58ea0ce84", "name": "Network/subprocess call without timeout or try/except \u2014 skills/screen-record/scripts/subtitle.py:62", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/screen-record/scripts/subtitle.py:62"}, "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-e347c8e4292e4e0a", "name": "Commented-code block (6 lines) in skills/screen-record/scripts/record.py:143", "shortDescription": {"text": "Commented-code block (6 lines) in skills/screen-record/scripts/record.py: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-062332c915813081", "name": "Network/subprocess call without timeout or try/except \u2014 skills/screen-record/scripts/record.py:18", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/screen-record/scripts/record.py:18"}, "fullDescription": {"text": "`subprocess.Popen(...)` 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-abd5ba856fd19ef6", "name": "Commented-code block (5 lines) in skills/phone-conversation/scripts/loopback_guard.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in skills/phone-conversation/scripts/loopback_guard.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-385cd37784d8bc74", "name": "Commented-code block (12 lines) in skills/phone-conversation/scripts/audio_path_guard.ts:4", "shortDescription": {"text": "Commented-code block (12 lines) in skills/phone-conversation/scripts/audio_path_guard.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8402af05dd23d201", "name": "Commented-code block (9 lines) in skills/phone-conversation/scripts/conversation-server.ts:125", "shortDescription": {"text": "Commented-code block (9 lines) in skills/phone-conversation/scripts/conversation-server.ts:125"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6bfa8a44df66e213", "name": "`fetch()` without try/.catch or AbortSignal \u2014 skills/phone-conversation/scripts/conversation-server.ts:1269", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 skills/phone-conversation/scripts/conversation-server.ts:1269"}, "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-78d5d2759551d945", "name": "Network/subprocess call without timeout or try/except \u2014 skills/agent-registry/scripts/registry-client.py:80", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/agent-registry/scripts/registry-client.py:80"}, "fullDescription": {"text": "`subprocess.Popen(...)` 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-f37b7f40d70ed2fa", "name": "Network/subprocess call without timeout or try/except \u2014 skills/submit-use-case/scripts/submit_use_case.py:57", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/submit-use-case/scripts/submit_use_case.py:57"}, "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-2c69b97b5867c98f", "name": "Legacy-named symbol `sync_dir_legacy` in src/health-check.py:132", "shortDescription": {"text": "Legacy-named symbol `sync_dir_legacy` in src/health-check.py:132"}, "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-ffb2908f1d739453", "name": "Commented-code block (8 lines) in src/health-check.py:43", "shortDescription": {"text": "Commented-code block (8 lines) in src/health-check.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-14da44cd0bfb0ab0", "name": "Network/subprocess call without timeout or try/except \u2014 src/health-check.py:937", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/health-check.py:937"}, "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-f006669876c6bf55", "name": "Commented-code block (16 lines) in src/voice-mode-resolver.ts:11", "shortDescription": {"text": "Commented-code block (16 lines) in src/voice-mode-resolver.ts:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-97c917fa9942ee52", "name": "Commented-code block (5 lines) in src/telegram-bridge.py:9", "shortDescription": {"text": "Commented-code block (5 lines) in src/telegram-bridge.py:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-25f1845c048cfa87", "name": "Commented-code block (8 lines) in src/dm-result.py:42", "shortDescription": {"text": "Commented-code block (8 lines) in src/dm-result.py:42"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-be3d02ffd9485cd0", "name": "Commented-code block (6 lines) in src/util_paths.ts:13", "shortDescription": {"text": "Commented-code block (6 lines) in src/util_paths.ts:13"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c8e0073421362f80", "name": "Commented-code block (6 lines) in src/vision-tools.ts:34", "shortDescription": {"text": "Commented-code block (6 lines) in src/vision-tools.ts:34"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-74c069ae00bd7bee", "name": "Commented-code block (6 lines) in src/friction-detector.py:184", "shortDescription": {"text": "Commented-code block (6 lines) in src/friction-detector.py:184"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bbacfcf489cd6a75", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/cartesia-stt-provider.ts:98", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/cartesia-stt-provider.ts:98"}, "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-0433773ff82f679f", "name": "Legacy-named symbol `_migrate_from_legacy` in src/workspace_default.py:58", "shortDescription": {"text": "Legacy-named symbol `_migrate_from_legacy` in src/workspace_default.py:58"}, "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-8626afbf2e9038d7", "name": "Commented-code block (8 lines) in src/workspace_default.py:36", "shortDescription": {"text": "Commented-code block (8 lines) in src/workspace_default.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-b1034d06236afeab", "name": "Commented-code block (7 lines) in src/workspace_default.ts:66", "shortDescription": {"text": "Commented-code block (7 lines) in src/workspace_default.ts:66"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-104d2b3929f10fe7", "name": "Commented-code block (8 lines) in src/cartesia-tts.ts:15", "shortDescription": {"text": "Commented-code block (8 lines) in src/cartesia-tts.ts:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e3b1e911429a7ca5", "name": "Commented-code block (5 lines) in src/voice-agent.ts:48", "shortDescription": {"text": "Commented-code block (5 lines) in src/voice-agent.ts: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-b69c11efa87f9af4", "name": "Commented-code block (6 lines) in src/dashboard.py:71", "shortDescription": {"text": "Commented-code block (6 lines) in src/dashboard.py: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-a2d8c16138dbb6c1", "name": "Network/subprocess call without timeout or try/except \u2014 src/dashboard.py:359", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/dashboard.py:359"}, "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-4599e95ae37ac4fc", "name": "Commented-code block (5 lines) in src/recording-tools.ts:98", "shortDescription": {"text": "Commented-code block (5 lines) in src/recording-tools.ts:98"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e3b104d7de25529a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/recording-tools.ts:304", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/recording-tools.ts:304"}, "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-3b38661a9d8e7b93", "name": "Commented-code block (6 lines) in src/util_paths.py:170", "shortDescription": {"text": "Commented-code block (6 lines) in src/util_paths.py:170"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4b876672b51372e3", "name": "Commented-code block (6 lines) in src/archive-stale-results.py:37", "shortDescription": {"text": "Commented-code block (6 lines) in src/archive-stale-results.py:37"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-55b1a79eaa3cb8cd", "name": "Commented-code block (5 lines) in src/check-pending-questions.py:39", "shortDescription": {"text": "Commented-code block (5 lines) in src/check-pending-questions.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-e9884666579b6df1", "name": "Network/subprocess call without timeout or try/except \u2014 src/check-pending-questions.py:123", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/check-pending-questions.py:123"}, "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-b79971becb045083", "name": "Commented-code block (5 lines) in src/browser-tools.ts:217", "shortDescription": {"text": "Commented-code block (5 lines) in src/browser-tools.ts:217"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b6dfad7682ceee36", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/browser-tools.ts:332", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/browser-tools.ts:332"}, "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-642136bce1ba8840", "name": "Commented-code block (5 lines) in src/web-client.ts:677", "shortDescription": {"text": "Commented-code block (5 lines) in src/web-client.ts:677"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b2a100f2f321453f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/web-client.ts:663", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/web-client.ts:663"}, "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-497c39f7ccf49973", "name": "Commented-code block (8 lines) in src/task-bridge.ts:151", "shortDescription": {"text": "Commented-code block (8 lines) in src/task-bridge.ts:151"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-89d0d8302a038407", "name": "Commented-code block (8 lines) in src/agent-api.py:85", "shortDescription": {"text": "Commented-code block (8 lines) in src/agent-api.py:85"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-094ebbe1fc7e028c", "name": "Network/subprocess call without timeout or try/except \u2014 src/agent-api.py:326", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/agent-api.py:326"}, "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-fda6be9c21e1669a", "name": "Stub function `log_message` (body is just `pass`/`return`) \u2014 src/agent-api.py:287", "shortDescription": {"text": "Stub function `log_message` (body is just `pass`/`return`) \u2014 src/agent-api.py:287"}, "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-6cd16b278c56c1e3", "name": "Commented-code block (8 lines) in src/proactive_routing.py:35", "shortDescription": {"text": "Commented-code block (8 lines) in src/proactive_routing.py:35"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0c00de215ab755ba", "name": "Commented-code block (6 lines) in src/result-channel-key.ts:83", "shortDescription": {"text": "Commented-code block (6 lines) in src/result-channel-key.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-4aa91c33ff167865", "name": "Commented-code block (5 lines) in src/github-webhook.py:29", "shortDescription": {"text": "Commented-code block (5 lines) in src/github-webhook.py:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-64da8a774454092a", "name": "Commented-code block (8 lines) in src/task_priority.py:59", "shortDescription": {"text": "Commented-code block (8 lines) in src/task_priority.py:59"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-aa3c528e116d3962", "name": "Legacy-named symbol `files_upload_v2` in src/slack-bridge.py:31", "shortDescription": {"text": "Legacy-named symbol `files_upload_v2` in src/slack-bridge.py:31"}, "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-9351424fafe9482a", "name": "Commented-code block (5 lines) in src/slack-bridge.py:175", "shortDescription": {"text": "Commented-code block (5 lines) in src/slack-bridge.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-0cfca7967abfe648", "name": "Commented-code block (6 lines) in src/result_markers.py:97", "shortDescription": {"text": "Commented-code block (6 lines) in src/result_markers.py:97"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-43678ea8d3370eb5", "name": "Commented-code block (6 lines) in src/result_channel_key.py:88", "shortDescription": {"text": "Commented-code block (6 lines) in src/result_channel_key.py:88"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8d2bbf3afb155ca8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/meeting-tools.ts:222", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/meeting-tools.ts:222"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4f85a3548e46572b", "name": "Commented-code block (5 lines) in src/inline-tools.ts:16", "shortDescription": {"text": "Commented-code block (5 lines) in src/inline-tools.ts:16"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3ac4a20c5910041c", "name": "Legacy-named symbol `discord_voice_legacy` in src/conversation-store.ts:106", "shortDescription": {"text": "Legacy-named symbol `discord_voice_legacy` in src/conversation-store.ts:106"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ce00ed3ed585ea7", "name": "Commented-code block (5 lines) in src/conversation-store.ts:93", "shortDescription": {"text": "Commented-code block (5 lines) in src/conversation-store.ts:93"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f2cc1edb45c56101", "name": "Commented-code block (5 lines) in src/discord_config.py:135", "shortDescription": {"text": "Commented-code block (5 lines) in src/discord_config.py:135"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-34ce67553daa8fa7", "name": "Commented-code block (5 lines) in src/discord-bridge.py:21", "shortDescription": {"text": "Commented-code block (5 lines) in src/discord-bridge.py:21"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dfffad0e2f7e4707", "name": "Network/subprocess call without timeout or try/except \u2014 src/discord-bridge.py:45", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/discord-bridge.py:45"}, "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-98b63e40bf3334b3", "name": "Commented-code block (5 lines) in src/vault_intercept.py:47", "shortDescription": {"text": "Commented-code block (5 lines) in src/vault_intercept.py:47"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e406c3613ad0f11d", "name": "Network/subprocess call without timeout or try/except \u2014 src/vault_intercept.py:75", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/vault_intercept.py:75"}, "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-3b5eba59879008c9", "name": "104 env vars used in code but missing from .env.example", "shortDescription": {"text": "104 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `AG2_REMOTE_TIER`, `AG2_REMOTE_TOKEN`, `AG2_REMOTE_URL`, `AGENT_API_BIND`, `CARTESIA_API_KEY`, `CARTESIA_VOICE_ID`, `CLAUDE_CONFIG_DIR`, `CLAUDE_HOME` + 96 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscripts/import-session-metrics.py:live_writers, scripts/import-conversation-log.py:live_writers\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/20004"}, "properties": {"repository": "sonichi/sutando", "repoUrl": "https://github.com/sonichi/sutando", "branch": "main"}, "results": [{"ruleId": "scanner-46270f3d52eb2b93", "level": "note", "message": {"text": "Possibly dead Python function: handle_join_trigger"}, "properties": {"repobilityId": "78d1b4c92af0cc89", "scanner": "scanner-primary", "fingerprint": "46270f3d52eb2b93", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/discord-voice/scripts/join_trigger.py:336"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ee8536311f715223", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "ee8536311f715223", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/agent-registry/scripts/registry-service.py:200"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7e19553913d3a666", "level": "note", "message": {"text": "Possibly dead Python function: do_GET"}, "properties": {"repobilityId": "2d943bb45e4f13bd", "scanner": "scanner-primary", "fingerprint": "7e19553913d3a666", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/agent-registry/scripts/registry-service.py:220"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e9f001d83921555d", "level": "note", "message": {"text": "Possibly dead Python function: do_POST"}, "properties": {"repobilityId": "53357410ca9379a9", "scanner": "scanner-primary", "fingerprint": "e9f001d83921555d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/agent-registry/scripts/registry-service.py:228"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ddfb4446d9f7b277", "level": "note", "message": {"text": "Possibly dead Python function: check_launchd"}, "properties": {"repobilityId": "6e941a683475ad63", "scanner": "scanner-primary", "fingerprint": "ddfb4446d9f7b277", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/health-check.py:77"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7fb52e43b2b29b93", "level": "note", "message": {"text": "Possibly dead Python function: check_stale_results"}, "properties": {"repobilityId": "a5741d5487873dea", "scanner": "scanner-primary", "fingerprint": "7fb52e43b2b29b93", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/friction-detector.py:157"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6d5d1da99d793b5d", "level": "note", "message": {"text": "Possibly dead Python function: analyze_topics"}, "properties": {"repobilityId": "95baf5d35cddd7fc", "scanner": "scanner-primary", "fingerprint": "6d5d1da99d793b5d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/daily-insight.py:75"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0624df6dccf70c0a", "level": "note", "message": {"text": "Possibly dead Python function: detect_duplicate_responses"}, "properties": {"repobilityId": "03bd2e5efb9bd0c4", "scanner": "scanner-primary", "fingerprint": "0624df6dccf70c0a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/scan-call-logs.py:24"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-afe4402f13b4b440", "level": "note", "message": {"text": "Possibly dead Python function: detect_access_issues"}, "properties": {"repobilityId": "dd436c403ad9c894", "scanner": "scanner-primary", "fingerprint": "afe4402f13b4b440", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/scan-call-logs.py:73"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-23cd12da0368a517", "level": "note", "message": {"text": "Possibly dead Python function: detect_task_timeout"}, "properties": {"repobilityId": "7a827a55bf4312dc", "scanner": "scanner-primary", "fingerprint": "23cd12da0368a517", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/scan-call-logs.py:95"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f88693172f472979", "level": "note", "message": {"text": "Possibly dead Python function: detect_confusion"}, "properties": {"repobilityId": "9d5bf09fb0a7014d", "scanner": "scanner-primary", "fingerprint": "f88693172f472979", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/scan-call-logs.py:117"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7218c6c145cf3b24", "level": "note", "message": {"text": "Possibly dead Python function: detect_fabrication"}, "properties": {"repobilityId": "92c7ba8eceb89acc", "scanner": "scanner-primary", "fingerprint": "7218c6c145cf3b24", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/scan-call-logs.py:143"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d7b940d5d1cfa7c1", "level": "note", "message": {"text": "Possibly dead Python function: detect_reconnect_leak"}, "properties": {"repobilityId": "c7d3ca836e987d48", "scanner": "scanner-primary", "fingerprint": "d7b940d5d1cfa7c1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/scan-call-logs.py:168"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ef6387b7afb622c", "level": "note", "message": {"text": "Possibly dead Python function: detect_repeated_command"}, "properties": {"repobilityId": "6f3c4b680e1b9cd5", "scanner": "scanner-primary", "fingerprint": "3ef6387b7afb622c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/scan-call-logs.py:185"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d0885f9c0e10207f", "level": "note", "message": {"text": "Possibly dead Python function: detect_identity_confusion"}, "properties": {"repobilityId": "9801d0de40e494e3", "scanner": "scanner-primary", "fingerprint": "d0885f9c0e10207f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/scan-call-logs.py:215"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-07976b329cf42536", "level": "note", "message": {"text": "Possibly dead Python function: detect_recording_confusion"}, "properties": {"repobilityId": "338cd548c9b948f6", "scanner": "scanner-primary", "fingerprint": "07976b329cf42536", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/scan-call-logs.py:236"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e2c5e50a457d282e", "level": "note", "message": {"text": "Possibly dead Python function: detect_scroll_frustration"}, "properties": {"repobilityId": "d4626ad895bf4c15", "scanner": "scanner-primary", "fingerprint": "e2c5e50a457d282e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/scan-call-logs.py:254"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-de423845975a0ac0", "level": "note", "message": {"text": "Possibly dead Python function: detect_stt_retry"}, "properties": {"repobilityId": "5be3cf479ace24c8", "scanner": "scanner-primary", "fingerprint": "de423845975a0ac0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/scan-call-logs.py:272"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0f44b9366f63d580", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "0f44b9366f63d580", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/screen-capture-server.py:83"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-558c124e4a7376dd", "level": "note", "message": {"text": "Possibly dead Python function: do_GET"}, "properties": {"repobilityId": "2d943bb45e4f13bd", "scanner": "scanner-primary", "fingerprint": "558c124e4a7376dd", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/screen-capture-server.py:85"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bbfb8a3bdaa464e5", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "bbfb8a3bdaa464e5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/dashboard.py:389"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6b8ff4d49b7e5864", "level": "note", "message": {"text": "Possibly dead Python function: do_OPTIONS"}, "properties": {"repobilityId": "36491d1f4fa41aef", "scanner": "scanner-primary", "fingerprint": "6b8ff4d49b7e5864", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/dashboard.py:395"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-48ea116991072bb9", "level": "note", "message": {"text": "Possibly dead Python function: do_GET"}, "properties": {"repobilityId": "2d943bb45e4f13bd", "scanner": "scanner-primary", "fingerprint": "48ea116991072bb9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/dashboard.py:401"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-493d87a45f0896f8", "level": "note", "message": {"text": "Possibly dead Python function: do_DELETE"}, "properties": {"repobilityId": "f3eb582f191adaea", "scanner": "scanner-primary", "fingerprint": "493d87a45f0896f8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/dashboard.py:526"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6afd2e5502b1da0c", "level": "note", "message": {"text": "Possibly dead Python function: push_image"}, "properties": {"repobilityId": "4f1e33a7db026cec", "scanner": "scanner-primary", "fingerprint": "6afd2e5502b1da0c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/vision_push.py:60"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e94f70a8cdc62b98", "level": "note", "message": {"text": "Possibly dead Python function: fire_webhook"}, "properties": {"repobilityId": "e7464c0770329325", "scanner": "scanner-primary", "fingerprint": "e94f70a8cdc62b98", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/agent-api.py:268"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d08f8bb30f2ddad3", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "d08f8bb30f2ddad3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/agent-api.py:287"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5961effc60bbc11d", "level": "note", "message": {"text": "Possibly dead Python function: do_OPTIONS"}, "properties": {"repobilityId": "36491d1f4fa41aef", "scanner": "scanner-primary", "fingerprint": "5961effc60bbc11d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/agent-api.py:297"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-45a0dbad5a7f8f4b", "level": "note", "message": {"text": "Possibly dead Python function: do_GET"}, "properties": {"repobilityId": "2d943bb45e4f13bd", "scanner": "scanner-primary", "fingerprint": "45a0dbad5a7f8f4b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/agent-api.py:304"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1ffff4c510a50c85", "level": "note", "message": {"text": "Possibly dead Python function: do_POST"}, "properties": {"repobilityId": "53357410ca9379a9", "scanner": "scanner-primary", "fingerprint": "1ffff4c510a50c85", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/agent-api.py:636"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-43b20cc2406be880", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/poc-voice-metrics-reset.js:119"}, "properties": {"repobilityId": "ad79f610679e564b", "scanner": "scanner-primary", "fingerprint": "43b20cc2406be880", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ffce7ef201463ceb", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 skills/discord-voice/scripts/discord-voice-server.ts:436"}, "properties": {"repobilityId": "166a06e7e698234a", "scanner": "scanner-primary", "fingerprint": "ffce7ef201463ceb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-de791dba5fd8b175", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/discord-voice/scripts/discord-voice-server.ts:125"}, "properties": {"repobilityId": "203c29f332d192d3", "scanner": "scanner-primary", "fingerprint": "de791dba5fd8b175", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de42e12b5ba270ff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/overlay-apps/app/control-server.js:178"}, "properties": {"repobilityId": "967b8a3432cea080", "scanner": "scanner-primary", "fingerprint": "de42e12b5ba270ff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7f0ad0f3b3630b21", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/zoom/tools.ts:58"}, "properties": {"repobilityId": "d861ef6bdbb610f8", "scanner": "scanner-primary", "fingerprint": "7f0ad0f3b3630b21", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1c67cfe0fcf5d64a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/gws-gmail-voice/tools.ts:82"}, "properties": {"repobilityId": "b8cd0200676bcb0f", "scanner": "scanner-primary", "fingerprint": "1c67cfe0fcf5d64a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4d3ac78a22dd8430", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/screen-companion/tools.ts:89"}, "properties": {"repobilityId": "098c90fe1ed5824a", "scanner": "scanner-primary", "fingerprint": "4d3ac78a22dd8430", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7b696a54d1a301c5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/screen-companion/scripts/activate.ts:32"}, "properties": {"repobilityId": "a4829ab7d2e05609", "scanner": "scanner-primary", "fingerprint": "7b696a54d1a301c5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-30605941dea6e484", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/obsidian-vault/tools.ts:140"}, "properties": {"repobilityId": "01063fb5b7f11443", "scanner": "scanner-primary", "fingerprint": "30605941dea6e484", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bfe12b5339d2f9fe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/quota-tracker/scripts/credential-proxy.ts:82"}, "properties": {"repobilityId": "2258903a61a20d61", "scanner": "scanner-primary", "fingerprint": "bfe12b5339d2f9fe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-24986e0de8002340", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/screen-record/scripts/narration-tee.ts:31"}, "properties": {"repobilityId": "c2d6eeff7936da24", "scanner": "scanner-primary", "fingerprint": "24986e0de8002340", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a8b5400a1a7fb943", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 skills/phone-conversation/scripts/conversation-server.ts:188"}, "properties": {"repobilityId": "dc540899a02761d0", "scanner": "scanner-primary", "fingerprint": "a8b5400a1a7fb943", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0ff27ba7b6c35dce", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/vision-tools.ts:34"}, "properties": {"repobilityId": "0cf072be6c500f5c", "scanner": "scanner-primary", "fingerprint": "0ff27ba7b6c35dce", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-31a524a917d287ee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/vision-tools.ts:316"}, "properties": {"repobilityId": "fb1e2c159fd4d60e", "scanner": "scanner-primary", "fingerprint": "31a524a917d287ee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-33019eb2d7a95dc9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/cartesia-stt-provider.ts:56"}, "properties": {"repobilityId": "975babdfdc0cc084", "scanner": "scanner-primary", "fingerprint": "33019eb2d7a95dc9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b50f92066a894baa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/cartesia-tts.ts:137"}, "properties": {"repobilityId": "95d92747c185752c", "scanner": "scanner-primary", "fingerprint": "b50f92066a894baa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c7edc8fd2d395a93", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/voice-agent.ts:1438"}, "properties": {"repobilityId": "849bce8772f5a09c", "scanner": "scanner-primary", "fingerprint": "c7edc8fd2d395a93", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-0c92b5fcdca53040", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/voice-agent.ts:194"}, "properties": {"repobilityId": "280754827ce0d5de", "scanner": "scanner-primary", "fingerprint": "0c92b5fcdca53040", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-53e2efc51afd42e8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/recording-tools.ts:23"}, "properties": {"repobilityId": "1595acfdb2bd4403", "scanner": "scanner-primary", "fingerprint": "53e2efc51afd42e8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-690e860f2e7f5e52", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/artifact-cache-tools.ts:39"}, "properties": {"repobilityId": "94b71a30ea7dc7f8", "scanner": "scanner-primary", "fingerprint": "690e860f2e7f5e52", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-89238fb4c56b3b92", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/browser-tools.ts:57"}, "properties": {"repobilityId": "b7891537994c8286", "scanner": "scanner-primary", "fingerprint": "89238fb4c56b3b92", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9403d16947385cb4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/web-client.ts:2133"}, "properties": {"repobilityId": "0c8e27de832089ec", "scanner": "scanner-primary", "fingerprint": "9403d16947385cb4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8df6ccbbeeabaaad", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/task-bridge.ts:42"}, "properties": {"repobilityId": "b86e069a66f14671", "scanner": "scanner-primary", "fingerprint": "8df6ccbbeeabaaad", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3d40f6a3e5f7c1dd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/voice-config-switch.ts:76"}, "properties": {"repobilityId": "b7e609ba0b25dafc", "scanner": "scanner-primary", "fingerprint": "3d40f6a3e5f7c1dd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f5f5492afeb6d3ce", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/meeting-tools.ts:35"}, "properties": {"repobilityId": "35d7c4f1d5cac699", "scanner": "scanner-primary", "fingerprint": "f5f5492afeb6d3ce", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f2dd75ef10ef6f93", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/inline-tools.ts:69"}, "properties": {"repobilityId": "39b1fd1bd7c0a388", "scanner": "scanner-primary", "fingerprint": "f2dd75ef10ef6f93", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-02d9a4c87e379234", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/conversation-store.ts:107"}, "properties": {"repobilityId": "52e6650685c4a53a", "scanner": "scanner-primary", "fingerprint": "02d9a4c87e379234", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b1406a51366b359d", "level": "warning", "message": {"text": "Privileged port 15 in use"}, "properties": {"repobilityId": "3340f9a170f285cd", "scanner": "scanner-primary", "fingerprint": "b1406a51366b359d", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/screen-companion/configs/guided-setup.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0f37e5a72a4fe2a7", "level": "warning", "message": {"text": "Privileged port 42 in use"}, "properties": {"repobilityId": "16d9608735f9e01a", "scanner": "scanner-primary", "fingerprint": "0f37e5a72a4fe2a7", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/screen-companion/configs/guided-setup.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5482a56d3e8fa827", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in skills/discord-voice/scripts/discord-voice-server.ts:48"}, "properties": {"repobilityId": "f263cc2cf85b62dd", "scanner": "scanner-primary", "fingerprint": "5482a56d3e8fa827", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/discord-voice/scripts/discord-voice-server.ts"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-92e55591b8cb1d1e", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in skills/overlay-apps/app/control-server.js:39"}, "properties": {"repobilityId": "3acc23fc226f4af9", "scanner": "scanner-primary", "fingerprint": "92e55591b8cb1d1e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/overlay-apps/app/control-server.js"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-6d8a916faf55f42e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in skills/overlay-apps/app/stats.js:12"}, "properties": {"repobilityId": "1d1fe2b308dd5ea1", "scanner": "scanner-primary", "fingerprint": "6d8a916faf55f42e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/overlay-apps/app/stats.js"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-28b0e7a8847a8f2e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in skills/overlay-apps/app/stats-renderer.js:65"}, "properties": {"repobilityId": "1be194199a3c6cfc", "scanner": "scanner-primary", "fingerprint": "28b0e7a8847a8f2e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/overlay-apps/app/stats-renderer.js"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-7df779df5b32ca83", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in skills/zoom/tools.ts:10"}, "properties": {"repobilityId": "5d7039557e00643c", "scanner": "scanner-primary", "fingerprint": "7df779df5b32ca83", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/zoom/tools.ts"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-e760f0c3df2bab0e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in skills/gws-gmail-voice/tools.ts:29"}, "properties": {"repobilityId": "9b1a19959b4579b5", "scanner": "scanner-primary", "fingerprint": "e760f0c3df2bab0e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/gws-gmail-voice/tools.ts"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-bb258012c530195e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in skills/quota-tracker/scripts/credential-proxy.ts:17"}, "properties": {"repobilityId": "b759a0a35aed8d34", "scanner": "scanner-primary", "fingerprint": "bb258012c530195e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/quota-tracker/scripts/credential-proxy.ts"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-c6b7f1a589135a38", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in skills/screen-record/scripts/narration-tee.ts:13"}, "properties": {"repobilityId": "15fb832504f96131", "scanner": "scanner-primary", "fingerprint": "c6b7f1a589135a38", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/screen-record/scripts/narration-tee.ts"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-08b15c3b694fc54e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in skills/phone-conversation/scripts/conversation-server.ts:79"}, "properties": {"repobilityId": "cdc4f056659da4e5", "scanner": "scanner-primary", "fingerprint": "08b15c3b694fc54e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/phone-conversation/scripts/conversation-server.ts"}, "region": {"startLine": 79}}}]}, {"ruleId": "scanner-88fffeb5d1b324f7", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in skills/phone-conversation/scripts/conversation-server.ts:1302"}, "properties": {"repobilityId": "12421df4675df50b", "scanner": "scanner-primary", "fingerprint": "88fffeb5d1b324f7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/phone-conversation/scripts/conversation-server.ts"}, "region": {"startLine": 1302}}}]}, {"ruleId": "scanner-cd7433385258a465", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/voice-mode-resolver.ts:31"}, "properties": {"repobilityId": "bba39b7c29d5eb10", "scanner": "scanner-primary", "fingerprint": "cd7433385258a465", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/voice-mode-resolver.ts"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-cb3de7a62ff5c212", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/chat-ui.ts:300"}, "properties": {"repobilityId": "c914375b6e4009cf", "scanner": "scanner-primary", "fingerprint": "cb3de7a62ff5c212", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/chat-ui.ts"}, "region": {"startLine": 300}}}]}, {"ruleId": "scanner-6c4ef2884e1863ee", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/overlay-manager-ui.ts:113"}, "properties": {"repobilityId": "be2e1058de1a4c57", "scanner": "scanner-primary", "fingerprint": "6c4ef2884e1863ee", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/overlay-manager-ui.ts"}, "region": {"startLine": 113}}}]}, {"ruleId": "scanner-c2563efefec33d75", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/vision-tools.ts:22"}, "properties": {"repobilityId": "d39d57d34dfb5373", "scanner": "scanner-primary", "fingerprint": "c2563efefec33d75", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/vision-tools.ts"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-e863a0921c039f8e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/voice-agent.ts:30"}, "properties": {"repobilityId": "eb33a31294463f81", "scanner": "scanner-primary", "fingerprint": "e863a0921c039f8e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/voice-agent.ts"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-4776328293e01469", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in src/dashboard.py:392"}, "properties": {"repobilityId": "d53efbc53cfa6a59", "scanner": "scanner-primary", "fingerprint": "4776328293e01469", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/dashboard.py"}, "region": {"startLine": 392}}}]}, {"ruleId": "scanner-c50426fb64551eea", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/recording-tools.ts:6"}, "properties": {"repobilityId": "fd3460090ee9aaf4", "scanner": "scanner-primary", "fingerprint": "c50426fb64551eea", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/recording-tools.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-f0835b258f833845", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/artifact-cache-tools.ts:9"}, "properties": {"repobilityId": "aa567cecc0019c76", "scanner": "scanner-primary", "fingerprint": "f0835b258f833845", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/artifact-cache-tools.ts"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-716398d18ff238f8", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/browser-tools.ts:6"}, "properties": {"repobilityId": "944eb6d6002ca028", "scanner": "scanner-primary", "fingerprint": "716398d18ff238f8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/browser-tools.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-8d3b510c04a7db4c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/web-client.ts:998"}, "properties": {"repobilityId": "268bb8f38a05c743", "scanner": "scanner-primary", "fingerprint": "8d3b510c04a7db4c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/web-client.ts"}, "region": {"startLine": 998}}}]}, {"ruleId": "scanner-828f0a061ba181b9", "level": "warning", "message": {"text": "Insecure pattern 'direct_outerhtml_assignment' in src/web-client.ts:2369"}, "properties": {"repobilityId": "083a77acdf30095c", "scanner": "scanner-primary", "fingerprint": "828f0a061ba181b9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_outerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/web-client.ts"}, "region": {"startLine": 2369}}}]}, {"ruleId": "scanner-ad8c4537fb634cb3", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in src/web-client.ts:3500"}, "properties": {"repobilityId": "9b593c7adb544fe8", "scanner": "scanner-primary", "fingerprint": "ad8c4537fb634cb3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/web-client.ts"}, "region": {"startLine": 3500}}}]}, {"ruleId": "scanner-6c0eb628e5bb094b", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in src/agent-api.py:293"}, "properties": {"repobilityId": "89fee3cbe9f21e1e", "scanner": "scanner-primary", "fingerprint": "6c0eb628e5bb094b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/agent-api.py"}, "region": {"startLine": 293}}}]}, {"ruleId": "scanner-f50d00b7a279b4e2", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/voice-config-switch.ts:25"}, "properties": {"repobilityId": "e48f316d7fb29c68", "scanner": "scanner-primary", "fingerprint": "f50d00b7a279b4e2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/voice-config-switch.ts"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-860e15648200b064", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/meeting-tools.ts:6"}, "properties": {"repobilityId": "6b18487b53ab7cb2", "scanner": "scanner-primary", "fingerprint": "860e15648200b064", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/meeting-tools.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-ee144735a6ca2a8a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/tmux-status.ts:12"}, "properties": {"repobilityId": "18ce0f446043d909", "scanner": "scanner-primary", "fingerprint": "ee144735a6ca2a8a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/tmux-status.ts"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-e56e044af3f07f0d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/inline-tools.ts:8"}, "properties": {"repobilityId": "29e95b43ebc993fd", "scanner": "scanner-primary", "fingerprint": "e56e044af3f07f0d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/inline-tools.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-65aa740cba4a4a73", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8860eac61a1ebe26", "scanner": "scanner-primary", "fingerprint": "65aa740cba4a4a73", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/codeql.yml"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-65aa740cba4a4a73", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "549a2de1ac0c3fa9", "scanner": "scanner-primary", "fingerprint": "65aa740cba4a4a73", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/codeql.yml"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-65aa740cba4a4a73", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a4f0ab9334543546", "scanner": "scanner-primary", "fingerprint": "65aa740cba4a4a73", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/codeql.yml"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-65aa740cba4a4a73", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a5721e15e3a54aa2", "scanner": "scanner-primary", "fingerprint": "65aa740cba4a4a73", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/codeql.yml"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-960efac1c65752e5", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "051690ad987a7100", "scanner": "scanner-primary", "fingerprint": "960efac1c65752e5", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/regen-wire-list.yml"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-779f2c6b0ac7f69b", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "904fc74ad0241b21", "scanner": "scanner-primary", "fingerprint": "779f2c6b0ac7f69b", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/regen-wire-list.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae16880318b99912", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-d34023b91d4b2a6f", "level": "note", "message": {"text": "Very large file: skills/discord-voice/scripts/discord-voice-server.ts (1357 lines)"}, "properties": {"repobilityId": "e37873cfa85aeaa6", "scanner": "scanner-primary", "fingerprint": "d34023b91d4b2a6f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-43fcbd52b7675449", "level": "note", "message": {"text": "Very large file: skills/phone-conversation/scripts/conversation-server.ts (1961 lines)"}, "properties": {"repobilityId": "1ddb4fea77504608", "scanner": "scanner-primary", "fingerprint": "43fcbd52b7675449", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d30fcdbc3abd5c34", "level": "note", "message": {"text": "Very large file: src/health-check.py (2060 lines)"}, "properties": {"repobilityId": "66dd17d527d0c5b2", "scanner": "scanner-primary", "fingerprint": "d30fcdbc3abd5c34", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-86c3c2a3bcee9179", "level": "note", "message": {"text": "Very large file: src/voice-agent.ts (1521 lines)"}, "properties": {"repobilityId": "5b7518c243240731", "scanner": "scanner-primary", "fingerprint": "86c3c2a3bcee9179", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-64de706f66b595f4", "level": "note", "message": {"text": "Very large file: src/web-client.ts (3903 lines)"}, "properties": {"repobilityId": "8bac3b809fc568f5", "scanner": "scanner-primary", "fingerprint": "64de706f66b595f4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-444ac2118c939b9e", "level": "note", "message": {"text": "Very large file: src/inline-tools.ts (1150 lines)"}, "properties": {"repobilityId": "55ba5b2f9e5dd8fb", "scanner": "scanner-primary", "fingerprint": "444ac2118c939b9e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-45e4e51b7c54150a", "level": "note", "message": {"text": "Very large file: src/discord-bridge.py (3982 lines)"}, "properties": {"repobilityId": "7a2304110c3bd85b", "scanner": "scanner-primary", "fingerprint": "45e4e51b7c54150a", "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": "a74303fa021196c2", "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": "e1687fe5474ed497", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "bf482fc8a7ec30d6", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "0e4620962e04b477", "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": "8a570d239e6bf7e7", "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": "c4cbbfd473110d58", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-17d866d91a7c451e", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: CLAUDE.md"}, "properties": {"repobilityId": "ccce5984e58a48f0", "scanner": "scanner-primary", "fingerprint": "17d866d91a7c451e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "CLAUDE.md"}, "region": {"startLine": 306}}}]}, {"ruleId": "scanner-89d361e8c8d3c93e", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/startup/SKILL.md"}, "properties": {"repobilityId": "72bead64eb4c27a7", "scanner": "scanner-primary", "fingerprint": "89d361e8c8d3c93e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/startup/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4a41c3aa6efde481", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/x-twitter/SKILL.md"}, "properties": {"repobilityId": "85f12a36fa0753a6", "scanner": "scanner-primary", "fingerprint": "4a41c3aa6efde481", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/x-twitter/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4d4de2cf34010827", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/deal-finder/SKILL.md"}, "properties": {"repobilityId": "bb74d70225e0678f", "scanner": "scanner-primary", "fingerprint": "4d4de2cf34010827", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/deal-finder/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-107892e593245116", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/email-find/SKILL.md"}, "properties": {"repobilityId": "8d5a6e4d8a57fdcd", "scanner": "scanner-primary", "fingerprint": "107892e593245116", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/email-find/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0d4be716a744ca77", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/discord-voice/SKILL.md"}, "properties": {"repobilityId": "fd03a26aad4f7fe9", "scanner": "scanner-primary", "fingerprint": "0d4be716a744ca77", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/discord-voice/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3a6a733649b129f3", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/overlay-apps/SKILL.md"}, "properties": {"repobilityId": "809344c30aef67b4", "scanner": "scanner-primary", "fingerprint": "3a6a733649b129f3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/overlay-apps/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-535f6a38bcdae1c3", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/open-sutando-ref/SKILL.md"}, "properties": {"repobilityId": "abb604acb2fdf522", "scanner": "scanner-primary", "fingerprint": "535f6a38bcdae1c3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/open-sutando-ref/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-56041eedd6a1603d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/gemini-tts/SKILL.md"}, "properties": {"repobilityId": "8875aa44a69d760f", "scanner": "scanner-primary", "fingerprint": "56041eedd6a1603d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/gemini-tts/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8d6d341a1ad4c615", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/ag2-relay/SKILL.md"}, "properties": {"repobilityId": "b19e3d6c09a34cef", "scanner": "scanner-primary", "fingerprint": "8d6d341a1ad4c615", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/ag2-relay/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aa40a3b46de4c237", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/claude-router/SKILL.md"}, "properties": {"repobilityId": "6f676956e4100d1b", "scanner": "scanner-primary", "fingerprint": "aa40a3b46de4c237", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/claude-router/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6700b72620dc4d63", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/task-progress/SKILL.md"}, "properties": {"repobilityId": "074d920c99b59a7c", "scanner": "scanner-primary", "fingerprint": "6700b72620dc4d63", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/task-progress/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a52d3c3fdffffe19", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/openai-tts/SKILL.md"}, "properties": {"repobilityId": "7a1ac0ce55cf81df", "scanner": "scanner-primary", "fingerprint": "a52d3c3fdffffe19", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/openai-tts/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c69f011d064b07dd", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/macos-tools/SKILL.md"}, "properties": {"repobilityId": "2843d8063311f64e", "scanner": "scanner-primary", "fingerprint": "c69f011d064b07dd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/macos-tools/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f2382b4879ec919d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/whatsapp/SKILL.md"}, "properties": {"repobilityId": "fc03ced7ac948dbc", "scanner": "scanner-primary", "fingerprint": "f2382b4879ec919d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/whatsapp/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-58f309f63a0fafda", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/subscription-scanner/SKILL.md"}, "properties": {"repobilityId": "537b8b7b689fdcb4", "scanner": "scanner-primary", "fingerprint": "58f309f63a0fafda", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/subscription-scanner/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ac8913fac0ab0bcb", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/audio-transcribe/SKILL.md"}, "properties": {"repobilityId": "2c09c854d552c0d7", "scanner": "scanner-primary", "fingerprint": "ac8913fac0ab0bcb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/audio-transcribe/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-73764b4f2bc9b4e6", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/image-generation/SKILL.md"}, "properties": {"repobilityId": "86816822d10f4d51", "scanner": "scanner-primary", "fingerprint": "73764b4f2bc9b4e6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/image-generation/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f6a47ebecce40265", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/regression-search/SKILL.md"}, "properties": {"repobilityId": "c8b5661a4f7418aa", "scanner": "scanner-primary", "fingerprint": "f6a47ebecce40265", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/regression-search/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f885fff8da7bff0f", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/screen-companion/SKILL.md"}, "properties": {"repobilityId": "47313d16d29591b2", "scanner": "scanner-primary", "fingerprint": "f885fff8da7bff0f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/screen-companion/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1784701605c9fd4f", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/morning-briefing/SKILL.md"}, "properties": {"repobilityId": "7fbe166e6a3760e2", "scanner": "scanner-primary", "fingerprint": "1784701605c9fd4f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/morning-briefing/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2d0e3977a3da7a52", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/obsidian-vault/SKILL.md"}, "properties": {"repobilityId": "169084019de025c4", "scanner": "scanner-primary", "fingerprint": "2d0e3977a3da7a52", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/obsidian-vault/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-95ce835d94cbb83c", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/claude-gemini/SKILL.md"}, "properties": {"repobilityId": "5d2da7f6d58af58c", "scanner": "scanner-primary", "fingerprint": "95ce835d94cbb83c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/claude-gemini/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4ee5bfb4b5e6f08f", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: skills/quota-tracker/SKILL.md"}, "properties": {"repobilityId": "04777a4bd8626c61", "scanner": "scanner-primary", "fingerprint": "4ee5bfb4b5e6f08f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/quota-tracker/SKILL.md"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-745e8311681ea04b", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/quota-tracker/SKILL.md"}, "properties": {"repobilityId": "64de7946fe955384", "scanner": "scanner-primary", "fingerprint": "745e8311681ea04b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/quota-tracker/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ce83374cbac511e6", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/screen-record/SKILL.md"}, "properties": {"repobilityId": "7accc32e1961dfcd", "scanner": "scanner-primary", "fingerprint": "ce83374cbac511e6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/screen-record/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fa2740ce1156f781", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/bot2bot-post/SKILL.md"}, "properties": {"repobilityId": "7d05dc1fbe214e9a", "scanner": "scanner-primary", "fingerprint": "fa2740ce1156f781", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/bot2bot-post/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cdc918b11dc84af9", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/agent-registry/SKILL.md"}, "properties": {"repobilityId": "12e997a4dd6f9856", "scanner": "scanner-primary", "fingerprint": "cdc918b11dc84af9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/agent-registry/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a1679d0dfb6a2d68", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/voice-mode-resolver.test.ts:1"}, "properties": {"repobilityId": "cc4bf7b7a90f4813", "scanner": "scanner-primary", "fingerprint": "a1679d0dfb6a2d68", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e08574628900754e", "level": "note", "message": {"text": "Legacy-named symbol `files_upload_v2` in tests/slack-bridge-allowlist.test.py:5"}, "properties": {"repobilityId": "f6008e5556ce6483", "scanner": "scanner-primary", "fingerprint": "e08574628900754e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5de1e4cdd2f62c1f", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/tmux-status.test.ts:185"}, "properties": {"repobilityId": "d06aa9b5593a2dbb", "scanner": "scanner-primary", "fingerprint": "5de1e4cdd2f62c1f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4a5425f74c31378", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/open-file-app-param.test.ts:5"}, "properties": {"repobilityId": "95c656da024c375c", "scanner": "scanner-primary", "fingerprint": "d4a5425f74c31378", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bf0163203e2fbd49", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/env-loader.test.py:68"}, "properties": {"repobilityId": "aa47306d547cd421", "scanner": "scanner-primary", "fingerprint": "bf0163203e2fbd49", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1f9c1e3aeb85e800", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/task-bridge-isvoice.test.ts:8"}, "properties": {"repobilityId": "6da71120f341cd4a", "scanner": "scanner-primary", "fingerprint": "1f9c1e3aeb85e800", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7950feaf5c148f9e", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/get-core-status-tool.test.ts:7"}, "properties": {"repobilityId": "d4d47fda3ca09710", "scanner": "scanner-primary", "fingerprint": "7950feaf5c148f9e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bd73500dd48a7eba", "level": "none", "message": {"text": "Commented-code block (10 lines) in tests/slack-bridge-access.test.py:79"}, "properties": {"repobilityId": "f92d0e7ea416fc9f", "scanner": "scanner-primary", "fingerprint": "bd73500dd48a7eba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f93d47d87ddc66ab", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/inline-tools-press-key-app-escape.test.ts:8"}, "properties": {"repobilityId": "137df12fb8398a65", "scanner": "scanner-primary", "fingerprint": "f93d47d87ddc66ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-593abb702662907d", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/conversation-server-meeting-injection.test.ts:9"}, "properties": {"repobilityId": "27b3acf07af4931d", "scanner": "scanner-primary", "fingerprint": "593abb702662907d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7fb80887899e0335", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/conversation-server-no-hallucination.test.ts:6"}, "properties": {"repobilityId": "92389bcb714ed95c", "scanner": "scanner-primary", "fingerprint": "7fb80887899e0335", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-190559bd953d99c9", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/end-session-gate.test.ts:56"}, "properties": {"repobilityId": "7488f0fd7085371d", "scanner": "scanner-primary", "fingerprint": "190559bd953d99c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a5cc788ed3d5d389", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/init-script.test.ts:120"}, "properties": {"repobilityId": "2e8c242b257d8d0d", "scanner": "scanner-primary", "fingerprint": "a5cc788ed3d5d389", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-05d8f07d4b25c41d", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/discord-bridge-attachment-filename-sanitize.test.py:39"}, "properties": {"repobilityId": "aa29433f8f073586", "scanner": "scanner-primary", "fingerprint": "05d8f07d4b25c41d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a95bdf88e155e0ad", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/dm-result-multipart-upload.test.py:262"}, "properties": {"repobilityId": "c972b0d8fd32701d", "scanner": "scanner-primary", "fingerprint": "a95bdf88e155e0ad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-46cd40259a5c4c41", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/conversation-server-archive-phone-tasks.test.ts:81"}, "properties": {"repobilityId": "d3406e955b1c9b6e", "scanner": "scanner-primary", "fingerprint": "46cd40259a5c4c41", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-034673843e230c15", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/screen-companion-work-retained.test.ts:1"}, "properties": {"repobilityId": "440ae8a46e8546f7", "scanner": "scanner-primary", "fingerprint": "034673843e230c15", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-06ecf678823d3db1", "level": "note", "message": {"text": "Legacy-named symbol `TestMigrationFromLegacy` in tests/workspace-default.test.py:76"}, "properties": {"repobilityId": "88e9f39bdbff8563", "scanner": "scanner-primary", "fingerprint": "06ecf678823d3db1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-31c194ff49d8b93d", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/phone-conversation-audio-path-guard.test.ts:11"}, "properties": {"repobilityId": "758a25f1098e2dd6", "scanner": "scanner-primary", "fingerprint": "31c194ff49d8b93d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ba3e3813d392e47f", "level": "none", "message": {"text": "Commented-code block (9 lines) in tests/task-bridge-stop-at-task-delimiter.test.ts:7"}, "properties": {"repobilityId": "fc2aaf5c2fc1ccf2", "scanner": "scanner-primary", "fingerprint": "ba3e3813d392e47f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0e4f7696e1cffe2e", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/voice-config-owner-mode.test.ts:4"}, "properties": {"repobilityId": "f0c1ad3d0c695430", "scanner": "scanner-primary", "fingerprint": "0e4f7696e1cffe2e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b83a4108a252ab60", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/task-bridge-fallthrough-guard.test.ts:12"}, "properties": {"repobilityId": "06fa878b83a4f7a7", "scanner": "scanner-primary", "fingerprint": "b83a4108a252ab60", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f5f6fbafd3918a27", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/state-paths-adoption.test.py:92"}, "properties": {"repobilityId": "2e72146d07a82819", "scanner": "scanner-primary", "fingerprint": "f5f6fbafd3918a27", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d55bffb5fc7f193a", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/agent-state-endpoint.test.ts:9"}, "properties": {"repobilityId": "78deb2746ff1e2ac", "scanner": "scanner-primary", "fingerprint": "d55bffb5fc7f193a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5014f5bfd4a2aad2", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/phone-conversation-loopback-guard.test.ts:11"}, "properties": {"repobilityId": "0261a7d435f35bcd", "scanner": "scanner-primary", "fingerprint": "5014f5bfd4a2aad2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6d03527f4ffc34d7", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/discord-chunker.test.py:16"}, "properties": {"repobilityId": "d1d80a39494aebad", "scanner": "scanner-primary", "fingerprint": "6d03527f4ffc34d7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e72d4be34e932be", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/result-channel-key.test.ts:169"}, "properties": {"repobilityId": "b451f985c1a727c1", "scanner": "scanner-primary", "fingerprint": "2e72d4be34e932be", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a1a97b30fa7ebd4", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/task-priority.test.py:69"}, "properties": {"repobilityId": "ac87e29902504ab6", "scanner": "scanner-primary", "fingerprint": "6a1a97b30fa7ebd4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aa27f5a0a0978098", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/poc-voice-metrics-reset.js:7"}, "properties": {"repobilityId": "6115ad05ff56dbf7", "scanner": "scanner-primary", "fingerprint": "aa27f5a0a0978098", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c63a170863de4e97", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/regen-wire-list.py:249"}, "properties": {"repobilityId": "b30cb67cd3de9d17", "scanner": "scanner-primary", "fingerprint": "c63a170863de4e97", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-494c192331cb1b26", "level": "none", "message": {"text": "Commented-code block (5 lines) in skills/x-twitter/x-post.py:25"}, "properties": {"repobilityId": "dca5cbeab20ae402", "scanner": "scanner-primary", "fingerprint": "494c192331cb1b26", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-644bef111befc34b", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/x-twitter/x-post.py:125"}, "properties": {"repobilityId": "1f44929c999ef6ac", "scanner": "scanner-primary", "fingerprint": "644bef111befc34b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d6c8a056642a3189", "level": "none", "message": {"text": "Commented-code block (7 lines) in skills/deal-finder/scripts/scan.py:143"}, "properties": {"repobilityId": "cc1aff1aa36c6041", "scanner": "scanner-primary", "fingerprint": "d6c8a056642a3189", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-86abb66a8a021f36", "level": "none", "message": {"text": "Commented-code block (8 lines) in skills/discord-voice/scripts/discord-voice-server.ts:109"}, "properties": {"repobilityId": "ffbf32a3ae7cf492", "scanner": "scanner-primary", "fingerprint": "86abb66a8a021f36", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-08b1eb3c9b4fba5e", "level": "none", "message": {"text": "Commented-code block (5 lines) in skills/discord-voice/scripts/join_trigger.py:381"}, "properties": {"repobilityId": "b57638dc1a3a7bdd", "scanner": "scanner-primary", "fingerprint": "08b1eb3c9b4fba5e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-007bb3307f433b32", "level": "none", "message": {"text": "Commented-code block (5 lines) in skills/overlay-apps/app/main.js:3"}, "properties": {"repobilityId": "225c188f4513c15a", "scanner": "scanner-primary", "fingerprint": "007bb3307f433b32", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-23f0da963437461c", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/open-sutando-ref/scripts/resolve.py:120"}, "properties": {"repobilityId": "bf6b1815c03e6663", "scanner": "scanner-primary", "fingerprint": "23f0da963437461c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-12784c16ca15544d", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/voice-agent-test-harness/scripts/audio.py:52"}, "properties": {"repobilityId": "71a9bf0692b4b3ec", "scanner": "scanner-primary", "fingerprint": "12784c16ca15544d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b80e85844996d9c4", "level": "none", "message": {"text": "Commented-code block (5 lines) in skills/ag2-relay/remote-task-client.py:78"}, "properties": {"repobilityId": "f17a1689f6dcaca1", "scanner": "scanner-primary", "fingerprint": "b80e85844996d9c4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d99088213eee5c3", "level": "none", "message": {"text": "Commented-code block (6 lines) in skills/call-diagnostics/scripts/diagnose.py:175"}, "properties": {"repobilityId": "9a237c0256a12747", "scanner": "scanner-primary", "fingerprint": "5d99088213eee5c3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-253a4d09c3f9396a", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/make-viral-video/scripts/verify_video.py:39"}, "properties": {"repobilityId": "ee0509157d63aee9", "scanner": "scanner-primary", "fingerprint": "253a4d09c3f9396a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-15403911878abe2d", "level": "none", "message": {"text": "Commented-code block (6 lines) in skills/make-viral-video/scripts/render.py:487"}, "properties": {"repobilityId": "250b3ea37c05695b", "scanner": "scanner-primary", "fingerprint": "15403911878abe2d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be12f2a6ccd75e2b", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/make-viral-video/scripts/render.py:333"}, "properties": {"repobilityId": "1f25776fd0915e9d", "scanner": "scanner-primary", "fingerprint": "be12f2a6ccd75e2b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a170f257157a1624", "level": "none", "message": {"text": "Commented-code block (5 lines) in skills/zoom/tools.ts:37"}, "properties": {"repobilityId": "8e640609514c1c0f", "scanner": "scanner-primary", "fingerprint": "a170f257157a1624", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7de2e7ad80ae72a2", "level": "none", "message": {"text": "Commented-code block (10 lines) in skills/gws-gmail-voice/tools.ts:8"}, "properties": {"repobilityId": "880d32454ae3d157", "scanner": "scanner-primary", "fingerprint": "7de2e7ad80ae72a2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-43bdce45edd3e993", "level": "none", "message": {"text": "Commented-code block (7 lines) in skills/screen-companion/tools.ts:29"}, "properties": {"repobilityId": "f082d6920808b88e", "scanner": "scanner-primary", "fingerprint": "43bdce45edd3e993", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9479420be536649c", "level": "none", "message": {"text": "Commented-code block (6 lines) in skills/screen-companion/scripts/load-config.ts:33"}, "properties": {"repobilityId": "814226bc16fadc47", "scanner": "scanner-primary", "fingerprint": "9479420be536649c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-da9675167e689a53", "level": "none", "message": {"text": "Commented-code block (7 lines) in skills/obsidian-vault/tools.ts:7"}, "properties": {"repobilityId": "3a5cd434938fc97f", "scanner": "scanner-primary", "fingerprint": "da9675167e689a53", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c32e59fc254c1264", "level": "none", "message": {"text": "Commented-code block (10 lines) in skills/quota-tracker/scripts/read-quota.py:31"}, "properties": {"repobilityId": "84feb991e38b3636", "scanner": "scanner-primary", "fingerprint": "c32e59fc254c1264", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7a8d2be58ea0ce84", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/screen-record/scripts/subtitle.py:62"}, "properties": {"repobilityId": "e0493858b0705926", "scanner": "scanner-primary", "fingerprint": "7a8d2be58ea0ce84", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e347c8e4292e4e0a", "level": "none", "message": {"text": "Commented-code block (6 lines) in skills/screen-record/scripts/record.py:143"}, "properties": {"repobilityId": "5b9160ce3ec4ee09", "scanner": "scanner-primary", "fingerprint": "e347c8e4292e4e0a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-062332c915813081", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/screen-record/scripts/record.py:18"}, "properties": {"repobilityId": "62198c815ddcc9ca", "scanner": "scanner-primary", "fingerprint": "062332c915813081", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-abd5ba856fd19ef6", "level": "none", "message": {"text": "Commented-code block (5 lines) in skills/phone-conversation/scripts/loopback_guard.ts:3"}, "properties": {"repobilityId": "639bf8fb188d58e6", "scanner": "scanner-primary", "fingerprint": "abd5ba856fd19ef6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-385cd37784d8bc74", "level": "none", "message": {"text": "Commented-code block (12 lines) in skills/phone-conversation/scripts/audio_path_guard.ts:4"}, "properties": {"repobilityId": "ac1938fc6d72c64c", "scanner": "scanner-primary", "fingerprint": "385cd37784d8bc74", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8402af05dd23d201", "level": "none", "message": {"text": "Commented-code block (9 lines) in skills/phone-conversation/scripts/conversation-server.ts:125"}, "properties": {"repobilityId": "cb8d464df2ee046c", "scanner": "scanner-primary", "fingerprint": "8402af05dd23d201", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6bfa8a44df66e213", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 skills/phone-conversation/scripts/conversation-server.ts:1269"}, "properties": {"repobilityId": "07bf7e48db141f45", "scanner": "scanner-primary", "fingerprint": "6bfa8a44df66e213", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-78d5d2759551d945", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/agent-registry/scripts/registry-client.py:80"}, "properties": {"repobilityId": "49d163c318c8483b", "scanner": "scanner-primary", "fingerprint": "78d5d2759551d945", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f37b7f40d70ed2fa", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 skills/submit-use-case/scripts/submit_use_case.py:57"}, "properties": {"repobilityId": "db4ee225abb76e48", "scanner": "scanner-primary", "fingerprint": "f37b7f40d70ed2fa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2c69b97b5867c98f", "level": "note", "message": {"text": "Legacy-named symbol `sync_dir_legacy` in src/health-check.py:132"}, "properties": {"repobilityId": "170e50566ed70c03", "scanner": "scanner-primary", "fingerprint": "2c69b97b5867c98f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ffb2908f1d739453", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/health-check.py:43"}, "properties": {"repobilityId": "af5407a6f6f30e4d", "scanner": "scanner-primary", "fingerprint": "ffb2908f1d739453", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-14da44cd0bfb0ab0", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/health-check.py:937"}, "properties": {"repobilityId": "01ed10295f1c9162", "scanner": "scanner-primary", "fingerprint": "14da44cd0bfb0ab0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f006669876c6bf55", "level": "none", "message": {"text": "Commented-code block (16 lines) in src/voice-mode-resolver.ts:11"}, "properties": {"repobilityId": "beeb9bf6b3df5d02", "scanner": "scanner-primary", "fingerprint": "f006669876c6bf55", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-97c917fa9942ee52", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/telegram-bridge.py:9"}, "properties": {"repobilityId": "4339be35af0740aa", "scanner": "scanner-primary", "fingerprint": "97c917fa9942ee52", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-25f1845c048cfa87", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/dm-result.py:42"}, "properties": {"repobilityId": "4b0324c9a40a035c", "scanner": "scanner-primary", "fingerprint": "25f1845c048cfa87", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be3d02ffd9485cd0", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/util_paths.ts:13"}, "properties": {"repobilityId": "9925a074e3c4342a", "scanner": "scanner-primary", "fingerprint": "be3d02ffd9485cd0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8e0073421362f80", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/vision-tools.ts:34"}, "properties": {"repobilityId": "100476bc7d6ee3cc", "scanner": "scanner-primary", "fingerprint": "c8e0073421362f80", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-74c069ae00bd7bee", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/friction-detector.py:184"}, "properties": {"repobilityId": "a0bab626b886ee75", "scanner": "scanner-primary", "fingerprint": "74c069ae00bd7bee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bbacfcf489cd6a75", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/cartesia-stt-provider.ts:98"}, "properties": {"repobilityId": "99bd2d506ac498c1", "scanner": "scanner-primary", "fingerprint": "bbacfcf489cd6a75", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0433773ff82f679f", "level": "note", "message": {"text": "Legacy-named symbol `_migrate_from_legacy` in src/workspace_default.py:58"}, "properties": {"repobilityId": "6460115ec6707aae", "scanner": "scanner-primary", "fingerprint": "0433773ff82f679f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8626afbf2e9038d7", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/workspace_default.py:36"}, "properties": {"repobilityId": "dafbc0b36b3bc95e", "scanner": "scanner-primary", "fingerprint": "8626afbf2e9038d7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b1034d06236afeab", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/workspace_default.ts:66"}, "properties": {"repobilityId": "fc68c4d5b7f39cc8", "scanner": "scanner-primary", "fingerprint": "b1034d06236afeab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-104d2b3929f10fe7", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/cartesia-tts.ts:15"}, "properties": {"repobilityId": "356f155649d6f10e", "scanner": "scanner-primary", "fingerprint": "104d2b3929f10fe7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3b1e911429a7ca5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/voice-agent.ts:48"}, "properties": {"repobilityId": "f02cb85529de95b0", "scanner": "scanner-primary", "fingerprint": "e3b1e911429a7ca5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b69c11efa87f9af4", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/dashboard.py:71"}, "properties": {"repobilityId": "73fad5f494a22e69", "scanner": "scanner-primary", "fingerprint": "b69c11efa87f9af4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a2d8c16138dbb6c1", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/dashboard.py:359"}, "properties": {"repobilityId": "6a9fd8fb213ea310", "scanner": "scanner-primary", "fingerprint": "a2d8c16138dbb6c1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4599e95ae37ac4fc", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/recording-tools.ts:98"}, "properties": {"repobilityId": "7297fb12fe8de0aa", "scanner": "scanner-primary", "fingerprint": "4599e95ae37ac4fc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3b104d7de25529a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/recording-tools.ts:304"}, "properties": {"repobilityId": "6916dcf886934ac5", "scanner": "scanner-primary", "fingerprint": "e3b104d7de25529a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3b38661a9d8e7b93", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/util_paths.py:170"}, "properties": {"repobilityId": "cf1d4d261b42ea21", "scanner": "scanner-primary", "fingerprint": "3b38661a9d8e7b93", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b876672b51372e3", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/archive-stale-results.py:37"}, "properties": {"repobilityId": "0bff70590adf0c93", "scanner": "scanner-primary", "fingerprint": "4b876672b51372e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55b1a79eaa3cb8cd", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/check-pending-questions.py:39"}, "properties": {"repobilityId": "07fb7ef57da1f537", "scanner": "scanner-primary", "fingerprint": "55b1a79eaa3cb8cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e9884666579b6df1", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/check-pending-questions.py:123"}, "properties": {"repobilityId": "a45fcb9d718ea9f9", "scanner": "scanner-primary", "fingerprint": "e9884666579b6df1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b79971becb045083", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/browser-tools.ts:217"}, "properties": {"repobilityId": "8935a0e13d4dc4c4", "scanner": "scanner-primary", "fingerprint": "b79971becb045083", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b6dfad7682ceee36", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/browser-tools.ts:332"}, "properties": {"repobilityId": "7e211a37ae0238c5", "scanner": "scanner-primary", "fingerprint": "b6dfad7682ceee36", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-642136bce1ba8840", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/web-client.ts:677"}, "properties": {"repobilityId": "a64e5f18b42641ff", "scanner": "scanner-primary", "fingerprint": "642136bce1ba8840", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b2a100f2f321453f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/web-client.ts:663"}, "properties": {"repobilityId": "147092ae01c2b155", "scanner": "scanner-primary", "fingerprint": "b2a100f2f321453f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-497c39f7ccf49973", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/task-bridge.ts:151"}, "properties": {"repobilityId": "2e8dcf7f279cfef5", "scanner": "scanner-primary", "fingerprint": "497c39f7ccf49973", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-89d0d8302a038407", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/agent-api.py:85"}, "properties": {"repobilityId": "08b6c4820e67c9fb", "scanner": "scanner-primary", "fingerprint": "89d0d8302a038407", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-094ebbe1fc7e028c", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/agent-api.py:326"}, "properties": {"repobilityId": "c2ab4659699ffc5f", "scanner": "scanner-primary", "fingerprint": "094ebbe1fc7e028c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fda6be9c21e1669a", "level": "note", "message": {"text": "Stub function `log_message` (body is just `pass`/`return`) \u2014 src/agent-api.py:287"}, "properties": {"repobilityId": "0d345168d3aef715", "scanner": "scanner-primary", "fingerprint": "fda6be9c21e1669a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-6cd16b278c56c1e3", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/proactive_routing.py:35"}, "properties": {"repobilityId": "7e3a056dd7f61468", "scanner": "scanner-primary", "fingerprint": "6cd16b278c56c1e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0c00de215ab755ba", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/result-channel-key.ts:83"}, "properties": {"repobilityId": "a3572a2eefcce13d", "scanner": "scanner-primary", "fingerprint": "0c00de215ab755ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4aa91c33ff167865", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/github-webhook.py:29"}, "properties": {"repobilityId": "66d8ac7fbc1399d3", "scanner": "scanner-primary", "fingerprint": "4aa91c33ff167865", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-64da8a774454092a", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/task_priority.py:59"}, "properties": {"repobilityId": "0eb26a69fafe9bb5", "scanner": "scanner-primary", "fingerprint": "64da8a774454092a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aa3c528e116d3962", "level": "note", "message": {"text": "Legacy-named symbol `files_upload_v2` in src/slack-bridge.py:31"}, "properties": {"repobilityId": "44e21caf17004587", "scanner": "scanner-primary", "fingerprint": "aa3c528e116d3962", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9351424fafe9482a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/slack-bridge.py:175"}, "properties": {"repobilityId": "588e792f6dbfdb28", "scanner": "scanner-primary", "fingerprint": "9351424fafe9482a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0cfca7967abfe648", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/result_markers.py:97"}, "properties": {"repobilityId": "09378c5d03ed2fe6", "scanner": "scanner-primary", "fingerprint": "0cfca7967abfe648", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-43678ea8d3370eb5", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/result_channel_key.py:88"}, "properties": {"repobilityId": "dad226f014b9c298", "scanner": "scanner-primary", "fingerprint": "43678ea8d3370eb5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d2bbf3afb155ca8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/meeting-tools.ts:222"}, "properties": {"repobilityId": "66f1d24786b7a603", "scanner": "scanner-primary", "fingerprint": "8d2bbf3afb155ca8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4f85a3548e46572b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/inline-tools.ts:16"}, "properties": {"repobilityId": "9ba1854af2a2f382", "scanner": "scanner-primary", "fingerprint": "4f85a3548e46572b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3ac4a20c5910041c", "level": "note", "message": {"text": "Legacy-named symbol `discord_voice_legacy` in src/conversation-store.ts:106"}, "properties": {"repobilityId": "844ac7de195dd073", "scanner": "scanner-primary", "fingerprint": "3ac4a20c5910041c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3ce00ed3ed585ea7", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/conversation-store.ts:93"}, "properties": {"repobilityId": "2c5a2b22479474a6", "scanner": "scanner-primary", "fingerprint": "3ce00ed3ed585ea7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2cc1edb45c56101", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/discord_config.py:135"}, "properties": {"repobilityId": "77b022f7d5099c00", "scanner": "scanner-primary", "fingerprint": "f2cc1edb45c56101", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-34ce67553daa8fa7", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/discord-bridge.py:21"}, "properties": {"repobilityId": "982a4f77ef9c14d3", "scanner": "scanner-primary", "fingerprint": "34ce67553daa8fa7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dfffad0e2f7e4707", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/discord-bridge.py:45"}, "properties": {"repobilityId": "3b499096f3b7d3bd", "scanner": "scanner-primary", "fingerprint": "dfffad0e2f7e4707", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-98b63e40bf3334b3", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/vault_intercept.py:47"}, "properties": {"repobilityId": "0fa8d1b806765cfe", "scanner": "scanner-primary", "fingerprint": "98b63e40bf3334b3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e406c3613ad0f11d", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/vault_intercept.py:75"}, "properties": {"repobilityId": "40989ce42224e110", "scanner": "scanner-primary", "fingerprint": "e406c3613ad0f11d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3b5eba59879008c9", "level": "note", "message": {"text": "104 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "a4a1409b07b00517", "scanner": "scanner-primary", "fingerprint": "3b5eba59879008c9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "08cc59b1a0a22029", "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": "b0c43acf4fbfc8c2", "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": "3f3718b84be6aee8", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}