{"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-2dacb237d464122a", "name": "Possibly dead Python function: rec_answer", "shortDescription": {"text": "Possibly dead Python function: rec_answer"}, "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-d6f8810442d6ab87", "name": "Possibly dead Python function: collate", "shortDescription": {"text": "Possibly dead Python function: collate"}, "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-b8a05122b414775d", "name": "Possibly dead Python function: cmd_init", "shortDescription": {"text": "Possibly dead Python function: cmd_init"}, "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-6eef0656f8f82447", "name": "Possibly dead Python function: cmd_inspect", "shortDescription": {"text": "Possibly dead Python function: cmd_inspect"}, "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-b3fd90b3b5bd3316", "name": "Possibly dead Python function: cmd_resolve", "shortDescription": {"text": "Possibly dead Python function: cmd_resolve"}, "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-ed74be83aff4b02f", "name": "Possibly dead Python function: cmd_ab", "shortDescription": {"text": "Possibly dead Python function: cmd_ab"}, "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-5c642eb79dd823de", "name": "Possibly dead Python function: cmd_search", "shortDescription": {"text": "Possibly dead Python function: cmd_search"}, "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-c124a0f6f5740c0e", "name": "Possibly dead Python function: cmd_recall", "shortDescription": {"text": "Possibly dead Python function: cmd_recall"}, "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-14d23a9382711429", "name": "Possibly dead Python function: cmd_gap", "shortDescription": {"text": "Possibly dead Python function: cmd_gap"}, "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-819c96ca0c980e44", "name": "Possibly dead Python function: cand_key", "shortDescription": {"text": "Possibly dead Python function: cand_key"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6900310aef083fb1", "name": "Possibly dead Python function: entities_for_doc", "shortDescription": {"text": "Possibly dead Python function: entities_for_doc"}, "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-393d73c86d5c4dc9", "name": "Possibly dead Python function: to_json", "shortDescription": {"text": "Possibly dead Python function: to_json"}, "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-d054cf2227dc95d7", "name": "Possibly dead Python function: worker", "shortDescription": {"text": "Possibly dead Python function: worker"}, "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-21bc085d99b2063d", "name": "Possibly dead Python function: bench_chunker", "shortDescription": {"text": "Possibly dead Python function: bench_chunker"}, "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-55dba49bd44a3848", "name": "Possibly dead Python function: bench_vault_write", "shortDescription": {"text": "Possibly dead Python function: bench_vault_write"}, "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-d6cdf400fff138d5", "name": "Possibly dead Python function: bench_fts_query", "shortDescription": {"text": "Possibly dead Python function: bench_fts_query"}, "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-0e7f6f782a7ffbf8", "name": "Possibly dead Python function: bench_agent_cycle", "shortDescription": {"text": "Possibly dead Python function: bench_agent_cycle"}, "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-54f68215ba9879e3", "name": "Possibly dead Python function: reset_breaker", "shortDescription": {"text": "Possibly dead Python function: reset_breaker"}, "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-66915c9726380ad1", "name": "Possibly dead Python function: render_body_and_toc", "shortDescription": {"text": "Possibly dead Python function: render_body_and_toc"}, "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-b5d9d98b46721cc5", "name": "Possibly dead Python function: wrapped", "shortDescription": {"text": "Possibly dead Python function: wrapped"}, "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-4eb433b38477b9f7", "name": "Possibly dead Python function: route_after_assess", "shortDescription": {"text": "Possibly dead Python function: route_after_assess"}, "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-dc1be9309552b711", "name": "Stray `console.log` in TS/JS \u2014 src/memex/webui/static/htmx.min.js:1", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/memex/webui/static/htmx.min.js:1"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0f5c3d5b314e8548", "name": "Stray `console.log` in TS/JS \u2014 src/memex/webui/static/cytoscape.min.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/memex/webui/static/cytoscape.min.js:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1d96af4b3fae17a3", "name": "Insecure pattern 'eval_used' in CLAUDE.md:37", "shortDescription": {"text": "Insecure pattern 'eval_used' in CLAUDE.md:37"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-37868c77c7c77e4f", "name": "Insecure pattern 'eval_used' in src/memex/CLAUDE.md:47", "shortDescription": {"text": "Insecure pattern 'eval_used' in src/memex/CLAUDE.md:47"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e16b25fde2fc73f4", "name": "Insecure pattern 'new_function_used' in src/memex/webui/static/htmx.min.js:1", "shortDescription": {"text": "Insecure pattern 'new_function_used' in src/memex/webui/static/htmx.min.js:1"}, "fullDescription": {"text": "Found a known-risky pattern (new_function_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7a22dcce6371eefb", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/memex/webui/static/htmx.min.js:1", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/memex/webui/static/htmx.min.js:1"}, "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-cc1b9d9cd6a2c12e", "name": "Insecure pattern 'insert_adjacent_html' in src/memex/webui/static/htmx.min.js:1", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in src/memex/webui/static/htmx.min.js:1"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6265e3a2f487fa7e", "name": "Insecure pattern 'domparser_html_parse' in src/memex/webui/static/htmx.min.js:1", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in src/memex/webui/static/htmx.min.js:1"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1d401c3754e01084", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/memex/webui/static/graph.js:25", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/memex/webui/static/graph.js:25"}, "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-6e737343dd91046d", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "astral-sh/setup-uv@v3 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-0c93853196af8a9c", "name": "Very large file: tests/integration/test_webui.py (3927 lines)", "shortDescription": {"text": "Very large file: tests/integration/test_webui.py (3927 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-f8da6eb280043113", "name": "Very large file: tests/integration/test_answering_with_fakes.py (2438 lines)", "shortDescription": {"text": "Very large file: tests/integration/test_answering_with_fakes.py (2438 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9eb07d96b9b1d1e3", "name": "Very large file: scripts/scope_guard_span_probe.py (1163 lines)", "shortDescription": {"text": "Very large file: scripts/scope_guard_span_probe.py (1163 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-e11eb7440f62eb86", "name": "Very large file: src/memex/webui/app.py (2691 lines)", "shortDescription": {"text": "Very large file: src/memex/webui/app.py (2691 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-75e8331040123fc3", "name": "Very large file: src/memex/cli/commands.py (1941 lines)", "shortDescription": {"text": "Very large file: src/memex/cli/commands.py (1941 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-6d02ee53eedd63af", "name": "Very large file: src/memex/parse/chart_ocr_backend.py (1277 lines)", "shortDescription": {"text": "Very large file: src/memex/parse/chart_ocr_backend.py (1277 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-ca7ba1fcc0032877", "name": "Very large file: src/memex/parse/pipeline.py (2671 lines)", "shortDescription": {"text": "Very large file: src/memex/parse/pipeline.py (2671 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-73a24033e4e8cd09", "name": "Very large file: src/memex/eval/runner.py (1211 lines)", "shortDescription": {"text": "Very large file: src/memex/eval/runner.py (1211 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-130d15f5d8f2c05b", "name": "Very large file: src/memex/agents/answering.py (3068 lines)", "shortDescription": {"text": "Very large file: src/memex/agents/answering.py (3068 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-3174b5874c367692", "name": "Very large file: src/memex/agents/document_summarizer.py (1380 lines)", "shortDescription": {"text": "Very large file: src/memex/agents/document_summarizer.py (1380 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-c5c02c2c5ec87330", "name": "Very large file: src/memex/index/graph_store.py (1111 lines)", "shortDescription": {"text": "Very large file: src/memex/index/graph_store.py (1111 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-52b99b40aa538b8b", "name": "Very large file: src/memex/core/config.py (965 lines)", "shortDescription": {"text": "Very large file: src/memex/core/config.py (965 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-ec3d9dcae976cb87", "name": "Very large file: src/memex/core/text.py (1168 lines)", "shortDescription": {"text": "Very large file: src/memex/core/text.py (1168 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 416 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 67 placeholder/mock markers across 20 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-38f3ae7fc5a34aed", "name": "Legacy-named symbol `body_v1` in tests/integration/test_partial_reindex.py:326", "shortDescription": {"text": "Legacy-named symbol `body_v1` in tests/integration/test_partial_reindex.py:326"}, "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-5ac8c627afe0825d", "name": "Commented-code block (6 lines) in tests/integration/test_partial_reindex.py:590", "shortDescription": {"text": "Commented-code block (6 lines) in tests/integration/test_partial_reindex.py:590"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-75445eaa1aa830e1", "name": "Commented-code block (5 lines) in tests/integration/test_webui.py:1118", "shortDescription": {"text": "Commented-code block (5 lines) in tests/integration/test_webui.py:1118"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d7a1df16ccfebae1", "name": "Commented-code block (5 lines) in tests/integration/test_code_routing.py:60", "shortDescription": {"text": "Commented-code block (5 lines) in tests/integration/test_code_routing.py:60"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ffb13784beee2dea", "name": "Commented-code block (8 lines) in tests/integration/test_answering_with_fakes.py:113", "shortDescription": {"text": "Commented-code block (8 lines) in tests/integration/test_answering_with_fakes.py:113"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-227f8eef105e2f98", "name": "Commented-code block (5 lines) in tests/integration/test_fts_store_concurrent.py:195", "shortDescription": {"text": "Commented-code block (5 lines) in tests/integration/test_fts_store_concurrent.py:195"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ddfe2a6b2dad5bd6", "name": "Commented-code block (8 lines) in tests/integration/test_chart_block_retrieval_isolation.py:159", "shortDescription": {"text": "Commented-code block (8 lines) in tests/integration/test_chart_block_retrieval_isolation.py:159"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9f120659f766b228", "name": "Commented-code block (5 lines) in tests/integration/test_ingest_driver.py:190", "shortDescription": {"text": "Commented-code block (5 lines) in tests/integration/test_ingest_driver.py:190"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1892c5297516412e", "name": "Legacy-named symbol `model_copy` in tests/integration/test_table_sql_agent.py:757", "shortDescription": {"text": "Legacy-named symbol `model_copy` in tests/integration/test_table_sql_agent.py:757"}, "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-d9af9fce2c00505c", "name": "Legacy-named symbol `model_copy` in tests/integration/test_expert_eval.py:262", "shortDescription": {"text": "Legacy-named symbol `model_copy` in tests/integration/test_expert_eval.py:262"}, "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-7e2c04775237b5b5", "name": "Legacy-named symbol `model_copy` in tests/integration/test_enrich_and_graph.py:240", "shortDescription": {"text": "Legacy-named symbol `model_copy` in tests/integration/test_enrich_and_graph.py:240"}, "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-24b83afc99d9ba20", "name": "Legacy-named symbol `model_copy` in tests/integration/test_code_chunking.py:89", "shortDescription": {"text": "Legacy-named symbol `model_copy` in tests/integration/test_code_chunking.py:89"}, "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-a39c627377d7cd88", "name": "Legacy-named symbol `model_copy` in tests/integration/test_mcp_server.py:89", "shortDescription": {"text": "Legacy-named symbol `model_copy` in tests/integration/test_mcp_server.py:89"}, "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-51667b036abbf164", "name": "Legacy-named symbol `test_resolve_returns_a_copy` in tests/unit/test_scope_sets.py:58", "shortDescription": {"text": "Legacy-named symbol `test_resolve_returns_a_copy` in tests/unit/test_scope_sets.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-8f1a7a526f8ab0e4", "name": "Commented-code block (5 lines) in tests/unit/test_w12_hardening.py:27", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/test_w12_hardening.py:27"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-34547510425a5c73", "name": "Legacy-named symbol `test_kill_switch_pins_v2` in tests/unit/test_assess_relevance_prompt.py:52", "shortDescription": {"text": "Legacy-named symbol `test_kill_switch_pins_v2` in tests/unit/test_assess_relevance_prompt.py:52"}, "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-532a18bb939263c4", "name": "Legacy-named symbol `test_pin_kill_switch_reverts_to_v1` in tests/unit/test_extract_claims_prompt.py:55", "shortDescription": {"text": "Legacy-named symbol `test_pin_kill_switch_reverts_to_v1` in tests/unit/test_extract_claims_prompt.py:55"}, "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-1968fd3c0863b23b", "name": "Legacy-named symbol `test_kill_switch_pins_v1` in tests/unit/test_assess_sufficiency_prompt.py:84", "shortDescription": {"text": "Legacy-named symbol `test_kill_switch_pins_v1` in tests/unit/test_assess_sufficiency_prompt.py:84"}, "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-090c932f142a3bba", "name": "Legacy-named symbol `test_loader_selects_v2` in tests/unit/test_enrich_prompts.py:34", "shortDescription": {"text": "Legacy-named symbol `test_loader_selects_v2` in tests/unit/test_enrich_prompts.py:34"}, "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-6cb8850f66678669", "name": "Legacy-named symbol `model_copy` in tests/unit/test_provenance_scope.py:305", "shortDescription": {"text": "Legacy-named symbol `model_copy` in tests/unit/test_provenance_scope.py:305"}, "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-2d324de4fb679633", "name": "Commented-code block (6 lines) in tests/unit/test_docling_heading_levels.py:90", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/test_docling_heading_levels.py:90"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f627602dfadd6dc5", "name": "Commented-code block (5 lines) in tests/unit/test_collapse_duplicates.py:82", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/test_collapse_duplicates.py:82"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-edeb5c9b825a73cd", "name": "Commented-code block (5 lines) in tests/unit/test_chunker.py:154", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/test_chunker.py:154"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c378b784ea6a23f5", "name": "Commented-code block (5 lines) in scripts/extend_corpus.py:317", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/extend_corpus.py:317"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-388c6ab2cda0a6a5", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/extend_corpus.py:381", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/extend_corpus.py:381"}, "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-b379d725a6c6f8c9", "name": "Commented-code block (5 lines) in scripts/entity_ner_ab_audit.py:135", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/entity_ner_ab_audit.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-73eedfe6e2386855", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/rebaseline.py:122", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/rebaseline.py:122"}, "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-1ab486618b043fc7", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/ryugraph_consistency_probe.py:321", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/ryugraph_consistency_probe.py:321"}, "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-740384ce15380192", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/workflows/codebase-audit.js:146", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/workflows/codebase-audit.js:146"}, "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-d967459d7ef60c57", "name": "Network/subprocess call without timeout or try/except \u2014 eval-corpus/modern-printed/tidewater-maintenance-log/generate.py", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 eval-corpus/modern-printed/tidewater-maintenance-log/generate.py:42"}, "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-02578e638a8c1000", "name": "Network/subprocess call without timeout or try/except \u2014 eval-corpus/technical-docs/widget-cli-reference/generate.py:39", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 eval-corpus/technical-docs/widget-cli-reference/generate.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-c9f0484e3ea53b0d", "name": "Network/subprocess call without timeout or try/except \u2014 eval-corpus/forms/quarterly-uptime-report/generate.py:39", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 eval-corpus/forms/quarterly-uptime-report/generate.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-275f22f00409b385", "name": "Commented-code block (10 lines) in src/memex/vault/store.py:32", "shortDescription": {"text": "Commented-code block (10 lines) in src/memex/vault/store.py:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9346b756d6f21850", "name": "Commented-code block (5 lines) in src/memex/vault/_file_lock.py:110", "shortDescription": {"text": "Commented-code block (5 lines) in src/memex/vault/_file_lock.py:110"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-74b668d3eeef679a", "name": "Commented-code block (7 lines) in src/memex/models/client.py:26", "shortDescription": {"text": "Commented-code block (7 lines) in src/memex/models/client.py:26"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-775457eb55234379", "name": "Commented-code block (6 lines) in src/memex/models/registry.py:432", "shortDescription": {"text": "Commented-code block (6 lines) in src/memex/models/registry.py:432"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bc90408dcacf7165", "name": "Commented-code block (5 lines) in src/memex/webui/rendering.py:45", "shortDescription": {"text": "Commented-code block (5 lines) in src/memex/webui/rendering.py:45"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bbeb9342b7e42e12", "name": "Commented-code block (6 lines) in src/memex/webui/app.py:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/memex/webui/app.py: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-858b9ff43a690596", "name": "Commented-code block (6 lines) in src/memex/webui/progress.py:114", "shortDescription": {"text": "Commented-code block (6 lines) in src/memex/webui/progress.py:114"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-570cac3b2fe688bb", "name": "Commented-code block (9 lines) in src/memex/webui/ingest_driver.py:53", "shortDescription": {"text": "Commented-code block (9 lines) in src/memex/webui/ingest_driver.py:53"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d79ba8ae790befbe", "name": "Commented-code block (6 lines) in src/memex/cli/commands.py:10", "shortDescription": {"text": "Commented-code block (6 lines) in src/memex/cli/commands.py:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-215edfbe412d1b36", "name": "Network/subprocess call without timeout or try/except \u2014 src/memex/cli/commands.py:1344", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/memex/cli/commands.py:1344"}, "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-f0fa7c12f209c053", "name": "Commented-code block (5 lines) in src/memex/cli/bootstrap.py:27", "shortDescription": {"text": "Commented-code block (5 lines) in src/memex/cli/bootstrap.py:27"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5ed57602aaabf05b", "name": "Commented-code block (5 lines) in src/memex/ingest/validation.py:133", "shortDescription": {"text": "Commented-code block (5 lines) in src/memex/ingest/validation.py:133"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-13fcbe4a109864a8", "name": "Commented-code block (6 lines) in src/memex/ingest/watcher.py:244", "shortDescription": {"text": "Commented-code block (6 lines) in src/memex/ingest/watcher.py:244"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-43de6ba48a4f5e65", "name": "Commented-code block (5 lines) in src/memex/ingest/pipeline.py:139", "shortDescription": {"text": "Commented-code block (5 lines) in src/memex/ingest/pipeline.py:139"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a814620fa685b81c", "name": "Commented-code block (6 lines) in src/memex/parse/pdf_render.py:26", "shortDescription": {"text": "Commented-code block (6 lines) in src/memex/parse/pdf_render.py:26"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a8e57fee2423054a", "name": "Legacy-named symbol `model_copy` in src/memex/parse/docling_tables.py:4", "shortDescription": {"text": "Legacy-named symbol `model_copy` in src/memex/parse/docling_tables.py:4"}, "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-330ee398a9798889", "name": "Commented-code block (9 lines) in src/memex/parse/docling_tables.py:1", "shortDescription": {"text": "Commented-code block (9 lines) in src/memex/parse/docling_tables.py: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-8816a7d6eb2bd51b", "name": "Commented-code block (5 lines) in src/memex/parse/pymupdf_worker.py:47", "shortDescription": {"text": "Commented-code block (5 lines) in src/memex/parse/pymupdf_worker.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-0622da4885265ed7", "name": "Commented-code block (7 lines) in src/memex/parse/docling_worker.py:39", "shortDescription": {"text": "Commented-code block (7 lines) in src/memex/parse/docling_worker.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-48c051a5dd6173aa", "name": "Commented-code block (8 lines) in src/memex/parse/vlm_backend.py:59", "shortDescription": {"text": "Commented-code block (8 lines) in src/memex/parse/vlm_backend.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-975cdf0d34b27d6d", "name": "Commented-code block (5 lines) in src/memex/parse/keyframe_ocr.py:41", "shortDescription": {"text": "Commented-code block (5 lines) in src/memex/parse/keyframe_ocr.py:41"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b1b5f8a84cd3a5a4", "name": "Commented-code block (6 lines) in src/memex/parse/image_convert.py:73", "shortDescription": {"text": "Commented-code block (6 lines) in src/memex/parse/image_convert.py:73"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fbb370f2c46fa046", "name": "Commented-code block (7 lines) in src/memex/parse/chart_ocr_backend.py:48", "shortDescription": {"text": "Commented-code block (7 lines) in src/memex/parse/chart_ocr_backend.py:48"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5c7c4cb9c27aa92d", "name": "Commented-code block (5 lines) in src/memex/parse/office_convert.py:40", "shortDescription": {"text": "Commented-code block (5 lines) in src/memex/parse/office_convert.py:40"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6c1b6cf054e230f0", "name": "Legacy-named symbol `model_copy` in src/memex/parse/asr_backend.py:250", "shortDescription": {"text": "Legacy-named symbol `model_copy` in src/memex/parse/asr_backend.py:250"}, "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-bb02e2985b6e0a42", "name": "Commented-code block (6 lines) in src/memex/parse/docling_backend.py:181", "shortDescription": {"text": "Commented-code block (6 lines) in src/memex/parse/docling_backend.py:181"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a4c4bafdbf706d85", "name": "Legacy-named symbol `model_copy` in src/memex/parse/pipeline.py:1051", "shortDescription": {"text": "Legacy-named symbol `model_copy` in src/memex/parse/pipeline.py:1051"}, "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-620989d7904fb6fd", "name": "Commented-code block (5 lines) in src/memex/parse/pipeline.py:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/memex/parse/pipeline.py: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-e191271484ccf4d8", "name": "Commented-code block (5 lines) in src/memex/observability/tracing.py:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/memex/observability/tracing.py: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-ca6ca11ddb9087b1", "name": "Legacy-named symbol `model_copy` in src/memex/retrieve/rerank.py:163", "shortDescription": {"text": "Legacy-named symbol `model_copy` in src/memex/retrieve/rerank.py:163"}, "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-f2df9165503bac66", "name": "Commented-code block (7 lines) in src/memex/retrieve/entity.py:74", "shortDescription": {"text": "Commented-code block (7 lines) in src/memex/retrieve/entity.py:74"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5b59d49a4989055d", "name": "Commented-code block (5 lines) in src/memex/retrieve/hybrid.py:37", "shortDescription": {"text": "Commented-code block (5 lines) in src/memex/retrieve/hybrid.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-bbeb8fd1739153b3", "name": "Legacy-named symbol `model_copy` in src/memex/retrieve/fusion.py:38", "shortDescription": {"text": "Legacy-named symbol `model_copy` in src/memex/retrieve/fusion.py:38"}, "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-6a5778eca29f0d5b", "name": "Commented-code block (6 lines) in src/memex/daemon/supervisor.py:257", "shortDescription": {"text": "Commented-code block (6 lines) in src/memex/daemon/supervisor.py:257"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5a009108e6a7b48f", "name": "Commented-code block (6 lines) in src/memex/eval/scoring.py:134", "shortDescription": {"text": "Commented-code block (6 lines) in src/memex/eval/scoring.py:134"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-80bbd3bf6567f01f", "name": "Commented-code block (7 lines) in src/memex/eval/runner.py:54", "shortDescription": {"text": "Commented-code block (7 lines) in src/memex/eval/runner.py:54"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d0430b5967403a16", "name": "Legacy-named symbol `model_copy` in src/memex/agents/answering.py:1454", "shortDescription": {"text": "Legacy-named symbol `model_copy` in src/memex/agents/answering.py:1454"}, "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-e4b40dd9c6a33c31", "name": "Commented-code block (5 lines) in src/memex/agents/answering.py:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/memex/agents/answering.py: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-b3cdaf6d51929f03", "name": "Commented-code block (5 lines) in src/memex/agents/form_fields.py:50", "shortDescription": {"text": "Commented-code block (5 lines) in src/memex/agents/form_fields.py:50"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a544e5ee32d3b4ca", "name": "Commented-code block (6 lines) in src/memex/agents/bridge.py:96", "shortDescription": {"text": "Commented-code block (6 lines) in src/memex/agents/bridge.py:96"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6260274742bed55b", "name": "Commented-code block (5 lines) in src/memex/agents/document_summarizer.py:63", "shortDescription": {"text": "Commented-code block (5 lines) in src/memex/agents/document_summarizer.py:63"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a09110ac31494e1e", "name": "Commented-code block (6 lines) in src/memex/agents/artifact_scope.py:44", "shortDescription": {"text": "Commented-code block (6 lines) in src/memex/agents/artifact_scope.py:44"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8b26bf0200b8abdf", "name": "Commented-code block (7 lines) in src/memex/agents/table_sql.py:175", "shortDescription": {"text": "Commented-code block (7 lines) in src/memex/agents/table_sql.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-3482179c7997934a", "name": "Commented-code block (6 lines) in src/memex/index/embed_prompts.py:32", "shortDescription": {"text": "Commented-code block (6 lines) in src/memex/index/embed_prompts.py:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-414a1fd4f942dda1", "name": "Commented-code block (9 lines) in src/memex/index/graph_store.py:41", "shortDescription": {"text": "Commented-code block (9 lines) in src/memex/index/graph_store.py:41"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9c37056a2668cc14", "name": "Commented-code block (7 lines) in src/memex/index/chunker.py:32", "shortDescription": {"text": "Commented-code block (7 lines) in src/memex/index/chunker.py:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2f1cea3a128766e2", "name": "Commented-code block (8 lines) in src/memex/index/vector_store.py:130", "shortDescription": {"text": "Commented-code block (8 lines) in src/memex/index/vector_store.py:130"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6655a96208e4ac36", "name": "Commented-code block (5 lines) in src/memex/index/table_store.py:87", "shortDescription": {"text": "Commented-code block (5 lines) in src/memex/index/table_store.py:87"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-14f45b2fd54b2ce0", "name": "Commented-code block (5 lines) in src/memex/index/initialism.py:23", "shortDescription": {"text": "Commented-code block (5 lines) in src/memex/index/initialism.py:23"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-92f6fc7048447087", "name": "Legacy-named symbol `model_copy` in src/memex/index/pipeline.py:308", "shortDescription": {"text": "Legacy-named symbol `model_copy` in src/memex/index/pipeline.py:308"}, "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-d7b2c094433c5e4d", "name": "Commented-code block (12 lines) in src/memex/index/pipeline.py:129", "shortDescription": {"text": "Commented-code block (12 lines) in src/memex/index/pipeline.py:129"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3aed772451afaa59", "name": "Commented-code block (12 lines) in src/memex/index/fts_store.py:93", "shortDescription": {"text": "Commented-code block (12 lines) in src/memex/index/fts_store.py: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-f809f3b584f6a762", "name": "Commented-code block (6 lines) in src/memex/core/manifest.py:166", "shortDescription": {"text": "Commented-code block (6 lines) in src/memex/core/manifest.py:166"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8d48f6c2c882a8f5", "name": "Commented-code block (7 lines) in src/memex/core/types.py:15", "shortDescription": {"text": "Commented-code block (7 lines) in src/memex/core/types.py: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-5527ed1fb9dd3b8a", "name": "Commented-code block (5 lines) in src/memex/core/table_linearize.py:65", "shortDescription": {"text": "Commented-code block (5 lines) in src/memex/core/table_linearize.py:65"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3eeb34ec5fa21b60", "name": "Commented-code block (5 lines) in src/memex/core/config.py:115", "shortDescription": {"text": "Commented-code block (5 lines) in src/memex/core/config.py:115"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ac3b87b8dea99658", "name": "Commented-code block (5 lines) in src/memex/core/wikilinks.py:37", "shortDescription": {"text": "Commented-code block (5 lines) in src/memex/core/wikilinks.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-855550f55480050a", "name": "Commented-code block (7 lines) in src/memex/core/resources.py:33", "shortDescription": {"text": "Commented-code block (7 lines) in src/memex/core/resources.py: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-8986077784851635", "name": "Commented-code block (6 lines) in src/memex/core/text.py:36", "shortDescription": {"text": "Commented-code block (6 lines) in src/memex/core/text.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-c51f5ff232e49279", "name": "Commented-code block (6 lines) in src/memex/core/scope_sets.py:44", "shortDescription": {"text": "Commented-code block (6 lines) in src/memex/core/scope_sets.py:44"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6bf1aeacde9ad632", "name": "Legacy-named symbol `model_copy` in src/memex/enrich/entities.py:126", "shortDescription": {"text": "Legacy-named symbol `model_copy` in src/memex/enrich/entities.py:126"}, "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-e83b5e709f073fc7", "name": "Commented-code block (5 lines) in src/memex/enrich/entities.py:32", "shortDescription": {"text": "Commented-code block (5 lines) in src/memex/enrich/entities.py:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-beee626a09e8a64c", "name": "Legacy-named symbol `model_copy` in src/memex/enrich/pipeline.py:239", "shortDescription": {"text": "Legacy-named symbol `model_copy` in src/memex/enrich/pipeline.py:239"}, "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-630736f241c950ae", "name": "Commented-code block (8 lines) in src/memex/enrich/pipeline.py:79", "shortDescription": {"text": "Commented-code block (8 lines) in src/memex/enrich/pipeline.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-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/scope_guard_span_probe.py:verdict, scripts/scope_guard_span_probe.py:verdict\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\neval-corpus/modern-printed/tidewater-maintenance-log/generate.py:main, eval-corpus/technical-docs/widget-cli-reference/generate.py:main, eval-corpus/forms/quarterly-uptime-report/generate.py:main\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/memex/parse/chart_ocr_cache.py:close, src/memex/parse/keyframe_ocr_cache.py:close, src/memex/parse/asr_cache.py:close, src/memex/parse/vlm_cache.py:close\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6c2e0b75737168aa", "name": "FastAPI POST `scope_set_save` without auth dependency \u2014 src/memex/webui/app.py:753", "shortDescription": {"text": "FastAPI POST `scope_set_save` without auth dependency \u2014 src/memex/webui/app.py:753"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1b682a010718195f", "name": "FastAPI POST `scope_set_suggest` without auth dependency \u2014 src/memex/webui/app.py:777", "shortDescription": {"text": "FastAPI POST `scope_set_suggest` without auth dependency \u2014 src/memex/webui/app.py:777"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3b454901cdf4a190", "name": "FastAPI POST `scope_set_apply` without auth dependency \u2014 src/memex/webui/app.py:809", "shortDescription": {"text": "FastAPI POST `scope_set_apply` without auth dependency \u2014 src/memex/webui/app.py:809"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3d85e5b7fbe0471c", "name": "FastAPI POST `scope_set_remove` without auth dependency \u2014 src/memex/webui/app.py:837", "shortDescription": {"text": "FastAPI POST `scope_set_remove` without auth dependency \u2014 src/memex/webui/app.py:837"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6a78f951f703f8ea", "name": "FastAPI POST `scope_set_clear` without auth dependency \u2014 src/memex/webui/app.py:857", "shortDescription": {"text": "FastAPI POST `scope_set_clear` without auth dependency \u2014 src/memex/webui/app.py:857"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e45ff780196b1fbe", "name": "FastAPI POST `ask` without auth dependency \u2014 src/memex/webui/app.py:928", "shortDescription": {"text": "FastAPI POST `ask` without auth dependency \u2014 src/memex/webui/app.py:928"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c1110c09c52b6371", "name": "FastAPI POST `resources_set_mode` without auth dependency \u2014 src/memex/webui/app.py:1056", "shortDescription": {"text": "FastAPI POST `resources_set_mode` without auth dependency \u2014 src/memex/webui/app.py:1056"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e7f573e128c0446e", "name": "FastAPI POST `document_summarize` without auth dependency \u2014 src/memex/webui/app.py:1283", "shortDescription": {"text": "FastAPI POST `document_summarize` without auth dependency \u2014 src/memex/webui/app.py:1283"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-44f08a8a2eb6e6c5", "name": "FastAPI POST `ingest_upload` without auth dependency \u2014 src/memex/webui/app.py:1578", "shortDescription": {"text": "FastAPI POST `ingest_upload` without auth dependency \u2014 src/memex/webui/app.py:1578"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f711209c23bedf4a", "name": "FastAPI POST `chat_turn` without auth dependency \u2014 src/memex/webui/app.py:1813", "shortDescription": {"text": "FastAPI POST `chat_turn` without auth dependency \u2014 src/memex/webui/app.py:1813"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c90f3086fa9c6a36", "name": "FastAPI POST `chat_delete` without auth dependency \u2014 src/memex/webui/app.py:1887", "shortDescription": {"text": "FastAPI POST `chat_delete` without auth dependency \u2014 src/memex/webui/app.py:1887"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3615e533f386748e", "name": "FastAPI POST `expert_run` without auth dependency \u2014 src/memex/webui/app.py:1929", "shortDescription": {"text": "FastAPI POST `expert_run` without auth dependency \u2014 src/memex/webui/app.py:1929"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6fa7f309c0b360ba", "name": "FastAPI POST `bridge_run` without auth dependency \u2014 src/memex/webui/app.py:2038", "shortDescription": {"text": "FastAPI POST `bridge_run` without auth dependency \u2014 src/memex/webui/app.py:2038"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5b0b229366ef2416", "name": "FastAPI POST `document_review` without auth dependency \u2014 src/memex/webui/app.py:2267", "shortDescription": {"text": "FastAPI POST `document_review` without auth dependency \u2014 src/memex/webui/app.py:2267"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b70878c8d1c9a8f6", "name": "FastAPI POST `document_title_save` without auth dependency \u2014 src/memex/webui/app.py:2409", "shortDescription": {"text": "FastAPI POST `document_title_save` without auth dependency \u2014 src/memex/webui/app.py:2409"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `GET /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-69c6c332440275d0", "name": "Unused endpoint: POST /scope-sets", "shortDescription": {"text": "Unused endpoint: POST /scope-sets"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `POST /scope-sets` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-86debd04b745afdf", "name": "Unused endpoint: POST /scope-sets/suggest", "shortDescription": {"text": "Unused endpoint: POST /scope-sets/suggest"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `POST /scope-sets/suggest` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-35ba999ba38700f1", "name": "Unused endpoint: POST /scope-sets/apply", "shortDescription": {"text": "Unused endpoint: POST /scope-sets/apply"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `POST /scope-sets/apply` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8098846355330204", "name": "Unused endpoint: POST /scope-sets/delete", "shortDescription": {"text": "Unused endpoint: POST /scope-sets/delete"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `POST /scope-sets/delete` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c94787111ec408a", "name": "Unused endpoint: POST /scope-sets/clear", "shortDescription": {"text": "Unused endpoint: POST /scope-sets/clear"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `POST /scope-sets/clear` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8e1fadad2500f063", "name": "Unused endpoint: POST /ask", "shortDescription": {"text": "Unused endpoint: POST /ask"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `POST /ask` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-430ab9710d17e7ad", "name": "Unused endpoint: GET /ask/{cid}/status", "shortDescription": {"text": "Unused endpoint: GET /ask/{cid}/status"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `GET /ask/{cid}/status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fc9e8b19e05df198", "name": "Unused endpoint: GET /resources/vram", "shortDescription": {"text": "Unused endpoint: GET /resources/vram"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `GET /resources/vram` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f88bff6fd58393b9", "name": "Unused endpoint: GET /resources", "shortDescription": {"text": "Unused endpoint: GET /resources"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `GET /resources` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c77c3cc7dd5aa41b", "name": "Unused endpoint: POST /resources/mode", "shortDescription": {"text": "Unused endpoint: POST /resources/mode"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `POST /resources/mode` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ffc9ad08ed6cdd74", "name": "Unused endpoint: GET /documents", "shortDescription": {"text": "Unused endpoint: GET /documents"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `GET /documents` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c85c72b4fe37011f", "name": "Unused endpoint: GET /documents/{doc_id}", "shortDescription": {"text": "Unused endpoint: GET /documents/{doc_id}"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `GET /documents/{doc_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-27c43b471092e58f", "name": "Unused endpoint: GET /entity", "shortDescription": {"text": "Unused endpoint: GET /entity"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `GET /entity` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5da322f865e569fe", "name": "Unused endpoint: POST /documents/{doc_id}/summarize", "shortDescription": {"text": "Unused endpoint: POST /documents/{doc_id}/summarize"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `POST /documents/{doc_id}/summarize` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1590d1336a641a77", "name": "Unused endpoint: GET /documents/{doc_id}/summarize/status", "shortDescription": {"text": "Unused endpoint: GET /documents/{doc_id}/summarize/status"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `GET /documents/{doc_id}/summarize/status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1f40eecb3c68cc76", "name": "Unused endpoint: GET /ingest", "shortDescription": {"text": "Unused endpoint: GET /ingest"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `GET /ingest` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fbdfbc2bd54dfa4f", "name": "Unused endpoint: GET /ingest/banner", "shortDescription": {"text": "Unused endpoint: GET /ingest/banner"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `GET /ingest/banner` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-094ad466c1f3a789", "name": "Unused endpoint: GET /ingest/lock", "shortDescription": {"text": "Unused endpoint: GET /ingest/lock"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `GET /ingest/lock` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-65a667bcc38fb792", "name": "Unused endpoint: POST /ingest", "shortDescription": {"text": "Unused endpoint: POST /ingest"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `POST /ingest` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d26e2fcaf490ca4b", "name": "Unused endpoint: GET /ingest/{cid}/status", "shortDescription": {"text": "Unused endpoint: GET /ingest/{cid}/status"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `GET /ingest/{cid}/status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0d3a434fedb1fa40", "name": "Unused endpoint: GET /chat", "shortDescription": {"text": "Unused endpoint: GET /chat"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `GET /chat` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-952dd924bac94a2d", "name": "Unused endpoint: GET /chat/{conversation_id}", "shortDescription": {"text": "Unused endpoint: GET /chat/{conversation_id}"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `GET /chat/{conversation_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-468aca8ca35b67f6", "name": "Unused endpoint: POST /chat/{conversation_id}/turn", "shortDescription": {"text": "Unused endpoint: POST /chat/{conversation_id}/turn"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `POST /chat/{conversation_id}/turn` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6e8e8ec5939092a4", "name": "Unused endpoint: GET /chat/{conversation_id}/status", "shortDescription": {"text": "Unused endpoint: GET /chat/{conversation_id}/status"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `GET /chat/{conversation_id}/status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb0b81f91de2f4cf", "name": "Unused endpoint: POST /chat/{conversation_id}/delete", "shortDescription": {"text": "Unused endpoint: POST /chat/{conversation_id}/delete"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `POST /chat/{conversation_id}/delete` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-993506b771b50669", "name": "Unused endpoint: GET /expert", "shortDescription": {"text": "Unused endpoint: GET /expert"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `GET /expert` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3f8f5adaa371481d", "name": "Unused endpoint: POST /expert", "shortDescription": {"text": "Unused endpoint: POST /expert"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `POST /expert` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d4d2df2b2758fb62", "name": "Unused endpoint: GET /expert/status", "shortDescription": {"text": "Unused endpoint: GET /expert/status"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `GET /expert/status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e28917c670517ea9", "name": "Unused endpoint: GET /bridge", "shortDescription": {"text": "Unused endpoint: GET /bridge"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `GET /bridge` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f77d30f522153325", "name": "Unused endpoint: POST /bridge", "shortDescription": {"text": "Unused endpoint: POST /bridge"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `POST /bridge` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ad86f78a7c54f73e", "name": "Unused endpoint: GET /bridge/status", "shortDescription": {"text": "Unused endpoint: GET /bridge/status"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `GET /bridge/status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0defb951455af37d", "name": "Unused endpoint: GET /documents/{doc_id}/source", "shortDescription": {"text": "Unused endpoint: GET /documents/{doc_id}/source"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `GET /documents/{doc_id}/source` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6c06aac5319c046d", "name": "Unused endpoint: GET /documents/{doc_id}/source/page/{page}", "shortDescription": {"text": "Unused endpoint: GET /documents/{doc_id}/source/page/{page}"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `GET /documents/{doc_id}/source/page/{page}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4d726ae94decf68b", "name": "Unused endpoint: GET /documents/{doc_id}/edit", "shortDescription": {"text": "Unused endpoint: GET /documents/{doc_id}/edit"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `GET /documents/{doc_id}/edit` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ffb2d3be07aae287", "name": "Unused endpoint: GET /documents/{doc_id}/body", "shortDescription": {"text": "Unused endpoint: GET /documents/{doc_id}/body"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `GET /documents/{doc_id}/body` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-953c49d279c0ac54", "name": "Unused endpoint: POST /documents/{doc_id}/review", "shortDescription": {"text": "Unused endpoint: POST /documents/{doc_id}/review"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `POST /documents/{doc_id}/review` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d121620cf4936e47", "name": "Unused endpoint: GET /documents/{doc_id}/title", "shortDescription": {"text": "Unused endpoint: GET /documents/{doc_id}/title"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `GET /documents/{doc_id}/title` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-01f5f56e9729b238", "name": "Unused endpoint: GET /documents/{doc_id}/title/edit", "shortDescription": {"text": "Unused endpoint: GET /documents/{doc_id}/title/edit"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `GET /documents/{doc_id}/title/edit` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7dd2e5002451606b", "name": "Unused endpoint: POST /documents/{doc_id}/title", "shortDescription": {"text": "Unused endpoint: POST /documents/{doc_id}/title"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `POST /documents/{doc_id}/title` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c2aa3dd773aadeb3", "name": "Unused endpoint: GET /graph/{doc_id}", "shortDescription": {"text": "Unused endpoint: GET /graph/{doc_id}"}, "fullDescription": {"text": "`src/memex/webui/app.py` declares `GET /graph/{doc_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/23587"}, "properties": {"repository": "Zenetusken/memex", "repoUrl": "https://github.com/Zenetusken/memex", "branch": "main"}, "results": [{"ruleId": "scanner-2dacb237d464122a", "level": "note", "message": {"text": "Possibly dead Python function: rec_answer"}, "properties": {"repobilityId": "72f93a9314924e2d", "scanner": "scanner-primary", "fingerprint": "2dacb237d464122a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scope_guard_span_probe.py:192"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d6f8810442d6ab87", "level": "note", "message": {"text": "Possibly dead Python function: collate"}, "properties": {"repobilityId": "c888bba08ce6c6c5", "scanner": "scanner-primary", "fingerprint": "d6f8810442d6ab87", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/train_binding_checker.py:116"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b8a05122b414775d", "level": "note", "message": {"text": "Possibly dead Python function: cmd_init"}, "properties": {"repobilityId": "3f17b7245a36f920", "scanner": "scanner-primary", "fingerprint": "b8a05122b414775d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/extend_corpus.py:57"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6eef0656f8f82447", "level": "note", "message": {"text": "Possibly dead Python function: cmd_inspect"}, "properties": {"repobilityId": "482686881b25c151", "scanner": "scanner-primary", "fingerprint": "6eef0656f8f82447", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/extend_corpus.py:154"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b3fd90b3b5bd3316", "level": "note", "message": {"text": "Possibly dead Python function: cmd_resolve"}, "properties": {"repobilityId": "3412439ae13e1e8d", "scanner": "scanner-primary", "fingerprint": "b3fd90b3b5bd3316", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/extend_corpus.py:244"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ed74be83aff4b02f", "level": "note", "message": {"text": "Possibly dead Python function: cmd_ab"}, "properties": {"repobilityId": "a8c405545ac5a7a1", "scanner": "scanner-primary", "fingerprint": "ed74be83aff4b02f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/extend_corpus.py:344"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5c642eb79dd823de", "level": "note", "message": {"text": "Possibly dead Python function: cmd_search"}, "properties": {"repobilityId": "98367383941c67aa", "scanner": "scanner-primary", "fingerprint": "5c642eb79dd823de", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/chat_eval_author.py:63"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c124a0f6f5740c0e", "level": "note", "message": {"text": "Possibly dead Python function: cmd_recall"}, "properties": {"repobilityId": "c47673403ec2361b", "scanner": "scanner-primary", "fingerprint": "c124a0f6f5740c0e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/chat_eval_author.py:77"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-14d23a9382711429", "level": "note", "message": {"text": "Possibly dead Python function: cmd_gap"}, "properties": {"repobilityId": "9d3ec210b4051b0f", "scanner": "scanner-primary", "fingerprint": "14d23a9382711429", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/chat_eval_author.py:90"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-819c96ca0c980e44", "level": "note", "message": {"text": "Possibly dead Python function: cand_key"}, "properties": {"repobilityId": "8be91f6632ce8a80", "scanner": "scanner-primary", "fingerprint": "819c96ca0c980e44", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/mint_binding_data.py:730"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6900310aef083fb1", "level": "note", "message": {"text": "Possibly dead Python function: entities_for_doc"}, "properties": {"repobilityId": "add79068f38ee83a", "scanner": "scanner-primary", "fingerprint": "6900310aef083fb1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/entity_ner_ab_audit.py:517"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-393d73c86d5c4dc9", "level": "note", "message": {"text": "Possibly dead Python function: to_json"}, "properties": {"repobilityId": "15c96a95a5f38c8f", "scanner": "scanner-primary", "fingerprint": "393d73c86d5c4dc9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/binding_checker_vendor.py:44"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d054cf2227dc95d7", "level": "note", "message": {"text": "Possibly dead Python function: worker"}, "properties": {"repobilityId": "fbe2b50200068803", "scanner": "scanner-primary", "fingerprint": "d054cf2227dc95d7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ryugraph_consistency_probe.py:364"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-21bc085d99b2063d", "level": "note", "message": {"text": "Possibly dead Python function: bench_chunker"}, "properties": {"repobilityId": "6d4e42dadb5b3370", "scanner": "scanner-primary", "fingerprint": "21bc085d99b2063d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/benchmark.py:135"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-55dba49bd44a3848", "level": "note", "message": {"text": "Possibly dead Python function: bench_vault_write"}, "properties": {"repobilityId": "ae80cf8715aac7ea", "scanner": "scanner-primary", "fingerprint": "55dba49bd44a3848", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/benchmark.py:170"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d6cdf400fff138d5", "level": "note", "message": {"text": "Possibly dead Python function: bench_fts_query"}, "properties": {"repobilityId": "f5b0b99fdacd2405", "scanner": "scanner-primary", "fingerprint": "d6cdf400fff138d5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/benchmark.py:212"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0e7f6f782a7ffbf8", "level": "note", "message": {"text": "Possibly dead Python function: bench_agent_cycle"}, "properties": {"repobilityId": "16dd781f9d90a87c", "scanner": "scanner-primary", "fingerprint": "0e7f6f782a7ffbf8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/benchmark.py:261"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-54f68215ba9879e3", "level": "note", "message": {"text": "Possibly dead Python function: reset_breaker"}, "properties": {"repobilityId": "1662ff8362756c9f", "scanner": "scanner-primary", "fingerprint": "54f68215ba9879e3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/memex/models/registry.py:448"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-66915c9726380ad1", "level": "note", "message": {"text": "Possibly dead Python function: render_body_and_toc"}, "properties": {"repobilityId": "3a04199adb971a9c", "scanner": "scanner-primary", "fingerprint": "66915c9726380ad1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/memex/webui/rendering.py:366"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b5d9d98b46721cc5", "level": "note", "message": {"text": "Possibly dead Python function: wrapped"}, "properties": {"repobilityId": "faacdada21d43bd9", "scanner": "scanner-primary", "fingerprint": "b5d9d98b46721cc5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/memex/webui/ingest_driver.py:149"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4eb433b38477b9f7", "level": "note", "message": {"text": "Possibly dead Python function: route_after_assess"}, "properties": {"repobilityId": "ac4e020674c3b591", "scanner": "scanner-primary", "fingerprint": "4eb433b38477b9f7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/memex/agents/answering.py:2675"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dc1be9309552b711", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/memex/webui/static/htmx.min.js:1"}, "properties": {"repobilityId": "20277d6e4e06dcd8", "scanner": "scanner-primary", "fingerprint": "dc1be9309552b711", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0f5c3d5b314e8548", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/memex/webui/static/cytoscape.min.js:23"}, "properties": {"repobilityId": "ea22f78a55906ab4", "scanner": "scanner-primary", "fingerprint": "0f5c3d5b314e8548", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-1d96af4b3fae17a3", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in CLAUDE.md:37"}, "properties": {"repobilityId": "c9592072ddaa74b7", "scanner": "scanner-primary", "fingerprint": "1d96af4b3fae17a3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "CLAUDE.md"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-37868c77c7c77e4f", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in src/memex/CLAUDE.md:47"}, "properties": {"repobilityId": "cc6be35ddeee86c2", "scanner": "scanner-primary", "fingerprint": "37868c77c7c77e4f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/memex/CLAUDE.md"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-e16b25fde2fc73f4", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in src/memex/webui/static/htmx.min.js:1"}, "properties": {"repobilityId": "7f28e44a503f0d16", "scanner": "scanner-primary", "fingerprint": "e16b25fde2fc73f4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/memex/webui/static/htmx.min.js"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7a22dcce6371eefb", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/memex/webui/static/htmx.min.js:1"}, "properties": {"repobilityId": "1e0adb93e51b12a9", "scanner": "scanner-primary", "fingerprint": "7a22dcce6371eefb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/memex/webui/static/htmx.min.js"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cc1b9d9cd6a2c12e", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in src/memex/webui/static/htmx.min.js:1"}, "properties": {"repobilityId": "6494a405276f4fb1", "scanner": "scanner-primary", "fingerprint": "cc1b9d9cd6a2c12e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/memex/webui/static/htmx.min.js"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6265e3a2f487fa7e", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in src/memex/webui/static/htmx.min.js:1"}, "properties": {"repobilityId": "eb8f183c9d2e8612", "scanner": "scanner-primary", "fingerprint": "6265e3a2f487fa7e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/memex/webui/static/htmx.min.js"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1d401c3754e01084", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/memex/webui/static/graph.js:25"}, "properties": {"repobilityId": "2bf32f6a4f4053c6", "scanner": "scanner-primary", "fingerprint": "1d401c3754e01084", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/memex/webui/static/graph.js"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-6e737343dd91046d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4ba38015e96d9020", "scanner": "scanner-primary", "fingerprint": "6e737343dd91046d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/benchmark.yml"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-6e737343dd91046d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a8d5886811c0d3b2", "scanner": "scanner-primary", "fingerprint": "6e737343dd91046d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/benchmark.yml"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-0c93853196af8a9c", "level": "note", "message": {"text": "Very large file: tests/integration/test_webui.py (3927 lines)"}, "properties": {"repobilityId": "4241677feaec9d91", "scanner": "scanner-primary", "fingerprint": "0c93853196af8a9c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f8da6eb280043113", "level": "note", "message": {"text": "Very large file: tests/integration/test_answering_with_fakes.py (2438 lines)"}, "properties": {"repobilityId": "3c62421504757c76", "scanner": "scanner-primary", "fingerprint": "f8da6eb280043113", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9eb07d96b9b1d1e3", "level": "note", "message": {"text": "Very large file: scripts/scope_guard_span_probe.py (1163 lines)"}, "properties": {"repobilityId": "71289693999abff5", "scanner": "scanner-primary", "fingerprint": "9eb07d96b9b1d1e3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e11eb7440f62eb86", "level": "note", "message": {"text": "Very large file: src/memex/webui/app.py (2691 lines)"}, "properties": {"repobilityId": "ae439a3997917711", "scanner": "scanner-primary", "fingerprint": "e11eb7440f62eb86", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-75e8331040123fc3", "level": "note", "message": {"text": "Very large file: src/memex/cli/commands.py (1941 lines)"}, "properties": {"repobilityId": "8d85f4093099378c", "scanner": "scanner-primary", "fingerprint": "75e8331040123fc3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6d02ee53eedd63af", "level": "note", "message": {"text": "Very large file: src/memex/parse/chart_ocr_backend.py (1277 lines)"}, "properties": {"repobilityId": "bb6ac79fee89d8f8", "scanner": "scanner-primary", "fingerprint": "6d02ee53eedd63af", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ca7ba1fcc0032877", "level": "note", "message": {"text": "Very large file: src/memex/parse/pipeline.py (2671 lines)"}, "properties": {"repobilityId": "e81b2d5936711448", "scanner": "scanner-primary", "fingerprint": "ca7ba1fcc0032877", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-73a24033e4e8cd09", "level": "note", "message": {"text": "Very large file: src/memex/eval/runner.py (1211 lines)"}, "properties": {"repobilityId": "80897f7529778f1d", "scanner": "scanner-primary", "fingerprint": "73a24033e4e8cd09", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-130d15f5d8f2c05b", "level": "note", "message": {"text": "Very large file: src/memex/agents/answering.py (3068 lines)"}, "properties": {"repobilityId": "cae5a65982e51ff5", "scanner": "scanner-primary", "fingerprint": "130d15f5d8f2c05b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3174b5874c367692", "level": "note", "message": {"text": "Very large file: src/memex/agents/document_summarizer.py (1380 lines)"}, "properties": {"repobilityId": "ea77eaa39c837f22", "scanner": "scanner-primary", "fingerprint": "3174b5874c367692", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c5c02c2c5ec87330", "level": "note", "message": {"text": "Very large file: src/memex/index/graph_store.py (1111 lines)"}, "properties": {"repobilityId": "0a6391b4a949800e", "scanner": "scanner-primary", "fingerprint": "c5c02c2c5ec87330", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-52b99b40aa538b8b", "level": "note", "message": {"text": "Very large file: src/memex/core/config.py (965 lines)"}, "properties": {"repobilityId": "a8afcbcf0e81998e", "scanner": "scanner-primary", "fingerprint": "52b99b40aa538b8b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ec3d9dcae976cb87", "level": "note", "message": {"text": "Very large file: src/memex/core/text.py (1168 lines)"}, "properties": {"repobilityId": "ee0d89e7b0b98f47", "scanner": "scanner-primary", "fingerprint": "ec3d9dcae976cb87", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "792f402dd0bf78be", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "7f1c79e7c618f7d4", "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": "3ab1c7dfac729b05", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "a8325c1d90b2c497", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "7c5ca57c1372281e", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "4927325ec27b4d37", "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": "39207a77f9f8f33d", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-38f3ae7fc5a34aed", "level": "note", "message": {"text": "Legacy-named symbol `body_v1` in tests/integration/test_partial_reindex.py:326"}, "properties": {"repobilityId": "599ed01416c28bf5", "scanner": "scanner-primary", "fingerprint": "38f3ae7fc5a34aed", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5ac8c627afe0825d", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/integration/test_partial_reindex.py:590"}, "properties": {"repobilityId": "94904e7438b70608", "scanner": "scanner-primary", "fingerprint": "5ac8c627afe0825d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-75445eaa1aa830e1", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/integration/test_webui.py:1118"}, "properties": {"repobilityId": "a4df2fd34c52614b", "scanner": "scanner-primary", "fingerprint": "75445eaa1aa830e1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d7a1df16ccfebae1", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/integration/test_code_routing.py:60"}, "properties": {"repobilityId": "dd2b0dbdcf502cd1", "scanner": "scanner-primary", "fingerprint": "d7a1df16ccfebae1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ffb13784beee2dea", "level": "none", "message": {"text": "Commented-code block (8 lines) in tests/integration/test_answering_with_fakes.py:113"}, "properties": {"repobilityId": "3e4eb97e714270bb", "scanner": "scanner-primary", "fingerprint": "ffb13784beee2dea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-227f8eef105e2f98", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/integration/test_fts_store_concurrent.py:195"}, "properties": {"repobilityId": "c5e8f2a7834a81d7", "scanner": "scanner-primary", "fingerprint": "227f8eef105e2f98", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ddfe2a6b2dad5bd6", "level": "none", "message": {"text": "Commented-code block (8 lines) in tests/integration/test_chart_block_retrieval_isolation.py:159"}, "properties": {"repobilityId": "ba1291fd32bcad5b", "scanner": "scanner-primary", "fingerprint": "ddfe2a6b2dad5bd6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9f120659f766b228", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/integration/test_ingest_driver.py:190"}, "properties": {"repobilityId": "47c72e26b0d86ac0", "scanner": "scanner-primary", "fingerprint": "9f120659f766b228", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1892c5297516412e", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in tests/integration/test_table_sql_agent.py:757"}, "properties": {"repobilityId": "9c02967b869bb0d9", "scanner": "scanner-primary", "fingerprint": "1892c5297516412e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d9af9fce2c00505c", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in tests/integration/test_expert_eval.py:262"}, "properties": {"repobilityId": "d8e7efa560de5672", "scanner": "scanner-primary", "fingerprint": "d9af9fce2c00505c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7e2c04775237b5b5", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in tests/integration/test_enrich_and_graph.py:240"}, "properties": {"repobilityId": "78af001c89da7bdd", "scanner": "scanner-primary", "fingerprint": "7e2c04775237b5b5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-24b83afc99d9ba20", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in tests/integration/test_code_chunking.py:89"}, "properties": {"repobilityId": "57b7fc01a6863135", "scanner": "scanner-primary", "fingerprint": "24b83afc99d9ba20", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a39c627377d7cd88", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in tests/integration/test_mcp_server.py:89"}, "properties": {"repobilityId": "ef3a7bf6a53e2c1d", "scanner": "scanner-primary", "fingerprint": "a39c627377d7cd88", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-51667b036abbf164", "level": "note", "message": {"text": "Legacy-named symbol `test_resolve_returns_a_copy` in tests/unit/test_scope_sets.py:58"}, "properties": {"repobilityId": "2147897fda9fc29f", "scanner": "scanner-primary", "fingerprint": "51667b036abbf164", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8f1a7a526f8ab0e4", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/test_w12_hardening.py:27"}, "properties": {"repobilityId": "64078aa8f3e498f9", "scanner": "scanner-primary", "fingerprint": "8f1a7a526f8ab0e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-34547510425a5c73", "level": "note", "message": {"text": "Legacy-named symbol `test_kill_switch_pins_v2` in tests/unit/test_assess_relevance_prompt.py:52"}, "properties": {"repobilityId": "7e696a72824bbfb0", "scanner": "scanner-primary", "fingerprint": "34547510425a5c73", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-532a18bb939263c4", "level": "note", "message": {"text": "Legacy-named symbol `test_pin_kill_switch_reverts_to_v1` in tests/unit/test_extract_claims_prompt.py:55"}, "properties": {"repobilityId": "8de11cc21513679e", "scanner": "scanner-primary", "fingerprint": "532a18bb939263c4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1968fd3c0863b23b", "level": "note", "message": {"text": "Legacy-named symbol `test_kill_switch_pins_v1` in tests/unit/test_assess_sufficiency_prompt.py:84"}, "properties": {"repobilityId": "3a5798a4ccf460ec", "scanner": "scanner-primary", "fingerprint": "1968fd3c0863b23b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-090c932f142a3bba", "level": "note", "message": {"text": "Legacy-named symbol `test_loader_selects_v2` in tests/unit/test_enrich_prompts.py:34"}, "properties": {"repobilityId": "bcd3a620f08cd921", "scanner": "scanner-primary", "fingerprint": "090c932f142a3bba", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6cb8850f66678669", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in tests/unit/test_provenance_scope.py:305"}, "properties": {"repobilityId": "d6596008e8322aa6", "scanner": "scanner-primary", "fingerprint": "6cb8850f66678669", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2d324de4fb679633", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/test_docling_heading_levels.py:90"}, "properties": {"repobilityId": "3b93322244179e49", "scanner": "scanner-primary", "fingerprint": "2d324de4fb679633", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f627602dfadd6dc5", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/test_collapse_duplicates.py:82"}, "properties": {"repobilityId": "240786e9779e4f73", "scanner": "scanner-primary", "fingerprint": "f627602dfadd6dc5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-edeb5c9b825a73cd", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/test_chunker.py:154"}, "properties": {"repobilityId": "8f170dafc8fa25b7", "scanner": "scanner-primary", "fingerprint": "edeb5c9b825a73cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c378b784ea6a23f5", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/extend_corpus.py:317"}, "properties": {"repobilityId": "ee18ed0fa340aca0", "scanner": "scanner-primary", "fingerprint": "c378b784ea6a23f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-388c6ab2cda0a6a5", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/extend_corpus.py:381"}, "properties": {"repobilityId": "231fd46d2c3ffec7", "scanner": "scanner-primary", "fingerprint": "388c6ab2cda0a6a5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b379d725a6c6f8c9", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/entity_ner_ab_audit.py:135"}, "properties": {"repobilityId": "92d185471ba3a66a", "scanner": "scanner-primary", "fingerprint": "b379d725a6c6f8c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-73eedfe6e2386855", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/rebaseline.py:122"}, "properties": {"repobilityId": "8fe884fb4ec2df96", "scanner": "scanner-primary", "fingerprint": "73eedfe6e2386855", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1ab486618b043fc7", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/ryugraph_consistency_probe.py:321"}, "properties": {"repobilityId": "3b94ecae08fe308b", "scanner": "scanner-primary", "fingerprint": "1ab486618b043fc7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-740384ce15380192", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/workflows/codebase-audit.js:146"}, "properties": {"repobilityId": "14405a0c6689b395", "scanner": "scanner-primary", "fingerprint": "740384ce15380192", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d967459d7ef60c57", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 eval-corpus/modern-printed/tidewater-maintenance-log/generate.py:42"}, "properties": {"repobilityId": "c6d08851101a245c", "scanner": "scanner-primary", "fingerprint": "d967459d7ef60c57", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-02578e638a8c1000", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 eval-corpus/technical-docs/widget-cli-reference/generate.py:39"}, "properties": {"repobilityId": "17605efe71c4dc0f", "scanner": "scanner-primary", "fingerprint": "02578e638a8c1000", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c9f0484e3ea53b0d", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 eval-corpus/forms/quarterly-uptime-report/generate.py:39"}, "properties": {"repobilityId": "b01fe212e0844be2", "scanner": "scanner-primary", "fingerprint": "c9f0484e3ea53b0d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-275f22f00409b385", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/memex/vault/store.py:32"}, "properties": {"repobilityId": "5e917e2bda4a6f59", "scanner": "scanner-primary", "fingerprint": "275f22f00409b385", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9346b756d6f21850", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/memex/vault/_file_lock.py:110"}, "properties": {"repobilityId": "47affda86d4fcdcb", "scanner": "scanner-primary", "fingerprint": "9346b756d6f21850", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-74b668d3eeef679a", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/memex/models/client.py:26"}, "properties": {"repobilityId": "d936f47e809f36ee", "scanner": "scanner-primary", "fingerprint": "74b668d3eeef679a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-775457eb55234379", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/memex/models/registry.py:432"}, "properties": {"repobilityId": "9b44fa9cab13a92e", "scanner": "scanner-primary", "fingerprint": "775457eb55234379", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc90408dcacf7165", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/memex/webui/rendering.py:45"}, "properties": {"repobilityId": "7bbe14a3b3b1ac53", "scanner": "scanner-primary", "fingerprint": "bc90408dcacf7165", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bbeb9342b7e42e12", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/memex/webui/app.py:1"}, "properties": {"repobilityId": "a2f26db077a9ab65", "scanner": "scanner-primary", "fingerprint": "bbeb9342b7e42e12", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-858b9ff43a690596", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/memex/webui/progress.py:114"}, "properties": {"repobilityId": "97ecc7b86998b43a", "scanner": "scanner-primary", "fingerprint": "858b9ff43a690596", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-570cac3b2fe688bb", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/memex/webui/ingest_driver.py:53"}, "properties": {"repobilityId": "56669ee907d7ce83", "scanner": "scanner-primary", "fingerprint": "570cac3b2fe688bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d79ba8ae790befbe", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/memex/cli/commands.py:10"}, "properties": {"repobilityId": "3b0954f80056008f", "scanner": "scanner-primary", "fingerprint": "d79ba8ae790befbe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-215edfbe412d1b36", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/memex/cli/commands.py:1344"}, "properties": {"repobilityId": "bae72e96f4848c91", "scanner": "scanner-primary", "fingerprint": "215edfbe412d1b36", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f0fa7c12f209c053", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/memex/cli/bootstrap.py:27"}, "properties": {"repobilityId": "4cecf24017a9ef01", "scanner": "scanner-primary", "fingerprint": "f0fa7c12f209c053", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5ed57602aaabf05b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/memex/ingest/validation.py:133"}, "properties": {"repobilityId": "ebf8079a4dad7f10", "scanner": "scanner-primary", "fingerprint": "5ed57602aaabf05b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-13fcbe4a109864a8", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/memex/ingest/watcher.py:244"}, "properties": {"repobilityId": "b4ecca975d60ba6f", "scanner": "scanner-primary", "fingerprint": "13fcbe4a109864a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-43de6ba48a4f5e65", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/memex/ingest/pipeline.py:139"}, "properties": {"repobilityId": "00d89b1f2203abd3", "scanner": "scanner-primary", "fingerprint": "43de6ba48a4f5e65", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a814620fa685b81c", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/memex/parse/pdf_render.py:26"}, "properties": {"repobilityId": "01b2867c520e2052", "scanner": "scanner-primary", "fingerprint": "a814620fa685b81c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a8e57fee2423054a", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in src/memex/parse/docling_tables.py:4"}, "properties": {"repobilityId": "d22784112e77f7a1", "scanner": "scanner-primary", "fingerprint": "a8e57fee2423054a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-330ee398a9798889", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/memex/parse/docling_tables.py:1"}, "properties": {"repobilityId": "6d5355b702e2cf76", "scanner": "scanner-primary", "fingerprint": "330ee398a9798889", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8816a7d6eb2bd51b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/memex/parse/pymupdf_worker.py:47"}, "properties": {"repobilityId": "d8353e63ef466b97", "scanner": "scanner-primary", "fingerprint": "8816a7d6eb2bd51b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0622da4885265ed7", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/memex/parse/docling_worker.py:39"}, "properties": {"repobilityId": "3b1edc130f17158d", "scanner": "scanner-primary", "fingerprint": "0622da4885265ed7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-48c051a5dd6173aa", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/memex/parse/vlm_backend.py:59"}, "properties": {"repobilityId": "6d93cb1be772612c", "scanner": "scanner-primary", "fingerprint": "48c051a5dd6173aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-975cdf0d34b27d6d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/memex/parse/keyframe_ocr.py:41"}, "properties": {"repobilityId": "dfa5b5777e568702", "scanner": "scanner-primary", "fingerprint": "975cdf0d34b27d6d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b1b5f8a84cd3a5a4", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/memex/parse/image_convert.py:73"}, "properties": {"repobilityId": "278fdbc8084c811f", "scanner": "scanner-primary", "fingerprint": "b1b5f8a84cd3a5a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fbb370f2c46fa046", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/memex/parse/chart_ocr_backend.py:48"}, "properties": {"repobilityId": "5fb6d29b1564887a", "scanner": "scanner-primary", "fingerprint": "fbb370f2c46fa046", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5c7c4cb9c27aa92d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/memex/parse/office_convert.py:40"}, "properties": {"repobilityId": "68dd70cf39774209", "scanner": "scanner-primary", "fingerprint": "5c7c4cb9c27aa92d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c1b6cf054e230f0", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in src/memex/parse/asr_backend.py:250"}, "properties": {"repobilityId": "1d8034f2174e0dfc", "scanner": "scanner-primary", "fingerprint": "6c1b6cf054e230f0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bb02e2985b6e0a42", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/memex/parse/docling_backend.py:181"}, "properties": {"repobilityId": "87c9540d50f536a8", "scanner": "scanner-primary", "fingerprint": "bb02e2985b6e0a42", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a4c4bafdbf706d85", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in src/memex/parse/pipeline.py:1051"}, "properties": {"repobilityId": "3d7edfc7c32653bb", "scanner": "scanner-primary", "fingerprint": "a4c4bafdbf706d85", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-620989d7904fb6fd", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/memex/parse/pipeline.py:1"}, "properties": {"repobilityId": "913e05edabba3840", "scanner": "scanner-primary", "fingerprint": "620989d7904fb6fd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e191271484ccf4d8", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/memex/observability/tracing.py:1"}, "properties": {"repobilityId": "673aaafc227320eb", "scanner": "scanner-primary", "fingerprint": "e191271484ccf4d8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ca6ca11ddb9087b1", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in src/memex/retrieve/rerank.py:163"}, "properties": {"repobilityId": "f6a6aa10161eb41e", "scanner": "scanner-primary", "fingerprint": "ca6ca11ddb9087b1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f2df9165503bac66", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/memex/retrieve/entity.py:74"}, "properties": {"repobilityId": "5cb476376c5db059", "scanner": "scanner-primary", "fingerprint": "f2df9165503bac66", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5b59d49a4989055d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/memex/retrieve/hybrid.py:37"}, "properties": {"repobilityId": "c0fe7b03a78f3cc9", "scanner": "scanner-primary", "fingerprint": "5b59d49a4989055d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bbeb8fd1739153b3", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in src/memex/retrieve/fusion.py:38"}, "properties": {"repobilityId": "a1d3265fc2a25b99", "scanner": "scanner-primary", "fingerprint": "bbeb8fd1739153b3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6a5778eca29f0d5b", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/memex/daemon/supervisor.py:257"}, "properties": {"repobilityId": "4233d7ab561651ae", "scanner": "scanner-primary", "fingerprint": "6a5778eca29f0d5b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5a009108e6a7b48f", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/memex/eval/scoring.py:134"}, "properties": {"repobilityId": "0a7b6bd8fff0beb6", "scanner": "scanner-primary", "fingerprint": "5a009108e6a7b48f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-80bbd3bf6567f01f", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/memex/eval/runner.py:54"}, "properties": {"repobilityId": "b22aa1fd30e75511", "scanner": "scanner-primary", "fingerprint": "80bbd3bf6567f01f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d0430b5967403a16", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in src/memex/agents/answering.py:1454"}, "properties": {"repobilityId": "5e0e070557354760", "scanner": "scanner-primary", "fingerprint": "d0430b5967403a16", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e4b40dd9c6a33c31", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/memex/agents/answering.py:1"}, "properties": {"repobilityId": "ccdc84362ee9c431", "scanner": "scanner-primary", "fingerprint": "e4b40dd9c6a33c31", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b3cdaf6d51929f03", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/memex/agents/form_fields.py:50"}, "properties": {"repobilityId": "3727ce1c5ca368fa", "scanner": "scanner-primary", "fingerprint": "b3cdaf6d51929f03", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a544e5ee32d3b4ca", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/memex/agents/bridge.py:96"}, "properties": {"repobilityId": "2580892f8510b79c", "scanner": "scanner-primary", "fingerprint": "a544e5ee32d3b4ca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6260274742bed55b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/memex/agents/document_summarizer.py:63"}, "properties": {"repobilityId": "7309b21e1f653033", "scanner": "scanner-primary", "fingerprint": "6260274742bed55b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a09110ac31494e1e", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/memex/agents/artifact_scope.py:44"}, "properties": {"repobilityId": "074721002df60ca5", "scanner": "scanner-primary", "fingerprint": "a09110ac31494e1e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b26bf0200b8abdf", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/memex/agents/table_sql.py:175"}, "properties": {"repobilityId": "eced7e8b9fb85c90", "scanner": "scanner-primary", "fingerprint": "8b26bf0200b8abdf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3482179c7997934a", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/memex/index/embed_prompts.py:32"}, "properties": {"repobilityId": "24c873b4c025e971", "scanner": "scanner-primary", "fingerprint": "3482179c7997934a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-414a1fd4f942dda1", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/memex/index/graph_store.py:41"}, "properties": {"repobilityId": "90f1082f1222672c", "scanner": "scanner-primary", "fingerprint": "414a1fd4f942dda1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9c37056a2668cc14", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/memex/index/chunker.py:32"}, "properties": {"repobilityId": "337077a84e2b2f1c", "scanner": "scanner-primary", "fingerprint": "9c37056a2668cc14", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f1cea3a128766e2", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/memex/index/vector_store.py:130"}, "properties": {"repobilityId": "313e002c7d84ed21", "scanner": "scanner-primary", "fingerprint": "2f1cea3a128766e2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6655a96208e4ac36", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/memex/index/table_store.py:87"}, "properties": {"repobilityId": "b6d95f9b588965a7", "scanner": "scanner-primary", "fingerprint": "6655a96208e4ac36", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-14f45b2fd54b2ce0", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/memex/index/initialism.py:23"}, "properties": {"repobilityId": "d4b312f520acccd8", "scanner": "scanner-primary", "fingerprint": "14f45b2fd54b2ce0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-92f6fc7048447087", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in src/memex/index/pipeline.py:308"}, "properties": {"repobilityId": "d9ad2c8656b51b93", "scanner": "scanner-primary", "fingerprint": "92f6fc7048447087", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d7b2c094433c5e4d", "level": "none", "message": {"text": "Commented-code block (12 lines) in src/memex/index/pipeline.py:129"}, "properties": {"repobilityId": "a009571be31d31b6", "scanner": "scanner-primary", "fingerprint": "d7b2c094433c5e4d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3aed772451afaa59", "level": "none", "message": {"text": "Commented-code block (12 lines) in src/memex/index/fts_store.py:93"}, "properties": {"repobilityId": "2249d592df1254ba", "scanner": "scanner-primary", "fingerprint": "3aed772451afaa59", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f809f3b584f6a762", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/memex/core/manifest.py:166"}, "properties": {"repobilityId": "482419c67485cefa", "scanner": "scanner-primary", "fingerprint": "f809f3b584f6a762", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d48f6c2c882a8f5", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/memex/core/types.py:15"}, "properties": {"repobilityId": "47c686353319baae", "scanner": "scanner-primary", "fingerprint": "8d48f6c2c882a8f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5527ed1fb9dd3b8a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/memex/core/table_linearize.py:65"}, "properties": {"repobilityId": "42e9fc5d38c7c42e", "scanner": "scanner-primary", "fingerprint": "5527ed1fb9dd3b8a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3eeb34ec5fa21b60", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/memex/core/config.py:115"}, "properties": {"repobilityId": "113571fa2455cd69", "scanner": "scanner-primary", "fingerprint": "3eeb34ec5fa21b60", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac3b87b8dea99658", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/memex/core/wikilinks.py:37"}, "properties": {"repobilityId": "a1a44110b513755c", "scanner": "scanner-primary", "fingerprint": "ac3b87b8dea99658", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-855550f55480050a", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/memex/core/resources.py:33"}, "properties": {"repobilityId": "e2f2ff274516961f", "scanner": "scanner-primary", "fingerprint": "855550f55480050a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8986077784851635", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/memex/core/text.py:36"}, "properties": {"repobilityId": "70c9ab4a1f2fecf1", "scanner": "scanner-primary", "fingerprint": "8986077784851635", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c51f5ff232e49279", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/memex/core/scope_sets.py:44"}, "properties": {"repobilityId": "3ada05c527636947", "scanner": "scanner-primary", "fingerprint": "c51f5ff232e49279", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6bf1aeacde9ad632", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in src/memex/enrich/entities.py:126"}, "properties": {"repobilityId": "1ff57ecc13575163", "scanner": "scanner-primary", "fingerprint": "6bf1aeacde9ad632", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e83b5e709f073fc7", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/memex/enrich/entities.py:32"}, "properties": {"repobilityId": "af5c007747ffcc5d", "scanner": "scanner-primary", "fingerprint": "e83b5e709f073fc7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-beee626a09e8a64c", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in src/memex/enrich/pipeline.py:239"}, "properties": {"repobilityId": "be158ca233ec4f11", "scanner": "scanner-primary", "fingerprint": "beee626a09e8a64c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-630736f241c950ae", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/memex/enrich/pipeline.py:79"}, "properties": {"repobilityId": "f9884f9c42108b94", "scanner": "scanner-primary", "fingerprint": "630736f241c950ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "745ba52cdf05cde4", "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": "b3a02f37c6e8bbba", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "0c8841a4ac50cce2", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "92a2a5f452168758", "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": "b00e6a500b4c090f", "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": "35da2d75c6dd9c66", "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": "df3b2feee76f2831", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "943d8437c22bb80b", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "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": "ce24f783177af2fe", "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": "cea40fb2f616e0c5", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-6c2e0b75737168aa", "level": "error", "message": {"text": "FastAPI POST `scope_set_save` without auth dependency \u2014 src/memex/webui/app.py:753"}, "properties": {"repobilityId": "9f43e3765658efc5", "scanner": "scanner-primary", "fingerprint": "6c2e0b75737168aa", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/memex/webui/app.py"}, "region": {"startLine": 753}}}]}, {"ruleId": "scanner-1b682a010718195f", "level": "error", "message": {"text": "FastAPI POST `scope_set_suggest` without auth dependency \u2014 src/memex/webui/app.py:777"}, "properties": {"repobilityId": "e1f337a49d3d0729", "scanner": "scanner-primary", "fingerprint": "1b682a010718195f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/memex/webui/app.py"}, "region": {"startLine": 777}}}]}, {"ruleId": "scanner-3b454901cdf4a190", "level": "error", "message": {"text": "FastAPI POST `scope_set_apply` without auth dependency \u2014 src/memex/webui/app.py:809"}, "properties": {"repobilityId": "07e9daaa0a294e69", "scanner": "scanner-primary", "fingerprint": "3b454901cdf4a190", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/memex/webui/app.py"}, "region": {"startLine": 809}}}]}, {"ruleId": "scanner-3d85e5b7fbe0471c", "level": "error", "message": {"text": "FastAPI POST `scope_set_remove` without auth dependency \u2014 src/memex/webui/app.py:837"}, "properties": {"repobilityId": "1a1a19f71cd87f63", "scanner": "scanner-primary", "fingerprint": "3d85e5b7fbe0471c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/memex/webui/app.py"}, "region": {"startLine": 837}}}]}, {"ruleId": "scanner-6a78f951f703f8ea", "level": "error", "message": {"text": "FastAPI POST `scope_set_clear` without auth dependency \u2014 src/memex/webui/app.py:857"}, "properties": {"repobilityId": "eef05218d97ec6e8", "scanner": "scanner-primary", "fingerprint": "6a78f951f703f8ea", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/memex/webui/app.py"}, "region": {"startLine": 857}}}]}, {"ruleId": "scanner-e45ff780196b1fbe", "level": "error", "message": {"text": "FastAPI POST `ask` without auth dependency \u2014 src/memex/webui/app.py:928"}, "properties": {"repobilityId": "4703211dd806daf0", "scanner": "scanner-primary", "fingerprint": "e45ff780196b1fbe", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/memex/webui/app.py"}, "region": {"startLine": 928}}}]}, {"ruleId": "scanner-c1110c09c52b6371", "level": "error", "message": {"text": "FastAPI POST `resources_set_mode` without auth dependency \u2014 src/memex/webui/app.py:1056"}, "properties": {"repobilityId": "5c55c9bffbd3f801", "scanner": "scanner-primary", "fingerprint": "c1110c09c52b6371", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/memex/webui/app.py"}, "region": {"startLine": 1056}}}]}, {"ruleId": "scanner-e7f573e128c0446e", "level": "error", "message": {"text": "FastAPI POST `document_summarize` without auth dependency \u2014 src/memex/webui/app.py:1283"}, "properties": {"repobilityId": "527e824171221dfd", "scanner": "scanner-primary", "fingerprint": "e7f573e128c0446e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/memex/webui/app.py"}, "region": {"startLine": 1283}}}]}, {"ruleId": "scanner-44f08a8a2eb6e6c5", "level": "error", "message": {"text": "FastAPI POST `ingest_upload` without auth dependency \u2014 src/memex/webui/app.py:1578"}, "properties": {"repobilityId": "a5df963a9fc7847f", "scanner": "scanner-primary", "fingerprint": "44f08a8a2eb6e6c5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/memex/webui/app.py"}, "region": {"startLine": 1578}}}]}, {"ruleId": "scanner-f711209c23bedf4a", "level": "error", "message": {"text": "FastAPI POST `chat_turn` without auth dependency \u2014 src/memex/webui/app.py:1813"}, "properties": {"repobilityId": "2a71eb9128835322", "scanner": "scanner-primary", "fingerprint": "f711209c23bedf4a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/memex/webui/app.py"}, "region": {"startLine": 1813}}}]}, {"ruleId": "scanner-c90f3086fa9c6a36", "level": "error", "message": {"text": "FastAPI POST `chat_delete` without auth dependency \u2014 src/memex/webui/app.py:1887"}, "properties": {"repobilityId": "86e48a7bfc5cfb00", "scanner": "scanner-primary", "fingerprint": "c90f3086fa9c6a36", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/memex/webui/app.py"}, "region": {"startLine": 1887}}}]}, {"ruleId": "scanner-3615e533f386748e", "level": "error", "message": {"text": "FastAPI POST `expert_run` without auth dependency \u2014 src/memex/webui/app.py:1929"}, "properties": {"repobilityId": "295e6ad7157d1872", "scanner": "scanner-primary", "fingerprint": "3615e533f386748e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/memex/webui/app.py"}, "region": {"startLine": 1929}}}]}, {"ruleId": "scanner-6fa7f309c0b360ba", "level": "error", "message": {"text": "FastAPI POST `bridge_run` without auth dependency \u2014 src/memex/webui/app.py:2038"}, "properties": {"repobilityId": "7e4b9f789dbfd326", "scanner": "scanner-primary", "fingerprint": "6fa7f309c0b360ba", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/memex/webui/app.py"}, "region": {"startLine": 2038}}}]}, {"ruleId": "scanner-5b0b229366ef2416", "level": "error", "message": {"text": "FastAPI POST `document_review` without auth dependency \u2014 src/memex/webui/app.py:2267"}, "properties": {"repobilityId": "b8b4baef92327640", "scanner": "scanner-primary", "fingerprint": "5b0b229366ef2416", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/memex/webui/app.py"}, "region": {"startLine": 2267}}}]}, {"ruleId": "scanner-b70878c8d1c9a8f6", "level": "error", "message": {"text": "FastAPI POST `document_title_save` without auth dependency \u2014 src/memex/webui/app.py:2409"}, "properties": {"repobilityId": "6ed1750d80124951", "scanner": "scanner-primary", "fingerprint": "b70878c8d1c9a8f6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/memex/webui/app.py"}, "region": {"startLine": 2409}}}]}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "e7b1f3fb89d12c05", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-69c6c332440275d0", "level": "note", "message": {"text": "Unused endpoint: POST /scope-sets"}, "properties": {"repobilityId": "1c6de7619d37d2d5", "scanner": "scanner-primary", "fingerprint": "69c6c332440275d0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-86debd04b745afdf", "level": "note", "message": {"text": "Unused endpoint: POST /scope-sets/suggest"}, "properties": {"repobilityId": "384e389f2312609a", "scanner": "scanner-primary", "fingerprint": "86debd04b745afdf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-35ba999ba38700f1", "level": "note", "message": {"text": "Unused endpoint: POST /scope-sets/apply"}, "properties": {"repobilityId": "d6ad3adfe7e220ee", "scanner": "scanner-primary", "fingerprint": "35ba999ba38700f1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8098846355330204", "level": "note", "message": {"text": "Unused endpoint: POST /scope-sets/delete"}, "properties": {"repobilityId": "90d14dc49d0cbf5a", "scanner": "scanner-primary", "fingerprint": "8098846355330204", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2c94787111ec408a", "level": "note", "message": {"text": "Unused endpoint: POST /scope-sets/clear"}, "properties": {"repobilityId": "8309c8daadfcfc69", "scanner": "scanner-primary", "fingerprint": "2c94787111ec408a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8e1fadad2500f063", "level": "note", "message": {"text": "Unused endpoint: POST /ask"}, "properties": {"repobilityId": "179b005d8b483403", "scanner": "scanner-primary", "fingerprint": "8e1fadad2500f063", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-430ab9710d17e7ad", "level": "note", "message": {"text": "Unused endpoint: GET /ask/{cid}/status"}, "properties": {"repobilityId": "4666887036bfe9a9", "scanner": "scanner-primary", "fingerprint": "430ab9710d17e7ad", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fc9e8b19e05df198", "level": "note", "message": {"text": "Unused endpoint: GET /resources/vram"}, "properties": {"repobilityId": "11c6b000d39cc209", "scanner": "scanner-primary", "fingerprint": "fc9e8b19e05df198", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f88bff6fd58393b9", "level": "note", "message": {"text": "Unused endpoint: GET /resources"}, "properties": {"repobilityId": "0b7731a9b8c3fcfa", "scanner": "scanner-primary", "fingerprint": "f88bff6fd58393b9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c77c3cc7dd5aa41b", "level": "note", "message": {"text": "Unused endpoint: POST /resources/mode"}, "properties": {"repobilityId": "077146abf5e431f0", "scanner": "scanner-primary", "fingerprint": "c77c3cc7dd5aa41b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ffc9ad08ed6cdd74", "level": "note", "message": {"text": "Unused endpoint: GET /documents"}, "properties": {"repobilityId": "2f50e847ad401c32", "scanner": "scanner-primary", "fingerprint": "ffc9ad08ed6cdd74", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c85c72b4fe37011f", "level": "note", "message": {"text": "Unused endpoint: GET /documents/{doc_id}"}, "properties": {"repobilityId": "81fad6d83642d16b", "scanner": "scanner-primary", "fingerprint": "c85c72b4fe37011f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-27c43b471092e58f", "level": "note", "message": {"text": "Unused endpoint: GET /entity"}, "properties": {"repobilityId": "38733070e8918503", "scanner": "scanner-primary", "fingerprint": "27c43b471092e58f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5da322f865e569fe", "level": "note", "message": {"text": "Unused endpoint: POST /documents/{doc_id}/summarize"}, "properties": {"repobilityId": "78fffca613bf8162", "scanner": "scanner-primary", "fingerprint": "5da322f865e569fe", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1590d1336a641a77", "level": "note", "message": {"text": "Unused endpoint: GET /documents/{doc_id}/summarize/status"}, "properties": {"repobilityId": "864e8e467f93499c", "scanner": "scanner-primary", "fingerprint": "1590d1336a641a77", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1f40eecb3c68cc76", "level": "note", "message": {"text": "Unused endpoint: GET /ingest"}, "properties": {"repobilityId": "a00bb9adf27d213a", "scanner": "scanner-primary", "fingerprint": "1f40eecb3c68cc76", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fbdfbc2bd54dfa4f", "level": "note", "message": {"text": "Unused endpoint: GET /ingest/banner"}, "properties": {"repobilityId": "aa7de7cbf7957a7d", "scanner": "scanner-primary", "fingerprint": "fbdfbc2bd54dfa4f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-094ad466c1f3a789", "level": "note", "message": {"text": "Unused endpoint: GET /ingest/lock"}, "properties": {"repobilityId": "40ee9feade0db1e5", "scanner": "scanner-primary", "fingerprint": "094ad466c1f3a789", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-65a667bcc38fb792", "level": "note", "message": {"text": "Unused endpoint: POST /ingest"}, "properties": {"repobilityId": "3a79f4fb12316047", "scanner": "scanner-primary", "fingerprint": "65a667bcc38fb792", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d26e2fcaf490ca4b", "level": "note", "message": {"text": "Unused endpoint: GET /ingest/{cid}/status"}, "properties": {"repobilityId": "eabedf5cbc7a6302", "scanner": "scanner-primary", "fingerprint": "d26e2fcaf490ca4b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0d3a434fedb1fa40", "level": "note", "message": {"text": "Unused endpoint: GET /chat"}, "properties": {"repobilityId": "a0ef3cfce2ffa5a4", "scanner": "scanner-primary", "fingerprint": "0d3a434fedb1fa40", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-952dd924bac94a2d", "level": "note", "message": {"text": "Unused endpoint: GET /chat/{conversation_id}"}, "properties": {"repobilityId": "a1ce4dbdc0caf159", "scanner": "scanner-primary", "fingerprint": "952dd924bac94a2d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-468aca8ca35b67f6", "level": "note", "message": {"text": "Unused endpoint: POST /chat/{conversation_id}/turn"}, "properties": {"repobilityId": "62a1f41a198d8311", "scanner": "scanner-primary", "fingerprint": "468aca8ca35b67f6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6e8e8ec5939092a4", "level": "note", "message": {"text": "Unused endpoint: GET /chat/{conversation_id}/status"}, "properties": {"repobilityId": "0b4c1d0a4ba68326", "scanner": "scanner-primary", "fingerprint": "6e8e8ec5939092a4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cb0b81f91de2f4cf", "level": "note", "message": {"text": "Unused endpoint: POST /chat/{conversation_id}/delete"}, "properties": {"repobilityId": "68430d35413c820b", "scanner": "scanner-primary", "fingerprint": "cb0b81f91de2f4cf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-993506b771b50669", "level": "note", "message": {"text": "Unused endpoint: GET /expert"}, "properties": {"repobilityId": "072965a7071fc5eb", "scanner": "scanner-primary", "fingerprint": "993506b771b50669", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3f8f5adaa371481d", "level": "note", "message": {"text": "Unused endpoint: POST /expert"}, "properties": {"repobilityId": "82bb7bcad37939a6", "scanner": "scanner-primary", "fingerprint": "3f8f5adaa371481d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d4d2df2b2758fb62", "level": "note", "message": {"text": "Unused endpoint: GET /expert/status"}, "properties": {"repobilityId": "fd1c82e1ac4e4359", "scanner": "scanner-primary", "fingerprint": "d4d2df2b2758fb62", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e28917c670517ea9", "level": "note", "message": {"text": "Unused endpoint: GET /bridge"}, "properties": {"repobilityId": "4ccf78898703a232", "scanner": "scanner-primary", "fingerprint": "e28917c670517ea9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f77d30f522153325", "level": "note", "message": {"text": "Unused endpoint: POST /bridge"}, "properties": {"repobilityId": "75c5d53d3e18d12d", "scanner": "scanner-primary", "fingerprint": "f77d30f522153325", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ad86f78a7c54f73e", "level": "note", "message": {"text": "Unused endpoint: GET /bridge/status"}, "properties": {"repobilityId": "3e702a01fa0a788c", "scanner": "scanner-primary", "fingerprint": "ad86f78a7c54f73e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0defb951455af37d", "level": "note", "message": {"text": "Unused endpoint: GET /documents/{doc_id}/source"}, "properties": {"repobilityId": "6a6f531c37d2d859", "scanner": "scanner-primary", "fingerprint": "0defb951455af37d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6c06aac5319c046d", "level": "note", "message": {"text": "Unused endpoint: GET /documents/{doc_id}/source/page/{page}"}, "properties": {"repobilityId": "72c588cc5b728cce", "scanner": "scanner-primary", "fingerprint": "6c06aac5319c046d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4d726ae94decf68b", "level": "note", "message": {"text": "Unused endpoint: GET /documents/{doc_id}/edit"}, "properties": {"repobilityId": "34335d08af2fa7b5", "scanner": "scanner-primary", "fingerprint": "4d726ae94decf68b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ffb2d3be07aae287", "level": "note", "message": {"text": "Unused endpoint: GET /documents/{doc_id}/body"}, "properties": {"repobilityId": "e2e17cea6719e13c", "scanner": "scanner-primary", "fingerprint": "ffb2d3be07aae287", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-953c49d279c0ac54", "level": "note", "message": {"text": "Unused endpoint: POST /documents/{doc_id}/review"}, "properties": {"repobilityId": "c59d3c5e59413050", "scanner": "scanner-primary", "fingerprint": "953c49d279c0ac54", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d121620cf4936e47", "level": "note", "message": {"text": "Unused endpoint: GET /documents/{doc_id}/title"}, "properties": {"repobilityId": "dd5702ec3a339ca3", "scanner": "scanner-primary", "fingerprint": "d121620cf4936e47", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-01f5f56e9729b238", "level": "note", "message": {"text": "Unused endpoint: GET /documents/{doc_id}/title/edit"}, "properties": {"repobilityId": "334cc21a3ccbe75a", "scanner": "scanner-primary", "fingerprint": "01f5f56e9729b238", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7dd2e5002451606b", "level": "note", "message": {"text": "Unused endpoint: POST /documents/{doc_id}/title"}, "properties": {"repobilityId": "2272b4702d6844bb", "scanner": "scanner-primary", "fingerprint": "7dd2e5002451606b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c2aa3dd773aadeb3", "level": "note", "message": {"text": "Unused endpoint: GET /graph/{doc_id}"}, "properties": {"repobilityId": "ad8994e3e0750405", "scanner": "scanner-primary", "fingerprint": "c2aa3dd773aadeb3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}