{"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-475d31635e5f0423", "name": "Possibly dead Python function: fetch_transcript", "shortDescription": {"text": "Possibly dead Python function: fetch_transcript"}, "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-e168ee08c37b4aa0", "name": "Possibly dead Python function: render_brief_landing_block", "shortDescription": {"text": "Possibly dead Python function: render_brief_landing_block"}, "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-218dee1d5ce3b9e7", "name": "Possibly dead Python function: scraper_thread", "shortDescription": {"text": "Possibly dead Python function: scraper_thread"}, "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-3a6ce242114b0a4e", "name": "Possibly dead Python function: wikicorrelate_warmer_thread", "shortDescription": {"text": "Possibly dead Python function: wikicorrelate_warmer_thread"}, "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-53e023a1fe3de6d4", "name": "Possibly dead Python function: brave_fetcher_thread", "shortDescription": {"text": "Possibly dead Python function: brave_fetcher_thread"}, "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-addaf627dc0c0036", "name": "Possibly dead Python function: classifier_thread", "shortDescription": {"text": "Possibly dead Python function: classifier_thread"}, "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-069d8546cd80614a", "name": "Possibly dead Python function: translator_thread", "shortDescription": {"text": "Possibly dead Python function: translator_thread"}, "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-4489366778551e7e", "name": "Possibly dead Python function: linker", "shortDescription": {"text": "Possibly dead Python function: linker"}, "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-68fe44ce48588cc3", "name": "Possibly dead Python function: brief_worker", "shortDescription": {"text": "Possibly dead Python function: brief_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-b79c4f2fc8695b7e", "name": "Possibly dead Python function: metrics_flusher", "shortDescription": {"text": "Possibly dead Python function: metrics_flusher"}, "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-b12641e52ab3736f", "name": "Possibly dead Python function: emit", "shortDescription": {"text": "Possibly dead Python function: emit"}, "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-426742490647864e", "name": "Possibly dead Python function: diagnostics", "shortDescription": {"text": "Possibly dead Python function: diagnostics"}, "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-10a23332364d816a", "name": "Possibly dead Python function: classify_for_query", "shortDescription": {"text": "Possibly dead Python function: classify_for_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-780d45cfcdfa4660", "name": "Possibly dead Python function: lookup_cached", "shortDescription": {"text": "Possibly dead Python function: lookup_cached"}, "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-75240c4f1fd5f98f", "name": "Possibly dead Python function: translate_fulltext", "shortDescription": {"text": "Possibly dead Python function: translate_fulltext"}, "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-760e7eab7c846a77", "name": "Possibly dead Python function: overview", "shortDescription": {"text": "Possibly dead Python function: overview"}, "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-b4e355813516cc08", "name": "Possibly dead Python function: frame_divergence", "shortDescription": {"text": "Possibly dead Python function: frame_divergence"}, "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-553400fb65986958", "name": "Possibly dead Python function: source_profile", "shortDescription": {"text": "Possibly dead Python function: source_profile"}, "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-242a6c73e3e8125e", "name": "Possibly dead Python function: entity_portrait", "shortDescription": {"text": "Possibly dead Python function: entity_portrait"}, "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-e73caa748e01864a", "name": "Possibly dead Python function: emit", "shortDescription": {"text": "Possibly dead Python function: emit"}, "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-1dcc83aa313c0a55", "name": "Possibly dead Python function: diagnostics", "shortDescription": {"text": "Possibly dead Python function: diagnostics"}, "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-3cc05aab45d7d2d3", "name": "Possibly dead Python function: trending_videos", "shortDescription": {"text": "Possibly dead Python function: trending_videos"}, "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-8dc85e284da1369c", "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-4d76c9a09d0044bc", "name": "Possibly dead Python function: cross_source_supertrends", "shortDescription": {"text": "Possibly dead Python function: cross_source_supertrends"}, "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-d87de6a94f30b60a", "name": "Possibly dead Python function: build_passport_json", "shortDescription": {"text": "Possibly dead Python function: build_passport_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-8879a868ceb6968b", "name": "Possibly dead Python function: search_sync", "shortDescription": {"text": "Possibly dead Python function: search_sync"}, "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-cf59d57080f4db7f", "name": "Stray `console.log` in TS/JS \u2014 static/echolot-tv.js:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 static/echolot-tv.js:51"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d63da3583b14afc0", "name": "Dockerfile runs as root: Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-de3c1f217d72a063", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6fa9d28162ac7ebb", "name": "Dockerfile runs as root: echolot-domain-intel/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: echolot-domain-intel/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c391b9e3d310c02d", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "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-913246df55b9e5d2", "name": "Insecure pattern 'direct_innerhtml_assignment' in weather/index.html:468", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in weather/index.html:468"}, "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-3d375cd265b17923", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/echolot-tv.js:64", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/echolot-tv.js:64"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-98d758c471c7f006", "name": "Very large file: echolot_landing_v2.py (3033 lines)", "shortDescription": {"text": "Very large file: echolot_landing_v2.py (3033 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-5c296c39c200912b", "name": "Very large file: echolot_dashboard.py (1406 lines)", "shortDescription": {"text": "Very large file: echolot_dashboard.py (1406 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-361867f78022c073", "name": "Very large file: server.py (4493 lines)", "shortDescription": {"text": "Very large file: server.py (4493 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-7829cb5efb873f1f", "name": "Very large file: wikicorrelate/services/correlate.py (1615 lines)", "shortDescription": {"text": "Very large file: wikicorrelate/services/correlate.py (1615 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-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "0 test file(s) for 104 source file(s) (ratio 0.00). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "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 161 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 23 placeholder/mock markers across 10 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, tests. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "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-fca250c2487528f8", "name": "Commented-code block (5 lines) in scraper.py:309", "shortDescription": {"text": "Commented-code block (5 lines) in scraper.py:309"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-30950a9694384fc3", "name": "Legacy-named symbol `echolot_landing_v2` in echolot_story_detail.py:17", "shortDescription": {"text": "Legacy-named symbol `echolot_landing_v2` in echolot_story_detail.py:17"}, "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-89a6c32247568777", "name": "Commented-code block (5 lines) in echolot_classifier.py:467", "shortDescription": {"text": "Commented-code block (5 lines) in echolot_classifier.py:467"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e62cebdcffb1b1f7", "name": "Legacy-named symbol `landing_v2` in echolot_landing_v2.py:56", "shortDescription": {"text": "Legacy-named symbol `landing_v2` in echolot_landing_v2.py:56"}, "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-acadd8c6253c2eff", "name": "Commented-code block (5 lines) in echolot_landing_v2.py:707", "shortDescription": {"text": "Commented-code block (5 lines) in echolot_landing_v2.py:707"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7253281bd2841523", "name": "Commented-code block (5 lines) in echolot_daily_brief.py:72", "shortDescription": {"text": "Commented-code block (5 lines) in echolot_daily_brief.py:72"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d796e3f5a06aee76", "name": "Commented-code block (5 lines) in echolot_passport.py:379", "shortDescription": {"text": "Commented-code block (5 lines) in echolot_passport.py:379"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-104200d3a0a10b3b", "name": "Legacy-named symbol `echolot_landing_v2` in echolot_source_page.py:17", "shortDescription": {"text": "Legacy-named symbol `echolot_landing_v2` in echolot_source_page.py:17"}, "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-34cca0e03eada5d2", "name": "Commented-code block (5 lines) in echolot_local_trending.py:43", "shortDescription": {"text": "Commented-code block (5 lines) in echolot_local_trending.py:43"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1ca3e067996ba09a", "name": "Legacy-named symbol `rest_v1` in echolot_wiki_daily_top.py:116", "shortDescription": {"text": "Legacy-named symbol `rest_v1` in echolot_wiki_daily_top.py:116"}, "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-e298bc7b56fb4926", "name": "Commented-code block (7 lines) in echolot_velocity.py:74", "shortDescription": {"text": "Commented-code block (7 lines) in echolot_velocity.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-75d66cbbdf779eb5", "name": "Commented-code block (8 lines) in echolot_seo.py:414", "shortDescription": {"text": "Commented-code block (8 lines) in echolot_seo.py:414"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7442c878d988955c", "name": "Commented-code block (5 lines) in echolot_health.py:107", "shortDescription": {"text": "Commented-code block (5 lines) in echolot_health.py:107"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3f630093e4198539", "name": "Legacy-named symbol `hero_sub_old` in echolot_dashboard.py:297", "shortDescription": {"text": "Legacy-named symbol `hero_sub_old` in echolot_dashboard.py:297"}, "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-92102bdb6c4d889d", "name": "Commented-code block (5 lines) in echolot_dashboard.py:1102", "shortDescription": {"text": "Commented-code block (5 lines) in echolot_dashboard.py:1102"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-66fae292e9bce168", "name": "Commented-code block (5 lines) in echolot_top_stories.py:43", "shortDescription": {"text": "Commented-code block (5 lines) in echolot_top_stories.py:43"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bb3a909719264904", "name": "Legacy-named symbol `echolot_landing_v2` in server.py:2231", "shortDescription": {"text": "Legacy-named symbol `echolot_landing_v2` in server.py:2231"}, "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-09ef89d276dada5d", "name": "Commented-code block (5 lines) in server.py:685", "shortDescription": {"text": "Commented-code block (5 lines) in server.py:685"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7a64057b9aca92df", "name": "Commented-code block (6 lines) in static/echolot-tv.js:187", "shortDescription": {"text": "Commented-code block (6 lines) in static/echolot-tv.js:187"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8bc4ecbf767aaa83", "name": "Commented-code block (6 lines) in echolot-domain-intel/example_echolot_integration.py:34", "shortDescription": {"text": "Commented-code block (6 lines) in echolot-domain-intel/example_echolot_integration.py:34"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3e5107662f782bb3", "name": "Commented-code block (5 lines) in echolot-domain-intel/domain_intel/calibration_data.py:135", "shortDescription": {"text": "Commented-code block (5 lines) in echolot-domain-intel/domain_intel/calibration_data.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-6a17c7d448f748da", "name": "Legacy-named symbol `rest_v1` in wikicorrelate/config.py:22", "shortDescription": {"text": "Legacy-named symbol `rest_v1` in wikicorrelate/config.py:22"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-374a1f2e5017498e", "name": "Legacy-named symbol `rest_v1` in wikicorrelate/services/http_client.py:105", "shortDescription": {"text": "Legacy-named symbol `rest_v1` in wikicorrelate/services/http_client.py:105"}, "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-7752735d17d0c9a5", "name": "Legacy-named symbol `rest_v1` in wikicorrelate/services/article_cache.py:95", "shortDescription": {"text": "Legacy-named symbol `rest_v1` in wikicorrelate/services/article_cache.py:95"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ad6ef29fecbd291f", "name": "48 env vars used in code but missing from .env.example", "shortDescription": {"text": "48 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ADMIN_KEY`, `BRAVE_FETCH_BATCH`, `BRAVE_FETCH_CONCURRENCY`, `BRAVE_FETCH_HTTPX_FALLBACK`, `BRAVE_FETCH_HTTPX_MIN_CHARS`, `BRAVE_FETCH_HTTPX_TIMEOUT_S`, `BRAVE_FETCH_INTERVAL_S`, `BRAVE_FETCH_ROBUST` + 40 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\necholot_entities.py:resolve_qid_from_name, echolot_entities.py:resolve\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:\necholot_app.py:wrapped, echolot_app.py:wrapped, echolot_app.py:wrapped\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:\necholot-domain-intel/domain_intel/ranking.py:download_daily, echolot-domain-intel/domain_intel/ranking.py:download_daily, echolot-domain-intel/domain_intel/ranking.py:download_daily, echolot-domain-intel/domain_intel/ranking.py:download_daily\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-caea9722e885ee31", "name": "FastAPI POST `batch_analyze` without auth dependency \u2014 echolot-domain-intel/api/server.py:164", "shortDescription": {"text": "FastAPI POST `batch_analyze` without auth dependency \u2014 echolot-domain-intel/api/server.py:164"}, "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-c4f6bd53cf4eb664", "name": "FastAPI POST `estimate_story_reach` without auth dependency \u2014 echolot-domain-intel/api/server.py:194", "shortDescription": {"text": "FastAPI POST `estimate_story_reach` without auth dependency \u2014 echolot-domain-intel/api/server.py:194"}, "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-27545ed1a6348cb1", "name": "FastAPI POST `refresh_rankings` without auth dependency \u2014 echolot-domain-intel/api/server.py:225", "shortDescription": {"text": "FastAPI POST `refresh_rankings` without auth dependency \u2014 echolot-domain-intel/api/server.py:225"}, "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-10efeed746f611b6", "name": "FastAPI DELETE `clear_cache` without auth dependency \u2014 echolot-domain-intel/api/server.py:234", "shortDescription": {"text": "FastAPI DELETE `clear_cache` without auth dependency \u2014 echolot-domain-intel/api/server.py:234"}, "fullDescription": {"text": "`@router.delete` 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-1c8382c5b3f95b9b", "name": "Unused endpoint: GET /domain/{domain}", "shortDescription": {"text": "Unused endpoint: GET /domain/{domain}"}, "fullDescription": {"text": "`echolot-domain-intel/api/server.py` declares `GET /domain/{domain}` 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-de48e61113fe8b8b", "name": "Unused endpoint: GET /domain/{domain}/rank", "shortDescription": {"text": "Unused endpoint: GET /domain/{domain}/rank"}, "fullDescription": {"text": "`echolot-domain-intel/api/server.py` declares `GET /domain/{domain}/rank` 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-dd53a1ea1418f6fc", "name": "Unused endpoint: POST /domain/batch", "shortDescription": {"text": "Unused endpoint: POST /domain/batch"}, "fullDescription": {"text": "`echolot-domain-intel/api/server.py` declares `POST /domain/batch` 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-c829912781887702", "name": "Unused endpoint: POST /story/reach", "shortDescription": {"text": "Unused endpoint: POST /story/reach"}, "fullDescription": {"text": "`echolot-domain-intel/api/server.py` declares `POST /story/reach` 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-69433a093e2d15fd", "name": "Unused endpoint: POST /admin/refresh", "shortDescription": {"text": "Unused endpoint: POST /admin/refresh"}, "fullDescription": {"text": "`echolot-domain-intel/api/server.py` declares `POST /admin/refresh` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ce2124100a245b24", "name": "Unused endpoint: DELETE /admin/cache", "shortDescription": {"text": "Unused endpoint: DELETE /admin/cache"}, "fullDescription": {"text": "`echolot-domain-intel/api/server.py` declares `DELETE /admin/cache` 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/20796"}, "properties": {"repository": "Tamas54/hirelemzoMCP", "repoUrl": "https://github.com/Tamas54/hirelemzoMCP", "branch": "main"}, "results": [{"ruleId": "scanner-475d31635e5f0423", "level": "note", "message": {"text": "Possibly dead Python function: fetch_transcript"}, "properties": {"repobilityId": "6e1577bf6e6ce9d2", "scanner": "scanner-primary", "fingerprint": "475d31635e5f0423", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "echolot_youtube_transcript.py:71"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e168ee08c37b4aa0", "level": "note", "message": {"text": "Possibly dead Python function: render_brief_landing_block"}, "properties": {"repobilityId": "6c579e5d53f39a2d", "scanner": "scanner-primary", "fingerprint": "e168ee08c37b4aa0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "echolot_brief_page.py:146"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-218dee1d5ce3b9e7", "level": "note", "message": {"text": "Possibly dead Python function: scraper_thread"}, "properties": {"repobilityId": "6e5d02566c571c28", "scanner": "scanner-primary", "fingerprint": "218dee1d5ce3b9e7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "start.py:21"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3a6ce242114b0a4e", "level": "note", "message": {"text": "Possibly dead Python function: wikicorrelate_warmer_thread"}, "properties": {"repobilityId": "53759001b6a2a587", "scanner": "scanner-primary", "fingerprint": "3a6ce242114b0a4e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "start.py:60"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-53e023a1fe3de6d4", "level": "note", "message": {"text": "Possibly dead Python function: brave_fetcher_thread"}, "properties": {"repobilityId": "d3bf9441d8db0210", "scanner": "scanner-primary", "fingerprint": "53e023a1fe3de6d4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "start.py:98"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-addaf627dc0c0036", "level": "note", "message": {"text": "Possibly dead Python function: classifier_thread"}, "properties": {"repobilityId": "afa875b52aeeb6fb", "scanner": "scanner-primary", "fingerprint": "addaf627dc0c0036", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "start.py:129"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-069d8546cd80614a", "level": "note", "message": {"text": "Possibly dead Python function: translator_thread"}, "properties": {"repobilityId": "8f8cc9be0e723bc7", "scanner": "scanner-primary", "fingerprint": "069d8546cd80614a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "start.py:140"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4489366778551e7e", "level": "note", "message": {"text": "Possibly dead Python function: linker"}, "properties": {"repobilityId": "ae32473721a1056a", "scanner": "scanner-primary", "fingerprint": "4489366778551e7e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "start.py:171"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-68fe44ce48588cc3", "level": "note", "message": {"text": "Possibly dead Python function: brief_worker"}, "properties": {"repobilityId": "38353745ecbcfebc", "scanner": "scanner-primary", "fingerprint": "68fe44ce48588cc3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "start.py:179"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b79c4f2fc8695b7e", "level": "note", "message": {"text": "Possibly dead Python function: metrics_flusher"}, "properties": {"repobilityId": "0cf2895cdaecc202", "scanner": "scanner-primary", "fingerprint": "b79c4f2fc8695b7e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "start.py:186"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b12641e52ab3736f", "level": "note", "message": {"text": "Possibly dead Python function: emit"}, "properties": {"repobilityId": "fecc700ec874b669", "scanner": "scanner-primary", "fingerprint": "b12641e52ab3736f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "echolot_classifier.py:44"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-426742490647864e", "level": "note", "message": {"text": "Possibly dead Python function: diagnostics"}, "properties": {"repobilityId": "f2602f476b996e0e", "scanner": "scanner-primary", "fingerprint": "426742490647864e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "echolot_classifier.py:358"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-10a23332364d816a", "level": "note", "message": {"text": "Possibly dead Python function: classify_for_query"}, "properties": {"repobilityId": "ddca9c39bc4bccad", "scanner": "scanner-primary", "fingerprint": "10a23332364d816a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "echolot_classifier.py:507"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-780d45cfcdfa4660", "level": "note", "message": {"text": "Possibly dead Python function: lookup_cached"}, "properties": {"repobilityId": "5834a44a7c5aba1f", "scanner": "scanner-primary", "fingerprint": "780d45cfcdfa4660", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "echolot_ondemand_translate.py:94"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-75240c4f1fd5f98f", "level": "note", "message": {"text": "Possibly dead Python function: translate_fulltext"}, "properties": {"repobilityId": "432eafe2e537fa7b", "scanner": "scanner-primary", "fingerprint": "75240c4f1fd5f98f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "echolot_ondemand_translate.py:224"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-760e7eab7c846a77", "level": "note", "message": {"text": "Possibly dead Python function: overview"}, "properties": {"repobilityId": "ef00a65ae0568f90", "scanner": "scanner-primary", "fingerprint": "760e7eab7c846a77", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "echolot_analytics.py:70"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b4e355813516cc08", "level": "note", "message": {"text": "Possibly dead Python function: frame_divergence"}, "properties": {"repobilityId": "4962ee323eea00fa", "scanner": "scanner-primary", "fingerprint": "b4e355813516cc08", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "echolot_analytics.py:156"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-553400fb65986958", "level": "note", "message": {"text": "Possibly dead Python function: source_profile"}, "properties": {"repobilityId": "86dcef0cc8869399", "scanner": "scanner-primary", "fingerprint": "553400fb65986958", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "echolot_analytics.py:204"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-242a6c73e3e8125e", "level": "note", "message": {"text": "Possibly dead Python function: entity_portrait"}, "properties": {"repobilityId": "9e6a326bf2c00bc4", "scanner": "scanner-primary", "fingerprint": "242a6c73e3e8125e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "echolot_analytics.py:258"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e73caa748e01864a", "level": "note", "message": {"text": "Possibly dead Python function: emit"}, "properties": {"repobilityId": "fecc700ec874b669", "scanner": "scanner-primary", "fingerprint": "e73caa748e01864a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "echolot_daily_brief.py:51"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1dcc83aa313c0a55", "level": "note", "message": {"text": "Possibly dead Python function: diagnostics"}, "properties": {"repobilityId": "f2602f476b996e0e", "scanner": "scanner-primary", "fingerprint": "1dcc83aa313c0a55", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "echolot_daily_brief.py:504"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3cc05aab45d7d2d3", "level": "note", "message": {"text": "Possibly dead Python function: trending_videos"}, "properties": {"repobilityId": "574c3e2e852ea8b5", "scanner": "scanner-primary", "fingerprint": "3cc05aab45d7d2d3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "echolot_youtube_trends.py:55"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8dc85e284da1369c", "level": "note", "message": {"text": "Possibly dead Python function: wrapped"}, "properties": {"repobilityId": "faacdada21d43bd9", "scanner": "scanner-primary", "fingerprint": "8dc85e284da1369c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "echolot_app.py:74"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4d76c9a09d0044bc", "level": "note", "message": {"text": "Possibly dead Python function: cross_source_supertrends"}, "properties": {"repobilityId": "0b4667568b4d65e7", "scanner": "scanner-primary", "fingerprint": "4d76c9a09d0044bc", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "echolot_gnews_trends.py:121"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d87de6a94f30b60a", "level": "note", "message": {"text": "Possibly dead Python function: build_passport_json"}, "properties": {"repobilityId": "923f855c10ce6298", "scanner": "scanner-primary", "fingerprint": "d87de6a94f30b60a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "echolot_passport.py:749"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8879a868ceb6968b", "level": "note", "message": {"text": "Possibly dead Python function: search_sync"}, "properties": {"repobilityId": "83bfa6d3404c5130", "scanner": "scanner-primary", "fingerprint": "8879a868ceb6968b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "echolot_brave_client.py:152"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cf59d57080f4db7f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 static/echolot-tv.js:51"}, "properties": {"repobilityId": "4e70ed1024c38015", "scanner": "scanner-primary", "fingerprint": "cf59d57080f4db7f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d63da3583b14afc0", "level": "warning", "message": {"text": "Dockerfile runs as root: Dockerfile"}, "properties": {"repobilityId": "a2ed1bd120e507db", "scanner": "scanner-primary", "fingerprint": "d63da3583b14afc0", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-de3c1f217d72a063", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "properties": {"repobilityId": "1de0ecd007803dbd", "scanner": "scanner-primary", "fingerprint": "de3c1f217d72a063", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6fa9d28162ac7ebb", "level": "warning", "message": {"text": "Dockerfile runs as root: echolot-domain-intel/Dockerfile"}, "properties": {"repobilityId": "dcc5ade0aeaf0987", "scanner": "scanner-primary", "fingerprint": "6fa9d28162ac7ebb", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-c391b9e3d310c02d", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "properties": {"repobilityId": "13ec8be95951725d", "scanner": "scanner-primary", "fingerprint": "c391b9e3d310c02d", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "echolot-domain-intel/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"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-913246df55b9e5d2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in weather/index.html:468"}, "properties": {"repobilityId": "bd3a61b23e07706f", "scanner": "scanner-primary", "fingerprint": "913246df55b9e5d2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "weather/index.html"}, "region": {"startLine": 468}}}]}, {"ruleId": "scanner-3d375cd265b17923", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/echolot-tv.js:64"}, "properties": {"repobilityId": "9536341fc04f8b2b", "scanner": "scanner-primary", "fingerprint": "3d375cd265b17923", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/echolot-tv.js"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-98d758c471c7f006", "level": "note", "message": {"text": "Very large file: echolot_landing_v2.py (3033 lines)"}, "properties": {"repobilityId": "1183be0d14a0e2eb", "scanner": "scanner-primary", "fingerprint": "98d758c471c7f006", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5c296c39c200912b", "level": "note", "message": {"text": "Very large file: echolot_dashboard.py (1406 lines)"}, "properties": {"repobilityId": "5c4843ca5e86a641", "scanner": "scanner-primary", "fingerprint": "5c296c39c200912b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-361867f78022c073", "level": "note", "message": {"text": "Very large file: server.py (4493 lines)"}, "properties": {"repobilityId": "61d8058d744c856e", "scanner": "scanner-primary", "fingerprint": "361867f78022c073", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7829cb5efb873f1f", "level": "note", "message": {"text": "Very large file: wikicorrelate/services/correlate.py (1615 lines)"}, "properties": {"repobilityId": "8105dccd3191080c", "scanner": "scanner-primary", "fingerprint": "7829cb5efb873f1f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "512b63cf2bbf2763", "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": "3ef0d280c5c5cc3b", "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": "81f6ae1a2e7001fb", "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": "ed5814f373180d82", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "16ef4c210d880a00", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "3dc5b25bb344e860", "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": "7d7b1c3d2b2d75d3", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-fca250c2487528f8", "level": "none", "message": {"text": "Commented-code block (5 lines) in scraper.py:309"}, "properties": {"repobilityId": "1b31fe8a8689b1d1", "scanner": "scanner-primary", "fingerprint": "fca250c2487528f8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30950a9694384fc3", "level": "note", "message": {"text": "Legacy-named symbol `echolot_landing_v2` in echolot_story_detail.py:17"}, "properties": {"repobilityId": "89602df72093487e", "scanner": "scanner-primary", "fingerprint": "30950a9694384fc3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-89a6c32247568777", "level": "none", "message": {"text": "Commented-code block (5 lines) in echolot_classifier.py:467"}, "properties": {"repobilityId": "f8b5a2c00dbb84df", "scanner": "scanner-primary", "fingerprint": "89a6c32247568777", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e62cebdcffb1b1f7", "level": "note", "message": {"text": "Legacy-named symbol `landing_v2` in echolot_landing_v2.py:56"}, "properties": {"repobilityId": "662a8bc6454c9cec", "scanner": "scanner-primary", "fingerprint": "e62cebdcffb1b1f7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-acadd8c6253c2eff", "level": "none", "message": {"text": "Commented-code block (5 lines) in echolot_landing_v2.py:707"}, "properties": {"repobilityId": "be4d59e4900498d0", "scanner": "scanner-primary", "fingerprint": "acadd8c6253c2eff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7253281bd2841523", "level": "none", "message": {"text": "Commented-code block (5 lines) in echolot_daily_brief.py:72"}, "properties": {"repobilityId": "dea41386f6272231", "scanner": "scanner-primary", "fingerprint": "7253281bd2841523", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d796e3f5a06aee76", "level": "none", "message": {"text": "Commented-code block (5 lines) in echolot_passport.py:379"}, "properties": {"repobilityId": "fa3b170a3087a4c5", "scanner": "scanner-primary", "fingerprint": "d796e3f5a06aee76", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-104200d3a0a10b3b", "level": "note", "message": {"text": "Legacy-named symbol `echolot_landing_v2` in echolot_source_page.py:17"}, "properties": {"repobilityId": "c444d322383f234f", "scanner": "scanner-primary", "fingerprint": "104200d3a0a10b3b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-34cca0e03eada5d2", "level": "none", "message": {"text": "Commented-code block (5 lines) in echolot_local_trending.py:43"}, "properties": {"repobilityId": "389e6318d36fa71e", "scanner": "scanner-primary", "fingerprint": "34cca0e03eada5d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ca3e067996ba09a", "level": "note", "message": {"text": "Legacy-named symbol `rest_v1` in echolot_wiki_daily_top.py:116"}, "properties": {"repobilityId": "6ab950111f3adaaa", "scanner": "scanner-primary", "fingerprint": "1ca3e067996ba09a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e298bc7b56fb4926", "level": "none", "message": {"text": "Commented-code block (7 lines) in echolot_velocity.py:74"}, "properties": {"repobilityId": "a4d1c43f00672ece", "scanner": "scanner-primary", "fingerprint": "e298bc7b56fb4926", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-75d66cbbdf779eb5", "level": "none", "message": {"text": "Commented-code block (8 lines) in echolot_seo.py:414"}, "properties": {"repobilityId": "033615df2a17bb62", "scanner": "scanner-primary", "fingerprint": "75d66cbbdf779eb5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7442c878d988955c", "level": "none", "message": {"text": "Commented-code block (5 lines) in echolot_health.py:107"}, "properties": {"repobilityId": "d49846fef254b842", "scanner": "scanner-primary", "fingerprint": "7442c878d988955c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f630093e4198539", "level": "note", "message": {"text": "Legacy-named symbol `hero_sub_old` in echolot_dashboard.py:297"}, "properties": {"repobilityId": "53fb60a92c28cee3", "scanner": "scanner-primary", "fingerprint": "3f630093e4198539", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-92102bdb6c4d889d", "level": "none", "message": {"text": "Commented-code block (5 lines) in echolot_dashboard.py:1102"}, "properties": {"repobilityId": "1ff53a2c2cc0854d", "scanner": "scanner-primary", "fingerprint": "92102bdb6c4d889d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-66fae292e9bce168", "level": "none", "message": {"text": "Commented-code block (5 lines) in echolot_top_stories.py:43"}, "properties": {"repobilityId": "be60520f3605eea1", "scanner": "scanner-primary", "fingerprint": "66fae292e9bce168", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bb3a909719264904", "level": "note", "message": {"text": "Legacy-named symbol `echolot_landing_v2` in server.py:2231"}, "properties": {"repobilityId": "3164c8d9aec03ad6", "scanner": "scanner-primary", "fingerprint": "bb3a909719264904", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-09ef89d276dada5d", "level": "none", "message": {"text": "Commented-code block (5 lines) in server.py:685"}, "properties": {"repobilityId": "3497c164bab3b1a6", "scanner": "scanner-primary", "fingerprint": "09ef89d276dada5d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7a64057b9aca92df", "level": "none", "message": {"text": "Commented-code block (6 lines) in static/echolot-tv.js:187"}, "properties": {"repobilityId": "7b220d3680e8d51a", "scanner": "scanner-primary", "fingerprint": "7a64057b9aca92df", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8bc4ecbf767aaa83", "level": "none", "message": {"text": "Commented-code block (6 lines) in echolot-domain-intel/example_echolot_integration.py:34"}, "properties": {"repobilityId": "d2d65da7d66feb6e", "scanner": "scanner-primary", "fingerprint": "8bc4ecbf767aaa83", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e5107662f782bb3", "level": "none", "message": {"text": "Commented-code block (5 lines) in echolot-domain-intel/domain_intel/calibration_data.py:135"}, "properties": {"repobilityId": "f0ed1dd68db94cbe", "scanner": "scanner-primary", "fingerprint": "3e5107662f782bb3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a17c7d448f748da", "level": "note", "message": {"text": "Legacy-named symbol `rest_v1` in wikicorrelate/config.py:22"}, "properties": {"repobilityId": "4ba14690e0e55ccf", "scanner": "scanner-primary", "fingerprint": "6a17c7d448f748da", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-374a1f2e5017498e", "level": "note", "message": {"text": "Legacy-named symbol `rest_v1` in wikicorrelate/services/http_client.py:105"}, "properties": {"repobilityId": "bfe6f32df645941a", "scanner": "scanner-primary", "fingerprint": "374a1f2e5017498e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7752735d17d0c9a5", "level": "note", "message": {"text": "Legacy-named symbol `rest_v1` in wikicorrelate/services/article_cache.py:95"}, "properties": {"repobilityId": "d38d62567428584a", "scanner": "scanner-primary", "fingerprint": "7752735d17d0c9a5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ad6ef29fecbd291f", "level": "note", "message": {"text": "48 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "774efb1dfe2a68ff", "scanner": "scanner-primary", "fingerprint": "ad6ef29fecbd291f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "9a88180bc43e3960", "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": "f1d3887a82718cfc", "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": "71d078af4aaf2009", "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": "99021494ef1ce93d", "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": "c8461c5a543e3acb", "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": "8f6d2906b1358fc7", "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": "c064bda08dc8101c", "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": "cd0e14c4ebd91526", "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": "ad595b07d44b1763", "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": "178373bc968da78d", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "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": "cc0752782b51f7a9", "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": "a5ddb32aaa217caf", "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": "313603a41221db93", "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": "f7ddb240366b8b80", "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": "d0abae714895c28c", "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": "a78d9239714e2edb", "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": "b94edc6b6bfeec9d", "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": "33e496ede07ae58f", "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": "f6c83e9714b0d5e8", "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": "e1fec97326e4653f", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-caea9722e885ee31", "level": "error", "message": {"text": "FastAPI POST `batch_analyze` without auth dependency \u2014 echolot-domain-intel/api/server.py:164"}, "properties": {"repobilityId": "99d9325790a2f99c", "scanner": "scanner-primary", "fingerprint": "caea9722e885ee31", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "echolot-domain-intel/api/server.py"}, "region": {"startLine": 164}}}]}, {"ruleId": "scanner-c4f6bd53cf4eb664", "level": "error", "message": {"text": "FastAPI POST `estimate_story_reach` without auth dependency \u2014 echolot-domain-intel/api/server.py:194"}, "properties": {"repobilityId": "eb0451f39769e509", "scanner": "scanner-primary", "fingerprint": "c4f6bd53cf4eb664", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "echolot-domain-intel/api/server.py"}, "region": {"startLine": 194}}}]}, {"ruleId": "scanner-27545ed1a6348cb1", "level": "error", "message": {"text": "FastAPI POST `refresh_rankings` without auth dependency \u2014 echolot-domain-intel/api/server.py:225"}, "properties": {"repobilityId": "d3b812e8d0704bbb", "scanner": "scanner-primary", "fingerprint": "27545ed1a6348cb1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "echolot-domain-intel/api/server.py"}, "region": {"startLine": 225}}}]}, {"ruleId": "scanner-10efeed746f611b6", "level": "error", "message": {"text": "FastAPI DELETE `clear_cache` without auth dependency \u2014 echolot-domain-intel/api/server.py:234"}, "properties": {"repobilityId": "122368b05d5a2043", "scanner": "scanner-primary", "fingerprint": "10efeed746f611b6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "echolot-domain-intel/api/server.py"}, "region": {"startLine": 234}}}]}, {"ruleId": "scanner-1c8382c5b3f95b9b", "level": "note", "message": {"text": "Unused endpoint: GET /domain/{domain}"}, "properties": {"repobilityId": "95a2a80614b82c59", "scanner": "scanner-primary", "fingerprint": "1c8382c5b3f95b9b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-de48e61113fe8b8b", "level": "note", "message": {"text": "Unused endpoint: GET /domain/{domain}/rank"}, "properties": {"repobilityId": "323bd97a40cbde36", "scanner": "scanner-primary", "fingerprint": "de48e61113fe8b8b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dd53a1ea1418f6fc", "level": "note", "message": {"text": "Unused endpoint: POST /domain/batch"}, "properties": {"repobilityId": "0770418255c39851", "scanner": "scanner-primary", "fingerprint": "dd53a1ea1418f6fc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c829912781887702", "level": "note", "message": {"text": "Unused endpoint: POST /story/reach"}, "properties": {"repobilityId": "b727ae6102d38fb3", "scanner": "scanner-primary", "fingerprint": "c829912781887702", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-69433a093e2d15fd", "level": "note", "message": {"text": "Unused endpoint: POST /admin/refresh"}, "properties": {"repobilityId": "f50ec5987864733e", "scanner": "scanner-primary", "fingerprint": "69433a093e2d15fd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ce2124100a245b24", "level": "note", "message": {"text": "Unused endpoint: DELETE /admin/cache"}, "properties": {"repobilityId": "6d53874138c7e4b4", "scanner": "scanner-primary", "fingerprint": "ce2124100a245b24", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}