{"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-c1d8a2243eb351fd", "name": "Stray `console.log` in TS/JS \u2014 apply-collection-config.js:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apply-collection-config.js:65"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-acd1172c7bf7ec5f", "name": "Stray `console.log` in TS/JS \u2014 analyze-shadow.js:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 analyze-shadow.js:49"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-228ca7261f577cd4", "name": "Stray `console.log` in TS/JS \u2014 setup.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 setup.js:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a1563e199ee00506", "name": "Stray `console.log` in TS/JS \u2014 web-server.js:1158", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 web-server.js:1158"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cae62e6debef4ae8", "name": "Stray `console.log` in TS/JS \u2014 logger.js:183", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 logger.js:183"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ee66565a12b27927", "name": "Stray `console.log` in TS/JS \u2014 index.js:2597", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 index.js:2597"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-506be2b95088f5d3", "name": "git log failed \u2014 history analysis incomplete", "shortDescription": {"text": "git log failed \u2014 history analysis incomplete"}, "fullDescription": {"text": "fatal: not a git repository (or any parent up to mount point /data)\nStopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "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-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cb639d9a10a47b23", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-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-c638d965f7e0a379", "name": "Very large file: index.js (3381 lines)", "shortDescription": {"text": "Very large file: index.js (3381 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 37 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-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 216 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-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: 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": "low", "confidence": 1.0}}, {"id": "scanner-4f03fb2021ce54da", "name": "Legacy-named symbol `meridian_collection_config_v1` in apply-collection-config.js:25", "shortDescription": {"text": "Legacy-named symbol `meridian_collection_config_v1` in apply-collection-config.js:25"}, "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-f0c555230a290170", "name": "Legacy-named symbol `collection_config_v1` in shadow-logger.js:15", "shortDescription": {"text": "Legacy-named symbol `collection_config_v1` in shadow-logger.js:15"}, "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-b6f99dd57a911263", "name": "Commented-code block (5 lines) in index.js:1101", "shortDescription": {"text": "Commented-code block (5 lines) in index.js:1101"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-022e6399d1ef2beb", "name": "12 env vars used in code but missing from .env.example", "shortDescription": {"text": "12 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `AGENT_MERIDIAN_API_URL`, `ENVCRYPT_KEY`, `ENVRYPT_KEY`, `HIVEMIND_API_KEY`, `JUPITER_API_KEY`, `JUPITER_REFERRAL_ACCOUNT`, `JUPITER_REFERRAL_FEE_BPS`, `LLM_API_KEY` + 4 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-acaa713b238d0be6", "name": "Unused endpoint: USE /index.html", "shortDescription": {"text": "Unused endpoint: USE /index.html"}, "fullDescription": {"text": "`web-server.js` declares `USE /index.html` 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-dea9e610a378dfeb", "name": "Unused endpoint: POST /api/auth", "shortDescription": {"text": "Unused endpoint: POST /api/auth"}, "fullDescription": {"text": "`web-server.js` declares `POST /api/auth` 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-dde3adb27bf7eebe", "name": "Unused endpoint: USE /api", "shortDescription": {"text": "Unused endpoint: USE /api"}, "fullDescription": {"text": "`web-server.js` declares `USE /api` 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-963710f42a2c8219", "name": "Unused endpoint: GET /api/status", "shortDescription": {"text": "Unused endpoint: GET /api/status"}, "fullDescription": {"text": "`web-server.js` declares `GET /api/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-11f4d6e588f23dfa", "name": "Unused endpoint: POST /api/pause", "shortDescription": {"text": "Unused endpoint: POST /api/pause"}, "fullDescription": {"text": "`web-server.js` declares `POST /api/pause` 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-69bd9257e4d3078b", "name": "Unused endpoint: GET /api/wallet", "shortDescription": {"text": "Unused endpoint: GET /api/wallet"}, "fullDescription": {"text": "`web-server.js` declares `GET /api/wallet` 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-6c0c14bf43e5f297", "name": "Unused endpoint: GET /api/positions", "shortDescription": {"text": "Unused endpoint: GET /api/positions"}, "fullDescription": {"text": "`web-server.js` declares `GET /api/positions` 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-3b37265900e79a8a", "name": "Unused endpoint: GET /api/stats", "shortDescription": {"text": "Unused endpoint: GET /api/stats"}, "fullDescription": {"text": "`web-server.js` declares `GET /api/stats` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1c98a21942c92af6", "name": "Unused endpoint: GET /api/experiment", "shortDescription": {"text": "Unused endpoint: GET /api/experiment"}, "fullDescription": {"text": "`web-server.js` declares `GET /api/experiment` 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-1c072de27f728ed2", "name": "Unused endpoint: GET /api/decisions", "shortDescription": {"text": "Unused endpoint: GET /api/decisions"}, "fullDescription": {"text": "`web-server.js` declares `GET /api/decisions` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8daf74658c9b9acb", "name": "Unused endpoint: GET /api/whale-evals", "shortDescription": {"text": "Unused endpoint: GET /api/whale-evals"}, "fullDescription": {"text": "`web-server.js` declares `GET /api/whale-evals` 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-1ffefb07914311a6", "name": "Unused endpoint: GET /api/lessons", "shortDescription": {"text": "Unused endpoint: GET /api/lessons"}, "fullDescription": {"text": "`web-server.js` declares `GET /api/lessons` 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-d529af86e07b9b1c", "name": "Unused endpoint: GET /api/analytics/:type", "shortDescription": {"text": "Unused endpoint: GET /api/analytics/:type"}, "fullDescription": {"text": "`web-server.js` declares `GET /api/analytics/:type` 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-7aa4b2518cbbbfa2", "name": "Unused endpoint: GET /api/config", "shortDescription": {"text": "Unused endpoint: GET /api/config"}, "fullDescription": {"text": "`web-server.js` declares `GET /api/config` 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-3b4e6de82d71ecad", "name": "Unused endpoint: PATCH /api/config", "shortDescription": {"text": "Unused endpoint: PATCH /api/config"}, "fullDescription": {"text": "`web-server.js` declares `PATCH /api/config` 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-9e746370a2eaa058", "name": "Unused endpoint: POST /api/close/:address", "shortDescription": {"text": "Unused endpoint: POST /api/close/:address"}, "fullDescription": {"text": "`web-server.js` declares `POST /api/close/:address` 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-60f76b530d0e2eaa", "name": "Unused endpoint: POST /api/claim/:address", "shortDescription": {"text": "Unused endpoint: POST /api/claim/:address"}, "fullDescription": {"text": "`web-server.js` declares `POST /api/claim/:address` 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-1441293e05dfe2dd", "name": "Unused endpoint: POST /api/closeall", "shortDescription": {"text": "Unused endpoint: POST /api/closeall"}, "fullDescription": {"text": "`web-server.js` declares `POST /api/closeall` 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-82830633904d6fe7", "name": "Unused endpoint: POST /api/trigger/:cycle", "shortDescription": {"text": "Unused endpoint: POST /api/trigger/:cycle"}, "fullDescription": {"text": "`web-server.js` declares `POST /api/trigger/:cycle` 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-8fc7c3b9f2c75416", "name": "Unused endpoint: POST /api/ask", "shortDescription": {"text": "Unused endpoint: POST /api/ask"}, "fullDescription": {"text": "`web-server.js` declares `POST /api/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-f8f3cd31ad248e68", "name": "Unused endpoint: GET /api/ev-analysis", "shortDescription": {"text": "Unused endpoint: GET /api/ev-analysis"}, "fullDescription": {"text": "`web-server.js` declares `GET /api/ev-analysis` 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-0b4d20674e35cf71", "name": "Unused endpoint: GET /api/analytics", "shortDescription": {"text": "Unused endpoint: GET /api/analytics"}, "fullDescription": {"text": "`web-server.js` declares `GET /api/analytics` 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-726a47c71f2f9c63", "name": "Unused endpoint: GET /api/capital", "shortDescription": {"text": "Unused endpoint: GET /api/capital"}, "fullDescription": {"text": "`web-server.js` declares `GET /api/capital` 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-143ccda46c233a15", "name": "Unused endpoint: POST /api/capital/initial", "shortDescription": {"text": "Unused endpoint: POST /api/capital/initial"}, "fullDescription": {"text": "`web-server.js` declares `POST /api/capital/initial` 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-8af6b47e23bd3116", "name": "Unused endpoint: POST /api/capital/transaction", "shortDescription": {"text": "Unused endpoint: POST /api/capital/transaction"}, "fullDescription": {"text": "`web-server.js` declares `POST /api/capital/transaction` 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-53b622016085d72a", "name": "Unused endpoint: DELETE /api/capital/transaction/:index", "shortDescription": {"text": "Unused endpoint: DELETE /api/capital/transaction/:index"}, "fullDescription": {"text": "`web-server.js` declares `DELETE /api/capital/transaction/:index` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f3bf72f059406b13", "name": "Unused endpoint: GET /api/logs", "shortDescription": {"text": "Unused endpoint: GET /api/logs"}, "fullDescription": {"text": "`web-server.js` declares `GET /api/logs` 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-92474b44874a0a9f", "name": "Unused endpoint: POST /api/config/set", "shortDescription": {"text": "Unused endpoint: POST /api/config/set"}, "fullDescription": {"text": "`web-server.js` declares `POST /api/config/set` 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-9a2e06111307460e", "name": "Unused endpoint: POST /api/hive/pull", "shortDescription": {"text": "Unused endpoint: POST /api/hive/pull"}, "fullDescription": {"text": "`web-server.js` declares `POST /api/hive/pull` 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-69cfe40fe8f67d71", "name": "Unused endpoint: GET /api/whale", "shortDescription": {"text": "Unused endpoint: GET /api/whale"}, "fullDescription": {"text": "`web-server.js` declares `GET /api/whale` 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-eb31d2fe59482909", "name": "Unused endpoint: GET /api/regime", "shortDescription": {"text": "Unused endpoint: GET /api/regime"}, "fullDescription": {"text": "`web-server.js` declares `GET /api/regime` 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-97f49e1471c9d6be", "name": "Unused endpoint: GET /api/hive", "shortDescription": {"text": "Unused endpoint: GET /api/hive"}, "fullDescription": {"text": "`web-server.js` declares `GET /api/hive` 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-4cb94304ea95abd0", "name": "Unused endpoint: GET /api/candidates", "shortDescription": {"text": "Unused endpoint: GET /api/candidates"}, "fullDescription": {"text": "`web-server.js` declares `GET /api/candidates` 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-af61931e305e75c7", "name": "Unused endpoint: GET /api/episode-analysis", "shortDescription": {"text": "Unused endpoint: GET /api/episode-analysis"}, "fullDescription": {"text": "`web-server.js` declares `GET /api/episode-analysis` 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-835e308e5da66b9e", "name": "Unused endpoint: GET /api/blacklist", "shortDescription": {"text": "Unused endpoint: GET /api/blacklist"}, "fullDescription": {"text": "`web-server.js` declares `GET /api/blacklist` 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-70a5c825219952fc", "name": "Unused endpoint: POST /api/blacklist", "shortDescription": {"text": "Unused endpoint: POST /api/blacklist"}, "fullDescription": {"text": "`web-server.js` declares `POST /api/blacklist` 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-0292e9ae7612cafc", "name": "Unused endpoint: DELETE /api/blacklist/:mint", "shortDescription": {"text": "Unused endpoint: DELETE /api/blacklist/:mint"}, "fullDescription": {"text": "`web-server.js` declares `DELETE /api/blacklist/:mint` 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-fc7142f1dc699ec5", "name": "Unused endpoint: GET /api/deployers", "shortDescription": {"text": "Unused endpoint: GET /api/deployers"}, "fullDescription": {"text": "`web-server.js` declares `GET /api/deployers` 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-aec1fcef58405947", "name": "Unused endpoint: POST /api/deployers", "shortDescription": {"text": "Unused endpoint: POST /api/deployers"}, "fullDescription": {"text": "`web-server.js` declares `POST /api/deployers` 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-af33561517dbd4b7", "name": "Unused endpoint: DELETE /api/deployers/:wallet", "shortDescription": {"text": "Unused endpoint: DELETE /api/deployers/:wallet"}, "fullDescription": {"text": "`web-server.js` declares `DELETE /api/deployers/:wallet` 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-785844b132cf70fe", "name": "Unused endpoint: GET /api/performance", "shortDescription": {"text": "Unused endpoint: GET /api/performance"}, "fullDescription": {"text": "`web-server.js` declares `GET /api/performance` 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-c9657d2ab1b52730", "name": "Unused endpoint: POST /api/lessons", "shortDescription": {"text": "Unused endpoint: POST /api/lessons"}, "fullDescription": {"text": "`web-server.js` declares `POST /api/lessons` 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-32063e37c23eb974", "name": "Unused endpoint: POST /api/lessons/:id/pin", "shortDescription": {"text": "Unused endpoint: POST /api/lessons/:id/pin"}, "fullDescription": {"text": "`web-server.js` declares `POST /api/lessons/:id/pin` 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-a90125a8b027c984", "name": "Unused endpoint: POST /api/lessons/:id/unpin", "shortDescription": {"text": "Unused endpoint: POST /api/lessons/:id/unpin"}, "fullDescription": {"text": "`web-server.js` declares `POST /api/lessons/:id/unpin` 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-5a2acacf87e209e4", "name": "Unused endpoint: DELETE /api/lessons", "shortDescription": {"text": "Unused endpoint: DELETE /api/lessons"}, "fullDescription": {"text": "`web-server.js` declares `DELETE /api/lessons` 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-85782e840635f2a6", "name": "Unused endpoint: POST /api/evolve", "shortDescription": {"text": "Unused endpoint: POST /api/evolve"}, "fullDescription": {"text": "`web-server.js` declares `POST /api/evolve` 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-50faa0b61420a5e7", "name": "Unused endpoint: GET /api/config-analysis", "shortDescription": {"text": "Unused endpoint: GET /api/config-analysis"}, "fullDescription": {"text": "`web-server.js` declares `GET /api/config-analysis` 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-4c60c674063b9283", "name": "Unused endpoint: GET /api/config-history", "shortDescription": {"text": "Unused endpoint: GET /api/config-history"}, "fullDescription": {"text": "`web-server.js` declares `GET /api/config-history` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b7fdab2603560bf6", "name": "Unused endpoint: GET /api/hour-performance", "shortDescription": {"text": "Unused endpoint: GET /api/hour-performance"}, "fullDescription": {"text": "`web-server.js` declares `GET /api/hour-performance` 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-36e484b61d8acdb7", "name": "Unused endpoint: GET /api/market-hours", "shortDescription": {"text": "Unused endpoint: GET /api/market-hours"}, "fullDescription": {"text": "`web-server.js` declares `GET /api/market-hours` 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/7424"}, "properties": {"repository": "eggi-st/meridian-bot", "repoUrl": "https://github.com/eggi-st/meridian-bot", "branch": "main"}, "results": [{"ruleId": "scanner-c1d8a2243eb351fd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apply-collection-config.js:65"}, "properties": {"repobilityId": "8e64c61d9cb72271", "scanner": "scanner-primary", "fingerprint": "c1d8a2243eb351fd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-acd1172c7bf7ec5f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 analyze-shadow.js:49"}, "properties": {"repobilityId": "cbb52f21458ded60", "scanner": "scanner-primary", "fingerprint": "acd1172c7bf7ec5f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-228ca7261f577cd4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 setup.js:36"}, "properties": {"repobilityId": "832456893e7353f1", "scanner": "scanner-primary", "fingerprint": "228ca7261f577cd4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a1563e199ee00506", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 web-server.js:1158"}, "properties": {"repobilityId": "e429734d8284e018", "scanner": "scanner-primary", "fingerprint": "a1563e199ee00506", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cae62e6debef4ae8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 logger.js:183"}, "properties": {"repobilityId": "135b9030031b7daa", "scanner": "scanner-primary", "fingerprint": "cae62e6debef4ae8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ee66565a12b27927", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 index.js:2597"}, "properties": {"repobilityId": "e7f4432877081bd5", "scanner": "scanner-primary", "fingerprint": "ee66565a12b27927", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-506be2b95088f5d3", "level": "none", "message": {"text": "git log failed \u2014 history analysis incomplete"}, "properties": {"repobilityId": "b424308a11bb9b22", "scanner": "scanner-primary", "fingerprint": "506be2b95088f5d3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["git", "tooling"]}}, {"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-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-cb639d9a10a47b23", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "edeab51902066991", "scanner": "scanner-primary", "fingerprint": "cb639d9a10a47b23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-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-c638d965f7e0a379", "level": "note", "message": {"text": "Very large file: index.js (3381 lines)"}, "properties": {"repobilityId": "7585f2e3b586370d", "scanner": "scanner-primary", "fingerprint": "c638d965f7e0a379", "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-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "a59d85c169bffe5a", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "6c83f2d4612b517d", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "62da5e1661911d72", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-4f03fb2021ce54da", "level": "note", "message": {"text": "Legacy-named symbol `meridian_collection_config_v1` in apply-collection-config.js:25"}, "properties": {"repobilityId": "ee78e0cf261a2258", "scanner": "scanner-primary", "fingerprint": "4f03fb2021ce54da", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f0c555230a290170", "level": "note", "message": {"text": "Legacy-named symbol `collection_config_v1` in shadow-logger.js:15"}, "properties": {"repobilityId": "aef17ccc1a42072c", "scanner": "scanner-primary", "fingerprint": "f0c555230a290170", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b6f99dd57a911263", "level": "none", "message": {"text": "Commented-code block (5 lines) in index.js:1101"}, "properties": {"repobilityId": "6b38ec5e6c204a4c", "scanner": "scanner-primary", "fingerprint": "b6f99dd57a911263", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-022e6399d1ef2beb", "level": "note", "message": {"text": "12 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "7bf4178327da75a2", "scanner": "scanner-primary", "fingerprint": "022e6399d1ef2beb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-acaa713b238d0be6", "level": "note", "message": {"text": "Unused endpoint: USE /index.html"}, "properties": {"repobilityId": "c9e7157d9afb3897", "scanner": "scanner-primary", "fingerprint": "acaa713b238d0be6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dea9e610a378dfeb", "level": "note", "message": {"text": "Unused endpoint: POST /api/auth"}, "properties": {"repobilityId": "23b7ebfd5b927b6c", "scanner": "scanner-primary", "fingerprint": "dea9e610a378dfeb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dde3adb27bf7eebe", "level": "note", "message": {"text": "Unused endpoint: USE /api"}, "properties": {"repobilityId": "6590c873674455be", "scanner": "scanner-primary", "fingerprint": "dde3adb27bf7eebe", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-963710f42a2c8219", "level": "note", "message": {"text": "Unused endpoint: GET /api/status"}, "properties": {"repobilityId": "14a8869f64116377", "scanner": "scanner-primary", "fingerprint": "963710f42a2c8219", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-11f4d6e588f23dfa", "level": "note", "message": {"text": "Unused endpoint: POST /api/pause"}, "properties": {"repobilityId": "1fc49623ed44eb90", "scanner": "scanner-primary", "fingerprint": "11f4d6e588f23dfa", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-69bd9257e4d3078b", "level": "note", "message": {"text": "Unused endpoint: GET /api/wallet"}, "properties": {"repobilityId": "616752252742088b", "scanner": "scanner-primary", "fingerprint": "69bd9257e4d3078b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6c0c14bf43e5f297", "level": "note", "message": {"text": "Unused endpoint: GET /api/positions"}, "properties": {"repobilityId": "af6ff8a4f1e03641", "scanner": "scanner-primary", "fingerprint": "6c0c14bf43e5f297", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3b37265900e79a8a", "level": "note", "message": {"text": "Unused endpoint: GET /api/stats"}, "properties": {"repobilityId": "61931b1b17cfa239", "scanner": "scanner-primary", "fingerprint": "3b37265900e79a8a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1c98a21942c92af6", "level": "note", "message": {"text": "Unused endpoint: GET /api/experiment"}, "properties": {"repobilityId": "023eb396a21de5c5", "scanner": "scanner-primary", "fingerprint": "1c98a21942c92af6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1c072de27f728ed2", "level": "note", "message": {"text": "Unused endpoint: GET /api/decisions"}, "properties": {"repobilityId": "fb8fb6248f76586f", "scanner": "scanner-primary", "fingerprint": "1c072de27f728ed2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8daf74658c9b9acb", "level": "note", "message": {"text": "Unused endpoint: GET /api/whale-evals"}, "properties": {"repobilityId": "d0d24399bf2db0a7", "scanner": "scanner-primary", "fingerprint": "8daf74658c9b9acb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1ffefb07914311a6", "level": "note", "message": {"text": "Unused endpoint: GET /api/lessons"}, "properties": {"repobilityId": "52c3212a2f849491", "scanner": "scanner-primary", "fingerprint": "1ffefb07914311a6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d529af86e07b9b1c", "level": "note", "message": {"text": "Unused endpoint: GET /api/analytics/:type"}, "properties": {"repobilityId": "d7a2a53d23c48b0b", "scanner": "scanner-primary", "fingerprint": "d529af86e07b9b1c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7aa4b2518cbbbfa2", "level": "note", "message": {"text": "Unused endpoint: GET /api/config"}, "properties": {"repobilityId": "0627df4406b1683b", "scanner": "scanner-primary", "fingerprint": "7aa4b2518cbbbfa2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3b4e6de82d71ecad", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/config"}, "properties": {"repobilityId": "ced2aab07a797eaf", "scanner": "scanner-primary", "fingerprint": "3b4e6de82d71ecad", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9e746370a2eaa058", "level": "note", "message": {"text": "Unused endpoint: POST /api/close/:address"}, "properties": {"repobilityId": "0174eeab8763efc8", "scanner": "scanner-primary", "fingerprint": "9e746370a2eaa058", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-60f76b530d0e2eaa", "level": "note", "message": {"text": "Unused endpoint: POST /api/claim/:address"}, "properties": {"repobilityId": "6370f5acb78054b9", "scanner": "scanner-primary", "fingerprint": "60f76b530d0e2eaa", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1441293e05dfe2dd", "level": "note", "message": {"text": "Unused endpoint: POST /api/closeall"}, "properties": {"repobilityId": "db81f8db603ec0f2", "scanner": "scanner-primary", "fingerprint": "1441293e05dfe2dd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-82830633904d6fe7", "level": "note", "message": {"text": "Unused endpoint: POST /api/trigger/:cycle"}, "properties": {"repobilityId": "819ff70df75d3321", "scanner": "scanner-primary", "fingerprint": "82830633904d6fe7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8fc7c3b9f2c75416", "level": "note", "message": {"text": "Unused endpoint: POST /api/ask"}, "properties": {"repobilityId": "8a601cbb8ca24765", "scanner": "scanner-primary", "fingerprint": "8fc7c3b9f2c75416", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f8f3cd31ad248e68", "level": "note", "message": {"text": "Unused endpoint: GET /api/ev-analysis"}, "properties": {"repobilityId": "9c5f2cfa9a56ccdc", "scanner": "scanner-primary", "fingerprint": "f8f3cd31ad248e68", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0b4d20674e35cf71", "level": "note", "message": {"text": "Unused endpoint: GET /api/analytics"}, "properties": {"repobilityId": "531842b3264a8b67", "scanner": "scanner-primary", "fingerprint": "0b4d20674e35cf71", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-726a47c71f2f9c63", "level": "note", "message": {"text": "Unused endpoint: GET /api/capital"}, "properties": {"repobilityId": "1c17884d2a8f71d5", "scanner": "scanner-primary", "fingerprint": "726a47c71f2f9c63", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-143ccda46c233a15", "level": "note", "message": {"text": "Unused endpoint: POST /api/capital/initial"}, "properties": {"repobilityId": "972b89de7995fbea", "scanner": "scanner-primary", "fingerprint": "143ccda46c233a15", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8af6b47e23bd3116", "level": "note", "message": {"text": "Unused endpoint: POST /api/capital/transaction"}, "properties": {"repobilityId": "e09275b907c8d41a", "scanner": "scanner-primary", "fingerprint": "8af6b47e23bd3116", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-53b622016085d72a", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/capital/transaction/:index"}, "properties": {"repobilityId": "81a15614b52c11be", "scanner": "scanner-primary", "fingerprint": "53b622016085d72a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f3bf72f059406b13", "level": "note", "message": {"text": "Unused endpoint: GET /api/logs"}, "properties": {"repobilityId": "3d8b90dd10fbdd30", "scanner": "scanner-primary", "fingerprint": "f3bf72f059406b13", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-92474b44874a0a9f", "level": "note", "message": {"text": "Unused endpoint: POST /api/config/set"}, "properties": {"repobilityId": "5710b582bf77ca7c", "scanner": "scanner-primary", "fingerprint": "92474b44874a0a9f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9a2e06111307460e", "level": "note", "message": {"text": "Unused endpoint: POST /api/hive/pull"}, "properties": {"repobilityId": "98dbbc0b98d03b23", "scanner": "scanner-primary", "fingerprint": "9a2e06111307460e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-69cfe40fe8f67d71", "level": "note", "message": {"text": "Unused endpoint: GET /api/whale"}, "properties": {"repobilityId": "260347ce588a6ba8", "scanner": "scanner-primary", "fingerprint": "69cfe40fe8f67d71", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-eb31d2fe59482909", "level": "note", "message": {"text": "Unused endpoint: GET /api/regime"}, "properties": {"repobilityId": "5646be69c8c5a35d", "scanner": "scanner-primary", "fingerprint": "eb31d2fe59482909", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-97f49e1471c9d6be", "level": "note", "message": {"text": "Unused endpoint: GET /api/hive"}, "properties": {"repobilityId": "7aa18b0469d12e9c", "scanner": "scanner-primary", "fingerprint": "97f49e1471c9d6be", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4cb94304ea95abd0", "level": "note", "message": {"text": "Unused endpoint: GET /api/candidates"}, "properties": {"repobilityId": "2f95262999aa5466", "scanner": "scanner-primary", "fingerprint": "4cb94304ea95abd0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-af61931e305e75c7", "level": "note", "message": {"text": "Unused endpoint: GET /api/episode-analysis"}, "properties": {"repobilityId": "fc2beffc5f923333", "scanner": "scanner-primary", "fingerprint": "af61931e305e75c7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-835e308e5da66b9e", "level": "note", "message": {"text": "Unused endpoint: GET /api/blacklist"}, "properties": {"repobilityId": "bd4318e427b3cd52", "scanner": "scanner-primary", "fingerprint": "835e308e5da66b9e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-70a5c825219952fc", "level": "note", "message": {"text": "Unused endpoint: POST /api/blacklist"}, "properties": {"repobilityId": "671aaf43f46dbccb", "scanner": "scanner-primary", "fingerprint": "70a5c825219952fc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0292e9ae7612cafc", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/blacklist/:mint"}, "properties": {"repobilityId": "f2a19cbd1969d694", "scanner": "scanner-primary", "fingerprint": "0292e9ae7612cafc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fc7142f1dc699ec5", "level": "note", "message": {"text": "Unused endpoint: GET /api/deployers"}, "properties": {"repobilityId": "e7fe2b21904791a3", "scanner": "scanner-primary", "fingerprint": "fc7142f1dc699ec5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-aec1fcef58405947", "level": "note", "message": {"text": "Unused endpoint: POST /api/deployers"}, "properties": {"repobilityId": "06ff6369eec6cc62", "scanner": "scanner-primary", "fingerprint": "aec1fcef58405947", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-af33561517dbd4b7", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/deployers/:wallet"}, "properties": {"repobilityId": "90f9d2e9831a546a", "scanner": "scanner-primary", "fingerprint": "af33561517dbd4b7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-785844b132cf70fe", "level": "note", "message": {"text": "Unused endpoint: GET /api/performance"}, "properties": {"repobilityId": "210852bf7d04d72e", "scanner": "scanner-primary", "fingerprint": "785844b132cf70fe", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c9657d2ab1b52730", "level": "note", "message": {"text": "Unused endpoint: POST /api/lessons"}, "properties": {"repobilityId": "06b48a5df43d1403", "scanner": "scanner-primary", "fingerprint": "c9657d2ab1b52730", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-32063e37c23eb974", "level": "note", "message": {"text": "Unused endpoint: POST /api/lessons/:id/pin"}, "properties": {"repobilityId": "a55502868d430794", "scanner": "scanner-primary", "fingerprint": "32063e37c23eb974", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a90125a8b027c984", "level": "note", "message": {"text": "Unused endpoint: POST /api/lessons/:id/unpin"}, "properties": {"repobilityId": "b051394720f249f9", "scanner": "scanner-primary", "fingerprint": "a90125a8b027c984", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5a2acacf87e209e4", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/lessons"}, "properties": {"repobilityId": "48847548c85a02ee", "scanner": "scanner-primary", "fingerprint": "5a2acacf87e209e4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-85782e840635f2a6", "level": "note", "message": {"text": "Unused endpoint: POST /api/evolve"}, "properties": {"repobilityId": "5305792db81e7129", "scanner": "scanner-primary", "fingerprint": "85782e840635f2a6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-50faa0b61420a5e7", "level": "note", "message": {"text": "Unused endpoint: GET /api/config-analysis"}, "properties": {"repobilityId": "cd681ffe291da40a", "scanner": "scanner-primary", "fingerprint": "50faa0b61420a5e7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4c60c674063b9283", "level": "note", "message": {"text": "Unused endpoint: GET /api/config-history"}, "properties": {"repobilityId": "2922551df256b537", "scanner": "scanner-primary", "fingerprint": "4c60c674063b9283", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b7fdab2603560bf6", "level": "note", "message": {"text": "Unused endpoint: GET /api/hour-performance"}, "properties": {"repobilityId": "03b0bb56c7bb4527", "scanner": "scanner-primary", "fingerprint": "b7fdab2603560bf6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-36e484b61d8acdb7", "level": "note", "message": {"text": "Unused endpoint: GET /api/market-hours"}, "properties": {"repobilityId": "dccdd1be5f136dc3", "scanner": "scanner-primary", "fingerprint": "36e484b61d8acdb7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}